1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tugOfWarService-C5KzKzgB.js","assets/vendor-firebase-NOrVjYbK.js","assets/vendor-react-DJzUMfd1.js","assets/vendor-3d-B-0V4uEN.js","assets/vendor-katex-DqEyuLHo.js","assets/vendor-katex-CyAuISp2.css","assets/headTiltService-PeTe-xIm.js","assets/groupsApi-CtFxURg_.js","assets/handSlashService-CklEk98N.js","assets/starBagService-CaNJAfWC.js","assets/minesweeperService-D0RsD1b6.js","assets/poseQuizService-CBtK-gBK.js","assets/flipPuzzleService-4wqpcbkQ.js","assets/knowledgeTrainService-y7fRG4Qi.js","assets/turnBasedGameService-BU3KxH3n.js","assets/wheelQuizCloudService-Bqz9YCCY.js","assets/browser-image-compression-BzWLnoYn.js","assets/pacedQuizService-BtL7Bkox.js","assets/richQuestionScoring-n3wI_nQA.js","assets/quizScoring-vs8puWXz.js","assets/questionBankService-BH0424iv.js","assets/flyingWordsService-ECtyZAS2.js","assets/quizGameService-COfox1GO.js","assets/crosswordService-BGQeoqHM.js","assets/crosswordUtils-Qo8SSJVR.js","assets/flashcardService-CMQq3J1A.js","assets/mindMapService-B5fPv6E3.js","assets/lessonService-KFFZxx1P.js","assets/interactiveImageService-DLsLSujm.js","assets/QrScanButton-B3H0Mbxd.js","assets/StudentPlayerPage-d0XVZTtR.js","assets/types-BY_76wxi.js","assets/YouTube.esm-DZtBeJDg.js","assets/soundEffects-BNObq7V4.js","assets/MathText-CUiST3AE.js","assets/types-B_qXoiPY.css","assets/StudentPlayerPage-CNPIad6-.css","assets/AIToolsPage-CaRdKCmu.js","assets/AIToolsPage-DyhWVybP.css","assets/EdutechExtensionsPage-DdhVz3WL.js","assets/EdutechExtensionsPage-ChQG03Dt.css","assets/PaymentHistoryPage-Bd6WbMDq.js","assets/paymentReceiptPdf-Be_x2OuG.js","assets/robotoFont-BXYIbu15.js","assets/TeachingMaterialsPage-BxUzp-E9.js","assets/TeachingMaterialsPage-p10u3k2z.css","assets/JoinPage-DtxsIBmd.js","assets/assignmentService-tzBLKRhC.js","assets/joinCodeService-Duqlw8dB.js","assets/gallerySubmissionService-C6_XyJYL.js","assets/gameTypes-f5wEe58l.js","assets/useShuffleQuestions-CMMUsmAD.js","assets/FormControlLabel-UfST9rc_.js","assets/Checkbox-hNFsBxwF.js","assets/Cancel-HgNyvqSD.js","assets/HelpOutline-BjEUExVZ.js","assets/EmojiEvents-C3dbMUOl.js","assets/Container-BqzqHWDq.js","assets/useThemeProps-Cu1lPegC.js","assets/InputAdornment-DLc3DBCX.js","assets/Person-BfcZbBI6.js","assets/ArrowBack-DnBkz0iJ.js","assets/PlayAssignmentPage-CXOeOaN8.js","assets/LinearProgress-CFq27fme.js","assets/Divider-DGtAGn-z.js","assets/Timer-4ebcaaX7.js","assets/PlayAssignmentPage-CLETfkU_.css","assets/AssignmentHistoryPage-Dc2vrjVg.js","assets/HomeTabPageShell-CYm9Ejyp.js","assets/index-CPX-tAFT.js","assets/FileSaver.min-d7RW4grg.js","assets/Tooltip-DCBvMNYw.js","assets/Link-SqD1ZXeC.js","assets/TableContainer--SD-VYOD.js","assets/Lock-fDVNKez0.js","assets/FileDownload-yFOdmKFw.js","assets/ResultDetailModal-DYWpG4sA.js","assets/shortAnswerBlanks-Z6lHtHwe.js","assets/ToggleButtonGroup-CoAE_xr7.js","assets/Visibility-CXJu5lj5.js","assets/Stop-CCdargpS.js","assets/Delete-CqbOIsIj.js","assets/ImageAssignmentReportPage-eQR0ufIM.js","assets/Avatar-CSxuVQfa.js","assets/InfoOutlined-HGdjjro7.js","assets/QuizAssignmentReportPage-RRuzzM14.js","assets/canvasUtils-DM54i9rt.js","assets/NavigateBefore-dT0J7Yer.js","assets/NavigateNext-0yw495e6.js","assets/PrivacyPolicyPage-DGo7-MXi.js","assets/TermsOfServicePage-BIUu_1pn.js","assets/AboutPage-D1kbsdmP.js","assets/ShippingPolicyPage-Bt_Dsimp.js","assets/PricingPage-BxjXoplB.js","assets/WheelQuizPage-K6AfDMNW.js","assets/useFeaturePage-BgJZd55A.js","assets/FeatureSidebar-GlvnyiAl.js","assets/FeatureItemCard-B11iEbdV.js","assets/PinButton-DVd4Vn0o.js","assets/CardContent-HcqzoF-r.js","assets/Edit-D5TIkJzq.js","assets/PlayArrow-CWGWpNtH.js","assets/WheelQuizGameForm-C-4KO0RB.js","assets/Toast-Cc4ZjV4U.js","assets/FeatureContentHeader-B6FiouTH.js","assets/Skeleton-C-RseBC4.js","assets/ListToolbar-qYTbGaSa.js","assets/useFeatureGroups-DWQfcsfG.js","assets/core.esm-BwDchX8C.js","assets/TeacherShareModal-D2XdNkNX.js","assets/teacher
1ShareService-i2USwxcI.js","assets/QuestionPickerModal-BLwYR-OI.js","assets/ImportExportContent-Bu-IsCkc.js","assets/jszip.min-DGzWmKqs.js","assets/Tabs-ulQ2v4-7.js","assets/Download-BSMddDqv.js","assets/Search-D0SNSq96.js","assets/LessonPickerModal-DfhVg30E.js","assets/ManualQuestionEditor-DmqVzH-6.js","assets/MatchingEditor-Biaa9t2J.js","assets/Add-X1dRrWs4.js","assets/FormatSize-ByM8Do4m.js","assets/AudioUploader-Chm1xGy2.js","assets/MusicNote-DGIOj6D7.js","assets/AutoAwesome-D0bRN7MU.js","assets/Replay-CPM-fl2v.js","assets/ConnectorLayer-0AoE8xkX.js","assets/VolumeUp-B-Yk29oY.js","assets/AddPhotoAlternate-DayHwuCF.js","assets/SimpleMathKeyboard-BN4kmru0.js","assets/ConnectorLayer-B18KNi8Y.css","assets/RadioGroup-BAZJump4.js","assets/Radio-DtuO3MtI.js","assets/ImageUploader-fB6JdVWQ.js","assets/ImageUploader-t7ssZ5n2.css","assets/MathEditor-xebJ_Vun.js","assets/CloudUpload-CKwK07YJ.js","assets/AnswerChips-Dvy4IgCL.js","assets/QuestionsFormSection-BUa6ReGb.js","assets/QuickImportExcel-C9Hfbif-.js","assets/ReorderableQuestionList-DQv4tEwH.js","assets/useLibraryPublish-C-JOVX-R.js","assets/publicLibraryService-ZxnW36pj.js","assets/useFeatureAccess-CLO2m6i4.js","assets/Switch-BjW_bRl3.js","assets/buildAvatarSprite-DTjaj1qY.js","assets/useQuestionAudio-BvHiT-Pc.js","assets/fontSize-DJyXapZT.js","assets/useCopyAnalysis-CGpRXrnv.js","assets/WheelQuizPage-BxEtWk2o.css","assets/ClassManagerPage-Dy0VQzJa.js","assets/FullscreenExit-C10KOHzR.js","assets/Fullscreen-gJLBa94q.js","assets/Slider-PQnoAwqH.js","assets/Save-hbfbaGPU.js","assets/PhotoCamera-RLG0U09v.js","assets/CleaningServices-Bw3lGy9u.js","assets/ClassManagerPage-BA8I4Rqy.css","assets/InteractiveVideoPage-B5Pz3dYc.js","assets/AssignGameModal-yoaznfDx.js","assets/versusSessionService-C2bMmyTm.js","assets/htmlEmbedGameService-Plw4Vjhb.js","assets/WarningAmber-CyTKnF7w.js","assets/InteractiveVideoPage-B95hxqWA.css","assets/PanoramaMuseum-DIFKAPUo.js","assets/WalkableGallery-paey-x7I.js","assets/walkableLayout-BdxKC_S_.js","assets/panoramaService-ChbFvy9D.js","assets/PanoramaMuseum-CX-uG7Ux.css","assets/PanoramaViewer-CWMlWebd.js","assets/panoramaUtils-CiIoMmkc.js","assets/PanoramaViewer-CbB197co.css","assets/PanoramaEditor-lO_XMXn8.js","assets/PanoramaEditor-BrQvHYLw.js","assets/PanoramaEditor-Dd1VKsPY.css","assets/WalkableGalleryEditor-B28wEmqZ.js","assets/QrCode-DnQkLX1Q.js","assets/WalkableGalleryEditor-Bl0oZRCr.css","assets/StudentGalleryUploadPage-DkQvqWud.js","assets/SharePanoramaViewer-DOW88Gmy.js","assets/ExhibitionViewer-3Do72Ic-.js","assets/QuizGamePage-AEHN4TiS.js","assets/Undo-DC-JB9Mp.js","assets/groupingTypes-CAbobkax.js","assets/Grid-DAzlEAnp.js","assets/QuizGamePage--6vCbJY-.css","assets/QuizPreviewPage-Ccg9_QpN.js","assets/SortingPreview-D7YmPw4q.js","assets/Refresh-VvKVo17n.js","assets/KeyboardArrowUp-BlUfAUIY.js","assets/QuizPreview-D3LhzcUy.js","assets/HandSlashQuiz-BPykzyxT.js","assets/HandSlashGame-DBtAwU7i.js","assets/popSound-DALTQoUw.js","assets/useTextToSpeech-Bne2Q9kI.js","assets/TTSUpgradeModal-zsxsLhWO.js","assets/Computer-W5OerV6d.js","assets/demoLesson-IDhKhA72.js","assets/PanTool-Bkg4jAwl.js","assets/HandSlashQuizPage-CpzoDyc8.js","assets/BgmSelector-CnqowCqv.js","assets/HandSlashQuizPage-CwDznh4l.css","assets/ShareHandSlashQuiz-T-INMuQD.js","assets/FlyingWordsGamePage-0W_jU3LF.js","assets/demoLesson-bKz3kMLX.js","assets/ArrowUpward-DANMY_h1.js","assets/FlyingWordsGamePage-FAwSAa74.css","assets/PlayFlyingWordsPage-CGQau0Ru.js","assets/FlyingWordsGame-C9rUX58H.js","assets/Pause-D4-cH8gy.js","assets/Gesture-7uxWOiCk.js","assets/ShareFlyingWordsPage-DdxVJfat.js","assets/HeadTiltQuizPage-Bnyos8AO.js","assets/demoLesson-DqB1OEl-.js","assets/HeadTiltQuizPage-CdNPIYBA.css","assets/HeadTiltQuiz-BpSRv1g5.js","assets/FlashcardPage-C0jP2FXb.js","assets/FlashcardPlayer-DhnHqB80.js","assets/FlashcardPlayer-CALWa509.css","assets/FlashcardPage-C_dhgU3k.css","assets/MindMapPage-BA4qxQNT.js","assets/MindMapPage-CVhB1yM9.css","assets/TurnBasedGamePage-DLKBzuwm.js","assets/TurnBasedGamePlayer-Du3v4IJ9.js","assets/TurnBasedGamePage-CvrsBRl-.css","assets/VersusGamePage-c3pGMFW-.js","assets/VersusGamePage-SnbUeoYt.css","assets/VersusLobbyPage-B1PdT1ZK.js","assets/VersusMatchRoom-CBFiXDss.js","assets/QuestionBankPage-UhIyA4gK.js","assets/FlipPuzzleGamePage-C15xlmzI.js","assets/PuzzlePlayer-BiQZtx4b.js","assets/PuzzleCanvas-BIbUv9sx.js","assets/FlipPuzzleGamePage-CW0ns0PS.css","assets/ShareFlipPuzzlePage-Dr9PRrmb.js","assets/KnowledgeTrainGamePage-XOOqX8Kj.js","assets/TrainPlayer-DrZ72DR4.js","assets/TrainPlayer-DS4GX0kP.css","assets/KnowledgeTrainGamePage-DJgoCw7k.css","assets/ShareKnowledgeTrainPage-DByuwsz8.js","assets/PacedQuizPage-C3rpMnBb.js","assets/sessionService-BMBVjvS1.js","assets/PacedQuizPage-ChrL2J0W.css","assets/TeacherControlScreen-PMJdIVMc.js","assets/AutoFitText-D0rXCXtT.js","assets/useListeningAudio-BqnWWD5P.js","assets/QrCode2-CklJ54qi.js","assets/StudentAnswerPage-HGOG3fl-.js","assets/RichAnswerBlock-B1D4xo-F.js","assets/TeamSelectionPage-vmY0fYhr.
1js","assets/LeaderboardPage-CXw1E2r_.js","assets/CrosswordPuzzlePage-B_We3CDP.js","assets/CrosswordGrid-yVWAUtab.js","assets/CrosswordPlayer-D4kUTwJg.js","assets/LockOpen-Dm9vM1Jk.js","assets/TextIncrease-DsuFbsEa.js","assets/wordSearchUtils-BVN2oXD_.js","assets/CrosswordPuzzle-Drk9EKxP.css","assets/ShareCrosswordPage-CfbU2o24.js","assets/TugOfWarGamePage-CUlAf2XM.js","assets/TugOfWarPlayer-9s-2xlm5.js","assets/TugOfWarPlayer-DS7Y0oev.css","assets/TugOfWarGame-D2RQJSPd.css","assets/ShareTugOfWarPage-BPAZfbZf.js","assets/StarBagGamePage-l8wVgVNh.js","assets/StarBagPlayer-WezR28N1.js","assets/StarBagPlayer-Bs-jnUkf.css","assets/StarBagGame-BA_pqfk0.css","assets/ShareStarBagPage-DIn2kGpM.js","assets/MinesweeperPage-DLqk8gnO.js","assets/MinesweeperPlayer-BPnSILsR.js","assets/index-i_2xCsYW.js","assets/MinesweeperPlayer-i4UjqC06.css","assets/MinesweeperPage-BguNFS0f.css","assets/ShareMinesweeperPage-D5QOLlCb.js","assets/ClaimSharedGamePage-3zaDU92r.js","assets/escapeHtml-DqpNAFMJ.js","assets/InteractiveImagePage-dkl1lDni.js","assets/ImagePlayer-CD18Q63-.js","assets/ImagePlayer-UT3X1o_3.css","assets/InteractiveImagePage-FtWQDlRo.css","assets/ShareInteractiveImagePage-BdrohYVq.js","assets/NoiseTrackerPage-CrlrlnvS.js","assets/NoiseTrackerPage-DVF3SsvS.css","assets/PoseQuizPage-DoHnm3-L.js","assets/poseAssets-ZNOI986V.js","assets/VolumeOff-DQJHyR6C.js","assets/PoseCameraSlideshow-xVY9VWSj.js","assets/JourneyDashboardPage-DdbltMRO.js","assets/questionSetService-DzWTdDSV.js","assets/journeyService-CvO_pznV.js","assets/passportService-C0CEYbl1.js","assets/People-B1LkD4oz.js","assets/JourneyCreatorPage-GAbD0MFa.js","assets/JourneyPlayerPage-Cr7IehJ8.js","assets/CommunityLibraryPage-DRyGqQc8.js","assets/DeleteOutline-DjfIYkN5.js","assets/AdminApp-B8J0DjiI.js","assets/OpenInNew-Ccxnyczv.js","assets/miniAppOptions-o2MR3Qhf.js","assets/PaperModePage-C84AUVoC.js","assets/countdown-Dr_6K1bo.js","assets/arucoMarker-DFoJABdA.js","assets/surveyScales-BPALTy85.js","assets/paperResultsService-COGhFGQu.js","assets/ChevronRight-CC1dogF8.js","assets/PaperModePage-C8fMjPx8.css","assets/SessionControlPage-AgxsmEc_.js","assets/paperLiveSessionService-2E3wGp2F.js","assets/answerKeys-Bby1j-dW.js","assets/useWakeLock-Cbmy77_Z.js","assets/PhoneIphone-DwOC8Eqb.js","assets/ResultsPage-BIanAjg3.js","assets/ResultsPage-D7hKImsY.css","assets/ScanPage-B2vEd0Qv.js","assets/browserDetection-CeLYqcpk.js","assets/FaceRandomPage-Cibh3n4d.js","assets/useFaceRandomWebRTC-BW5vVoUM.js","assets/FaceRandomPage-ekKvqmdz.css","assets/FaceRandomScanPage-BjFpgOGC.js","assets/ScavengerHuntPage-B_pUbEn3.js","assets/scavengerHuntService-B0xB--Rj.js","assets/demoHunt-BkZSBJei.js","assets/ScavengerHuntPage-cDSd1PYa.css","assets/PlayHuntPage-9W2OYNL-.js","assets/PlayHuntPage-CUNFswIF.css","assets/HtmlEmbedGamePage-ZcPcnsLf.js","assets/PasteAiPage-CBU4Y29n.js","assets/PasteAiPage-7vVj0p_C.css","assets/CtvMiniAppsPage-DFz_9Awe.js","assets/miniAppsService-DS1h1ZtJ.js","assets/CtvMiniAppsPage-CitFs-qc.css","assets/MiniAppsBrowsePage-Bt4_hkl7.js","assets/MiniAppsBrowsePage-CV7ogg-Y.css"])))=>i.map(i=>d[i]); 2var Nt=Object.defineProperty;var Bt=(o,u,T)=>u in o?Nt(o,u,{enumerable:!0,configurable:!0,writable:!0,value:T}):o[u]=T;var pt=(o,u,T)=>Bt(o,typeof u!="symbol"?u+"":u,T);import{r as reactExports,b as React,g as getDefaultExportFromCjs,R as React$1,j as jsxRuntimeExports,d as ReactDOM,e as reactDomExports,f as commonjsGlobal,h as ReactDOM$1}from"./vendor-react-DJzUMfd1.js";import{_ as _extends$3,s as shimExports,a as __vitePreload}from"./vendor-3d-B-0V4uEN.js";import{i as initializeApp,a as initializeAppCheck,g as getAuth,b as getFirestore,c as getStorage,d as getDatabase,G as GoogleAuthProvider,R as ReCaptchaV3Provider,e as doc,s as setDoc,f as getDocFromServer,h as signOut,j as getRedirectResult,o as onAuthStateChanged,k as signInWithPopup,l as signInWithRedirect,m as getDoc,u as updateDoc,n as increment,p as onSnapshot,q as deleteDoc,T as Timestamp,r as query,t as collection,w as where,v as orderBy,x as limit,y as getDocs}from"./vendor-firebase-NOrVjYbK.js";import{k as katex}from"./vendor-katex-DqEyuLHo.js";(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const E of document.querySelectorAll('link[rel="modulepreload"]'))S(E);new MutationObserver(E=>{for(const C of E)if(C.type==="childList")for(const _ of C.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&S(_)}).observe(document,{childList:!0,subtree:!0});function T(E){const C={};return E.integrity&&(C.integrity=E.integrity),E.referrerPolicy&&(C.referrerPolicy=E.referrerPolicy),E.crossOrigin==="use-credentials"?C.credentials="include":E.crossOrigin==="anonymous"?C.credentials="omit":C.credentials="same-origin",C}function S(E){if(E.ep)return;E.ep=!0;const C=T(E);fetch(E.href,C)}})();/** 3 * @remix-run/router v1.23.0 4 * 5 * Copyright (c) Remix Software Inc. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE.md file in the root directory of this source tree. 9 * 10 * @license MIT 11 */function _extends$2(){return _extends$2=Object.assign?Object.assign.bind():function(o){for(var u=1;u<arguments.length;u++){var T=arguments[u];for(var S in T)Object.prototype.hasOwnProperty.call(T,S)&&(o[S]=T[S])}return o},_extends$2.apply(this,arguments)}var Action;(function(o){o.Pop="POP",o.Push="PUSH",o.Replace="REPLACE"})(Action||(Action={}));const PopStateEventType="popstate";function createBrowserHistory(o){o===void 0&&(o={});function u(S,E){let{pathname:C,search:_,hash:P}=S.location;return createLocation("",{pathname:C,search:_,hash:P},E.state&&E.state.usr||null,E.state&&E.state.key||"default")}function T(S,E){return typeof E=="string"?E:createPath(E)}return getUrlBasedHistory(u,T,null,o)}function invariant$3(o,u){if(o===!1||o===null||typeof o>"u")throw new Error(u)}function warning(o,u){if(!o){typeof console<"u"&&console.warn(u);try{throw new Error(u)}catch{}}}function createKey(){return Math.random().toString(36).substr(2,8)}function getHistoryState(o,u){return{usr:o.state,key:o.key,idx:u}}function createLocation(o,u,T,S){return T===void 0&&(T=null),_extends$2({pathname:typeof o=="str
11ing"?o:o.pathname,search:"",hash:""},typeof u=="string"?parsePath(u):u,{state:T,key:u&&u.key||S||createKey()})}function createPath(o){let{pathname:u="/",search:T="",hash:S=""}=o;return T&&T!=="?"&&(u+=T.charAt(0)==="?"?T:"?"+T),S&&S!=="#"&&(u+=S.charAt(0)==="#"?S:"#"+S),u}function parsePath(o){let u={};if(o){let T=o.indexOf("#");T>=0&&(u.hash=o.substr(T),o=o.substr(0,T));let S=o.indexOf("?");S>=0&&(u.search=o.substr(S),o=o.substr(0,S)),o&&(u.pathname=o)}return u}function getUrlBasedHistory(o,u,T,S){S===void 0&&(S={});let{window:E=document.defaultView,v5Compat:C=!1}=S,_=E.history,P=Action.Pop,R=null,I=L();I==null&&(I=0,_.replaceState(_extends$2({},_.state,{idx:I}),""));function L(){return(_.state||{idx:null}).idx}function j(){P=Action.Pop;let G=L(),B=G==null?null:G-I;I=G,R&&R({action:P,location:N.location,delta:B})}function M(G,B){P=Action.Push;let H=createLocation(N.location,G,B);I=L()+1;let O=getHistoryState(H,I),V=N.createHref(H);try{_.pushState(O,"",V)}catch(U){if(U instanceof DOMException&&U.name==="DataCloneError")throw U;E.location.assign(V)}C&&R&&R({action:P,location:N.location,delta:1})}function D(G,B){P=Action.Replace;let H=createLocation(N.location,G,B);I=L();let O=getHistoryState(H,I),V=N.createHref(H);_.replaceState(O,"",V),C&&R&&R({action:P,location:N.location,delta:0})}function F(G){let B=E.location.origin!=="null"?E.location.origin:E.location.href,H=typeof G=="string"?G:createPath(G);return H=H.replace(/ $/,"%20"),invariant$3(B,"No window.location.(origin|href) available to create URL for href: "+H),new URL(H,B)}let N={get action(){return P},get location(){return o(E,_)},listen(G){if(R)throw new Error("A history only accepts one active listener");return E.addEventListener(PopStateEventType,j),R=G,()=>{E.removeEventListener(PopStateEventType,j),R=null}},createHref(G){return u(E,G)},createURL:F,encodeLocation(G){let B=F(G);return{pathname:B.pathname,search:B.search,hash:B.hash}},push:M,replace:D,go(G){return _.go(G)}};return N}var ResultType;(function(o){o.data="data",o.deferred="deferred",o.redirect="redirect",o.error="error"})(ResultType||(ResultType={}));function matchRoutes(o,u,T){return T===void 0&&(T="/"),matchRoutesImpl(o,u,T)}function matchRoutesImpl(o,u,T,S){let E=typeof u=="string"?parsePath(u):u,C=stripBasename(E.pathname||"/",T);if(C==null)return null;let _=flattenRoutes(o);rankRouteBranches(_);let P=null;for(let R=0;P==null&&R<_.length;++R){let I=decodePath(C);P=matchRouteBranch(_[R],I)}return P}function flattenRoutes(o,u,T,S){u===void 0&&(u=[]),T===void 0&&(T=[]),S===void 0&&(S="");let E=(C,_,P)=>{let R={relativePath:P===void 0?C.path||"":P,caseSensitive:C.caseSensitive===!0,childrenIndex:_,route:C};R.relativePath.startsWith("/")&&(invariant$3(R.relativePath.startsWith(S),'Absolute route path "'+R.relativePath+'" nested under path '+('"'+S+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),R.relativePath=R.relativePath.slice(S.length));let I=joinPaths([S,R.relativePath]),L=T.concat(R);C.children&&C.children.length>0&&(invariant$3(C.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+I+'".')),flattenRoutes(C.children,u,L,I)),!(C.path==null&&!C.index)&&u.push({path:I,score:computeScore(I,C.index),routesMeta:L})};return o.forEach((C,_)=>{var P;if(C.path===""||!((P=C.path)!=null&&P.includes("?")))E(C,_);else for(let R of explodeOptionalSegments(C.path))E(C,_,R)}),u}function explodeOptionalSegments(o){let u=o.split("/");if(u.length===0)return[];let[T,...S]=u,E=T.endsWith("?"),C=T.replace(/\?$/,"");if(S.length===0)return E?[C,""]:[C];let _=explodeOptionalSegments(S.join("/")),P=[];return P.push(..._.map(R=>R===""?C:[C,R].join("/"))),E&&P.push(..._),P.map(R=>o.startsWith("/")&&R===""?"/":R)}function rankRouteBranches(o){o.sort((u,T)=>u.score!==T.score?T.score-u.score:compareIndexes(u.routesMeta.map(S=>S.childrenIndex),T.routesMeta.map(S=>S.childrenIndex)))}const paramRe=/^:[\w-]+$/,dynamicSegmentValue=3,indexRouteValue=2,emptySegmentValue=1,staticSegmentValue=10,splatPenalty=-2,isSplat=o=>o==="*";
11function computeScore(o,u){let T=o.split("/"),S=T.length;return T.some(isSplat)&&(S+=splatPenalty),u&&(S+=indexRouteValue),T.filter(E=>!isSplat(E)).reduce((E,C)=>E+(paramRe.test(C)?dynamicSegmentValue:C===""?emptySegmentValue:staticSegmentValue),S)}function compareIndexes(o,u){return o.length===u.length&&o.slice(0,-1).every((S,E)=>S===u[E])?o[o.length-1]-u[u.length-1]:0}function matchRouteBranch(o,u,T){let{routesMeta:S}=o,E={},C="/",_=[];for(let P=0;P<S.length;++P){let R=S[P],I=P===S.length-1,L=C==="/"?u:u.slice(C.length)||"/",j=matchPath({path:R.relativePath,caseSensitive:R.caseSensitive,end:I},L),M=R.route;if(!j)return null;Object.assign(E,j.params),_.push({params:E,pathname:joinPaths([C,j.pathname]),pathnameBase:normalizePathname(joinPaths([C,j.pathnameBase])),route:M}),j.pathnameBase!=="/"&&(C=joinPaths([C,j.pathnameBase]))}return _}function matchPath(o,u){typeof o=="string"&&(o={path:o,caseSensitive:!1,end:!0});let[T,S]=compilePath(o.path,o.caseSensitive,o.end),E=u.match(T);if(!E)return null;let C=E[0],_=C.replace(/(.)\/+$/,"$1"),P=E.slice(1);return{params:S.reduce((I,L,j)=>{let{paramName:M,isOptional:D}=L;if(M==="*"){let N=P[j]||"";_=C.slice(0,C.length-N.length).replace(/(.)\/+$/,"$1")}const F=P[j];return D&&!F?I[M]=void 0:I[M]=(F||"").replace(/%2F/g,"/"),I},{}),pathname:C,pathnameBase:_,pattern:o}}function compilePath(o,u,T){u===void 0&&(u=!1),T===void 0&&(T=!0),warning(o==="*"||!o.endsWith("*")||o.endsWith("/*"),'Route path "'+o+'" will be treated as if it were '+('"'+o.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+o.replace(/\*$/,"/*")+'".'));let S=[],E="^"+o.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(_,P,R)=>(S.push({paramName:P,isOptional:R!=null}),R?"/?([^\\/]+)?":"/([^\\/]+)"));return o.endsWith("*")?(S.push({paramName:"*"}),E+=o==="*"||o==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):T?E+="\\/*$":o!==""&&o!=="/"&&(E+="(?:(?=\\/|$))"),[new RegExp(E,u?void 0:"i"),S]}function decodePath(o){try{return o.split("/").map(u=>decodeURIComponent(u).replace(/\//g,"%2F")).join("/")}catch(u){return warning(!1,'The URL path "'+o+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+u+").")),o}}function stripBasename(o,u){if(u==="/")return o;if(!o.toLowerCase().startsWith(u.toLowerCase()))return null;let T=u.endsWith("/")?u.length-1:u.length,S=o.charAt(T);return S&&S!=="/"?null:o.slice(T)||"/"}function resolvePath(o,u){u===void 0&&(u="/");let{pathname:T,search:S="",hash:E=""}=typeof o=="string"?parsePath(o):o;return{pathname:T?T.startsWith("/")?T:resolvePathname(T,u):u,search:normalizeSearch(S),hash:normalizeHash(E)}}function resolvePathname(o,u){let T=u.replace(/\/+$/,"").split("/");return o.split("/").forEach(E=>{E===".."?T.length>1&&T.pop():E!=="."&&T.push(E)}),T.length>1?T.join("/"):"/"}function getInvalidPathError(o,u,T,S){return"Cannot include a '"+o+"' character in a manually specified "+("`to."+u+"` field ["+JSON.stringify(S)+"]. Please separate it out to the ")+("`to."+T+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function getPathContributingMatches(o){return o.filter((u,T)=>T===0||u.route.path&&u.route.path.length>0)}function getResolveToMatches(o,u){let T=getPathContributingMatches(o);return u?T.map((S,E)=>E===T.length-1?S.pathname:S.pathnameBase):T.map(S=>S.pathnameBase)}function resolveTo(o,u,T,S){S===void 0&&(S=!1);let E;typeof o=="string"?E=parsePath(o):(E=_extends$2({},o),invariant$3(!E.pathname||!E.pathname.includes("?"),getInvalidPathError("?","pathname","search",E)),invariant$3(!E.pathname||!E.pathname.includes("#"),getInvalidPathError("#","pathname","hash",E)),invariant$3(!E.search||!E.search.includes("#"),getInvalidPathError("#","search","hash",E)));let C=o===""||E.pathname==="",_=C?"/":E.pathname,P;if(_==null)P=T;else{let j=u.length-1;if(!S&&_.startsWith("..")){let M=_.split("/");for(;M[0]==="..";)M.shift(),j-=1;E.pathname=M.join("/")}P=j>=0?u[j]:"/"}let R=resolvePath(E,P),I=_&&_!=="/"&&_.endsWith("/"),L=(C||_===".")&&T.endsWith("/");return!R.pathname.endsWith("/")&&(I||L)&&(R.pathname+="/"),R}const joinPaths=o=>o.join("/").replace(/\/\/+/g,"/"),normalizePathname=o=>o.replace(/\/+$/,"").replace(/^\/*/,"/"),normalizeSearch=o=>!o||o==="?"?"":o.startsWith("?")?o:"?"+o,normalizeHash=o=>!o||o==="#"?"":o.startsWith("#")?o:"#"+o;function isRouteErrorResponse(o){return o!=null&&typeof o.status=="number"&&typeof o.statusText=="string"&&typeof o.internal=="boolean"&&"data"in o}const validMutationMethodsArr=["post","put","patch","delete"];new Set(validMutationMethodsArr);const validRequestMethodsArr=["get",...validMutationMethodsArr];new Set(validRequestMethodsArr);/** 12 * React Router v6.30.1 13 * 14 * Copyright (c) Remix Software Inc. 15 * 16 * This source code is licensed under the MIT license found in the 17 * LICENSE.md file in the root directory of this source tree. 18 * 19 * @license MIT 20 */function _extends$1(){return _extends$1=Object.assign?Object.assign.bind():function(o){for(var u=1;u<arguments.length;u++){var T=arguments[u];for(var S in T)Object.prototype.hasOwnProperty.call(T,S)&&(o[S]=T[S])}return o},_extends$1.apply(this,arguments)}const DataRouterContext=reactExports.createContext(null),DataRouterStateContext=reactExports.createContext(null),NavigationContext=reactExports.createContext(null),LocationContext=reactExports.createContext(null),RouteContext=reactExports.createContext({outlet:null,matches:[],isDataRoute:!1}),RouteErrorContext=reactExports.createContext(null);function useHref(o,u){let{relative:T}=u===void 0?{}:u;useInRouterContext()||invariant$3(!1);let{basename:S,navigator:E}=reactExports.useContext(NavigationContext),{hash:C,pathname:_,search:P}=useResolvedPath(o,{relative:T}),R=_;return S!=="/"&&(R=_==="/"?S:joinPaths([S,_])),E.createHref({pathname:R,search:P,hash:C})}function useInRouterContext(){return reactExports.useContext(LocationContext)!=null}function useLocation(){return useInRouterContext()||invariant$3(!1),reactExports.useContext(LocationContext).location}function useIsomorphicLayoutEffect$1(o){reactExports.useContext(NavigationContext).static||reactExports.useLayoutEffect(o)}function useNavigate(){let{isDataRoute:o}=reactExports.useContext(RouteContext);return o?useNavigateStable():useNavigateUnstable()}function useNavigateUnstable(){useInRouterContext()||invariant$3(!1);
20let o=reactExports.useContext(DataRouterContext),{basename:u,future:T,navigator:S}=reactExports.useContext(NavigationContext),{matches:E}=reactExports.useContext(RouteContext),{pathname:C}=useLocation(),_=JSON.stringify(getResolveToMatches(E,T.v7_relativeSplatPath)),P=reactExports.useRef(!1);return useIsomorphicLayoutEffect$1(()=>{P.current=!0}),reactExports.useCallback(function(I,L){if(L===void 0&&(L={}),!P.current)return;if(typeof I=="number"){S.go(I);return}let j=resolveTo(I,JSON.parse(_),C,L.relative==="path");o==null&&u!=="/"&&(j.pathname=j.pathname==="/"?u:joinPaths([u,j.pathname])),(L.replace?S.replace:S.push)(j,L.state,L)},[u,S,_,C,o])}function useParams(){let{matches:o}=reactExports.useContext(RouteContext),u=o[o.length-1];return u?u.params:{}}function useResolvedPath(o,u){let{relative:T}=u===void 0?{}:u,{future:S}=reactExports.useContext(NavigationContext),{matches:E}=reactExports.useContext(RouteContext),{pathname:C}=useLocation(),_=JSON.stringify(getResolveToMatches(E,S.v7_relativeSplatPath));return reactExports.useMemo(()=>resolveTo(o,JSON.parse(_),C,T==="path"),[o,_,C,T])}function useRoutes(o,u){return useRoutesImpl(o,u)}function useRoutesImpl(o,u,T,S){useInRouterContext()||invariant$3(!1);let{navigator:E}=reactExports.useContext(NavigationContext),{matches:C}=reactExports.useContext(RouteContext),_=C[C.length-1],P=_?_.params:{};_&&_.pathname;let R=_?_.pathnameBase:"/";_&&_.route;let I=useLocation(),L;if(u){var j;let G=typeof u=="string"?parsePath(u):u;R==="/"||(j=G.pathname)!=null&&j.startsWith(R)||invariant$3(!1),L=G}else L=I;let M=L.pathname||"/",D=M;if(R!=="/"){let G=R.replace(/^\//,"").split("/");D="/"+M.replace(/^\//,"").split("/").slice(G.length).join("/")}let F=matchRoutes(o,{pathname:D}),N=_renderMatches(F&&F.map(G=>Object.assign({},G,{params:Object.assign({},P,G.params),pathname:joinPaths([R,E.encodeLocation?E.encodeLocation(G.pathname).pathname:G.pathname]),pathnameBase:G.pathnameBase==="/"?R:joinPaths([R,E.encodeLocation?E.encodeLocation(G.pathnameBase).pathname:G.pathnameBase])})),C,T,S);return u&&N?reactExports.createElement(LocationContext.Provider,{value:{location:_extends$1({pathname:"/",search:"",hash:"",state:null,key:"default"},L),navigationType:Action.Pop}},N):N}function DefaultErrorComponent(){let o=useRouteError(),u=isRouteErrorResponse(o)?o.status+" "+o.statusText:o instanceof Error?o.message:JSON.stringify(o),T=o instanceof Error?o.stack:null,E={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return reactExports.createElement(reactExports.Fragment,null,reactExports.createElement("h2",null,"Unexpected Application Error!"),reactExports.createElement("h3",{style:{fontStyle:"italic"}},u),T?reactExports.createElement("pre",{style:E},T):null,null)}const defaultErrorElement=reactExports.createElement(DefaultErrorComponent,null);class RenderErrorBoundary extends reactExports.Component{constructor(u){super(u),this.state={location:u.location,revalidation:u.revalidation,error:u.error}}static getDerivedStateFromError(u){return{error:u}}static getDerivedStateFromProps(u,T){return T.location!==u.location||T.revalidation!=="idle"&&u.revalidation==="idle"?{error:u.error,location:u.location,revalidation:u.revalidation}:{error:u.error!==void 0?u.error:T.error,location:T.location,revalidation:u.revalidation||T.revalidation}}componentDidCatch(u,T){console.error("React Router caught the following error during render",u,T)}render(){return this.state.error!==void 0?reactExports.createElement(RouteContext.Provider,{value:this.props.routeContext},reactExports.createElement(RouteErrorContext.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function RenderedRoute(o){let{routeContext:u,match:T,children:S}=o,E=reactExports.useContext(DataRouterContext);return E&&E.static&&E.staticContext&&(T.route.errorElement||T.route.ErrorBoundary)&&(E.staticContext._deepestRenderedBoundaryId=T.route.id),reactExports.createElement(RouteContext.Provider,{value:u},S)}function _renderMatches(o,u,T,S){var E;if(u===void 0&&(u=[]),T===void 0&&(T=null),S===void 0&&(S=null),o==null){var C;if(!T)return null;if(T.errors)o=T.matches;else if((C=S)!=null&&C.v7_partialHydration&&u.length===0&&!T.initialized&&T.matches.length>0)o=T.matches;else return null}let _=o,P=(E=T)==null?void 0:E.errors;if(P!=null){let L=_.findIndex(j=>j.route.id&&(P==null?void 0:P[j.route.id])!==void 0);L>=0||invariant$3(!1),_=_.slice(0,Math.min(_.length,L+1))}let R=!1,I=-1;if(T&&S&&S.v7_partialHydration)for(let L=0;L<_.length;L++){let j=_[L];if((j.route.HydrateFallback||j.route.hydrateFallbackElement)&&(I=L),j.route.id){let{loaderData:M,errors:D}=T,F=j.route.loader&&M[j.route.id]===void 0&&(!D||D[j.route.id]===void 0);if(j.route.lazy||F){R=!0,I>=0?_=_.slice(0,I+1):_=[_[0]];break}}}return _.reduceRight((L,j,M)=>{let D,F=!1,N=null,G=null;T&&(D=P&&j.route.id?P[j.route.id]:void 0,N=j.route.errorElement||defaultErrorElement,R&&(I<0&&M===0?(warningOnce("route-fallback"),F=!0,G=null):I===M&&(F=!0,G=j.route.hydrateFallbackElement||null)));let B=u.concat(_.slice(0,M+1)),H=()=>{let O;return D?O=N:F?O=G:j.route.Component?O=reactExports.createElement(j.route.Component,null):j.route.element?O=j.route.element:O=L,reactExports.createElement(RenderedRoute,{match:j,routeContext:{outlet:L,matches:B,isDataRoute:T!=null},children:O})};return T&&(j.route.ErrorBoundary||j.route.errorElement||M===0)?reactExports.createElement(RenderErrorBoundary,{location:T.location,revalidation:T.revalidation,component:N,error:D,children:H(),routeC
20ontext:{outlet:null,matches:B,isDataRoute:!0}}):H()},null)}var DataRouterHook$1=function(o){return o.UseBlocker="useBlocker",o.UseRevalidator="useRevalidator",o.UseNavigateStable="useNavigate",o}(DataRouterHook$1||{}),DataRouterStateHook$1=function(o){return o.UseBlocker="useBlocker",o.UseLoaderData="useLoaderData",o.UseActionData="useActionData",o.UseRouteError="useRouteError",o.UseNavigation="useNavigation",o.UseRouteLoaderData="useRouteLoaderData",o.UseMatches="useMatches",o.UseRevalidator="useRevalidator",o.UseNavigateStable="useNavigate",o.UseRouteId="useRouteId",o}(DataRouterStateHook$1||{});function useDataRouterContext(o){let u=reactExports.useContext(DataRouterContext);return u||invariant$3(!1),u}function useDataRouterState(o){let u=reactExports.useContext(DataRouterStateContext);return u||invariant$3(!1),u}function useRouteContext(o){let u=reactExports.useContext(RouteContext);return u||invariant$3(!1),u}function useCurrentRouteId(o){let u=useRouteContext(),T=u.matches[u.matches.length-1];return T.route.id||invariant$3(!1),T.route.id}function useRouteError(){var o;let u=reactExports.useContext(RouteErrorContext),T=useDataRouterState(),S=useCurrentRouteId();return u!==void 0?u:(o=T.errors)==null?void 0:o[S]}function useNavigateStable(){let{router:o}=useDataRouterContext(DataRouterHook$1.UseNavigateStable),u=useCurrentRouteId(DataRouterStateHook$1.UseNavigateStable),T=reactExports.useRef(!1);return useIsomorphicLayoutEffect$1(()=>{T.current=!0}),reactExports.useCallback(function(E,C){C===void 0&&(C={}),T.current&&(typeof E=="number"?o.navigate(E):o.navigate(E,_extends$1({fromRouteId:u},C)))},[o,u])}const alreadyWarned$1={};function warningOnce(o,u,T){alreadyWarned$1[o]||(alreadyWarned$1[o]=!0)}function logV6DeprecationWarnings(o,u){o==null||o.v7_startTransition,o==null||o.v7_relativeSplatPath}function Navigate(o){let{to:u,replace:T,state:S,relative:E}=o;useInRouterContext()||invariant$3(!1);let{future:C,static:_}=reactExports.useContext(NavigationContext),{matches:P}=reactExports.useContext(RouteContext),{pathname:R}=useLocation(),I=useNavigate(),L=resolveTo(u,getResolveToMatches(P,C.v7_relativeSplatPath),R,E==="path"),j=JSON.stringify(L);return reactExports.useEffect(()=>I(JSON.parse(j),{replace:T,state:S,relative:E}),[I,j,E,T,S]),null}function Route(o){invariant$3(!1)}function Router(o){let{basename:u="/",children:T=null,location:S,navigationType:E=Action.Pop,navigator:C,static:_=!1,future:P}=o;useInRouterContext()&&invariant$3(!1);let R=u.replace(/^\/*/,"/"),I=reactExports.useMemo(()=>({basename:R,navigator:C,static:_,future:_extends$1({v7_relativeSplatPath:!1},P)}),[R,P,C,_]);typeof S=="string"&&(S=parsePath(S));let{pathname:L="/",search:j="",hash:M="",state:D=null,key:F="default"}=S,N=reactExports.useMemo(()=>{let G=stripBasename(L,R);return G==null?null:{location:{pathname:G,search:j,hash:M,state:D,key:F},navigationType:E}},[R,L,j,M,D,F,E]);return N==null?null:reactExports.createElement(NavigationContext.Provider,{value:I},reactExports.createElement(LocationContext.Provider,{children:T,value:N}))}function Routes(o){let{children:u,location:T}=o;return useRoutes(createRoutesFromChildren(u),T)}new Promise(()=>{});function createRoutesFromChildren(o,u){u===void 0&&(u=[]);let T=[];return reactExports.Children.forEach(o,(S,E)=>{if(!reactExports.isValidElement(S))return;let C=[...u,E];if(S.type===reactExports.Fragment){T.push.apply(T,createRoutesFromChildren(S.props.children,C));return}S.type!==Route&&invariant$3(!1),!S.props.index||!S.props.children||invariant$3(!1);let _={id:S.props.id||C.join("-"),caseSensitive:S.props.caseSensitive,element:S.props.element,Component:S.props.Component,index:S.props.index,path:S.props.path,loader:S.props.loader,action:S.props.action,errorElement:S.props.errorElement,ErrorBoundary:S.props.ErrorBoundary,hasErrorBoundary:S.props.ErrorBoundary!=null||S.props.errorElement!=null,shouldRevalidate:S.props.shouldRevalidate,handle:S.props.handle,lazy:S.props.lazy};S.props.children&&(_.children=createRoutesFromChildren(S.props.children,C)),T.push(_)}),T}/** 21 * React Router DOM v6.30.1 22 * 23 * Copyright (c) Remix Software Inc. 24 * 25 * This source code is licensed under the MIT license found in the 26 * LICENSE.md file in the root directory of this source tree. 27 * 28 * @license MIT 29 */function _extends(){return _extends=Object.assign?Object.assign.bind():function(o){for(var u=1;u<arguments.length;u++){var T=arguments[u];for(var S in T)Object.prototype.hasOwnProperty.call(T,S)&&(o[S]=T[S])}return o},_extends.apply(this,arguments)}function _objectWithoutPropertiesLoose$2(o,u){if(o==null)return{};var T={},S=Object.keys(o),E,C;for(C=0;C<S.length;C++)E=S[C],!(u.indexOf(E)>=0)&&(T[E]=o[E]);return T}function isModifiedEvent(o){return!!(o.metaKey||o.altKey||o.ctrlKey||o.shiftKey)}function shouldProcessLinkClick(o,u){return o.button===0&&(!u||u==="_self")&&!isModifiedEvent(o)}function createSearchParams(o){return o===void 0&&(o=""),new URLSearchParams(typeof o=="str
29ing"||Array.isArray(o)||o instanceof URLSearchParams?o:Object.keys(o).reduce((u,T)=>{let S=o[T];return u.concat(Array.isArray(S)?S.map(E=>[T,E]):[[T,S]])},[]))}function getSearchParamsForLocation(o,u){let T=createSearchParams(o);return u&&u.forEach((S,E)=>{T.has(E)||u.getAll(E).forEach(C=>{T.append(E,C)})}),T}const _excluded$2=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],REACT_ROUTER_VERSION="6";try{window.__reactRouterVersion=REACT_ROUTER_VERSION}catch{}const START_TRANSITION="startTransition",startTransitionImpl=React[START_TRANSITION];function BrowserRouter(o){let{basename:u,children:T,future:S,window:E}=o,C=reactExports.useRef();C.current==null&&(C.current=createBrowserHistory({window:E,v5Compat:!0}));let _=C.current,[P,R]=reactExports.useState({action:_.action,location:_.location}),{v7_startTransition:I}=S||{},L=reactExports.useCallback(j=>{I&&startTransitionImpl?startTransitionImpl(()=>R(j)):R(j)},[R,I]);return reactExports.useLayoutEffect(()=>_.listen(L),[_,L]),reactExports.useEffect(()=>logV6DeprecationWarnings(S),[S]),reactExports.createElement(Router,{basename:u,children:T,location:P.location,navigationType:P.action,navigator:_,future:S})}const isBrowser$2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ABSOLUTE_URL_REGEX=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Link$1=reactExports.forwardRef(function(u,T){let{onClick:S,relative:E,reloadDocument:C,replace:_,state:P,target:R,to:I,preventScrollReset:L,viewTransition:j}=u,M=_objectWithoutPropertiesLoose$2(u,_excluded$2),{basename:D}=reactExports.useContext(NavigationContext),F,N=!1;if(typeof I=="string"&&ABSOLUTE_URL_REGEX.test(I)&&(F=I,isBrowser$2))try{let O=new URL(window.location.href),V=I.startsWith("//")?new URL(O.protocol+I):new URL(I),U=stripBasename(V.pathname,D);V.origin===O.origin&&U!=null?I=U+V.search+V.hash:N=!0}catch{}let G=useHref(I,{relative:E}),B=useLinkClickHandler(I,{replace:_,state:P,target:R,preventScrollReset:L,relative:E,viewTransition:j});function H(O){S&&S(O),O.defaultPrevented||B(O)}return reactExports.createElement("a",_extends({},M,{href:F||G,onClick:N||C?S:H,ref:T,target:R}))});var DataRouterHook;(function(o){o.UseScrollRestoration="useScrollRestoration",o.UseSubmit="useSubmit",o.UseSubmitFetcher="useSubmitFetcher",o.UseFetcher="useFetcher",o.useViewTransitionState="useViewTransitionState"})(DataRouterHook||(DataRouterHook={}));var DataRouterStateHook;(function(o){o.UseFetcher="useFetcher",o.UseFetchers="useFetchers",o.UseScrollRestoration="useScrollRestoration"})(DataRouterStateHook||(DataRouterStateHook={}));function useLinkClickHandler(o,u){let{target:T,replace:S,state:E,preventScrollReset:C,relative:_,viewTransition:P}=u===void 0?{}:u,R=useNavigate(),I=useLocation(),L=useResolvedPath(o,{relative:_});return reactExports.useCallback(j=>{if(shouldProcessLinkClick(j,T)){j.preventDefault();let M=S!==void 0?S:createPath(I)===createPath(L);R(o,{replace:M,state:E,preventScrollReset:C,relative:_,viewTransition:P})}},[I,R,L,S,E,T,o,C,_,P])}function useSearchParams(o){let u=reactExports.useRef(createSearchParams(o)),T=reactExports.useRef(!1),S=useLocation(),E=reactExports.useMemo(()=>getSearchParamsForLocation(S.search,T.current?null:u.current),[S.search]),C=useNavigate(),_=reactExports.useCallback((P,R)=>{const I=createSearchParams(typeof P=="function"?P(E):P);T.current=!0,C("?"+I,R)},[C,E]);return[E,_]}var hasElementType=typeof Element<"u",hasMap=typeof Map=="function",hasSet=typeof Set=="function",hasArrayBuffer=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function equal(o,u){if(o===u)return!0;if(o&&u&&typeof o=="object"&&typeof u=="object"){if(o.constructor!==u.constructor)return!1;var T,S,E;if(Array.isArray(o)){if(T=o.length,T!=u.length)return!1;for(S=T;S--!==0;)if(!equal(o[S],u[S]))return!1;return!0}var C;if(hasMap&&o instanceof Map&&u instanceof Map){if(o.size!==u.size)return!1;for(C=o.entries();!(S=C.next()).done;)if(!u.has(S.value[0]))return!1;for(C=o.entries();!(S=C.next()).done;)if(!equal(S.value[1],u.get(S.value[0])))return!1;return!0}if(hasSet&&o instanceof Set&&u instanceof Set){if(o.size!==u.size)return!1;for(C=o.entries();!(S=C.next()).done;)if(!u.has(S.value[0]))return!1;return!0}if(hasArrayBuffer&&ArrayBuffer.isView(o)&&ArrayBuffer.isView(u)){
29if(T=o.length,T!=u.length)return!1;for(S=T;S--!==0;)if(o[S]!==u[S])return!1;return!0}if(o.constructor===RegExp)return o.source===u.source&&o.flags===u.flags;if(o.valueOf!==Object.prototype.valueOf&&typeof o.valueOf=="function"&&typeof u.valueOf=="function")return o.valueOf()===u.valueOf();if(o.toString!==Object.prototype.toString&&typeof o.toString=="function"&&typeof u.toString=="function")return o.toString()===u.toString();if(E=Object.keys(o),T=E.length,T!==Object.keys(u).length)return!1;for(S=T;S--!==0;)if(!Object.prototype.hasOwnProperty.call(u,E[S]))return!1;if(hasElementType&&o instanceof Element)return!1;for(S=T;S--!==0;)if(!((E[S]==="_owner"||E[S]==="__v"||E[S]==="__o")&&o.$$typeof)&&!equal(o[E[S]],u[E[S]]))return!1;return!0}return o!==o&&u!==u}var reactFastCompare=function(u,T){try{return equal(u,T)}catch(S){if((S.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw S}};const fastCompare=getDefaultExportFromCjs(reactFastCompare);var invariant$1=function(o,u,T,S,E,C,_,P){if(!o){var R;if(u===void 0)R=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var I=[T,S,E,C,_,P],L=0;R=new Error(u.replace(/%s/g,function(){return I[L++]})),R.name="Invariant Violation"}throw R.framesToPop=1,R}},browser=invariant$1;const invariant$2=getDefaultExportFromCjs(browser);var shallowequal=function(u,T,S,E){var C=S?S.call(E,u,T):void 0;if(C!==void 0)return!!C;if(u===T)return!0;if(typeof u!="object"||!u||typeof T!="object"||!T)return!1;var _=Object.keys(u),P=Object.keys(T);if(_.length!==P.length)return!1;for(var R=Object.prototype.hasOwnProperty.bind(T),I=0;I<_.length;I++){var L=_[I];if(!R(L))return!1;var j=u[L],M=T[L];if(C=S?S.call(E,j,M,L):void 0,C===!1||C===void 0&&j!==M)return!1}return!0};const shallowEqual=getDefaultExportFromCjs(shallowequal);var TAG_NAMES=(o=>(o.BASE="base",o.BODY="body",o.HEAD="head",o.HTML="html",o.LINK="link",o.META="meta",o.NOSCRIPT="noscript",o.SCRIPT="script",o.STYLE="style",o.TITLE="title",o.FRAGMENT="Symbol(react.fragment)",o))(TAG_NAMES||{}),SEO_PRIORITY_TAGS={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},VALID_TAG_NAMES=Object.values(TAG_NAMES),REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},HTML_TAG_MAP=Object.entries(REACT_TAG_MAP).reduce((o,[u,T])=>(o[T]=u,o),{}),HELMET_ATTRIBUTE="data-rh",HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},getInnermostProperty=(o,u)=>{for(let T=o.length-1;T>=0;T-=1){const S=o[T];if(Object.prototype.hasOwnProperty.call(S,u))return S[u]}return null},getTitleFromPropsList=o=>{let u=getInnermostProperty(o,"title");const T=getInnermostProperty(o,HELMET_PROPS.TITLE_TEMPLATE);if(Array.isArray(u)&&(u=u.join("")),T&&u)return T.replace(/%s/g,()=>u);const S=getInnermostProperty(o,HELMET_PROPS.DEFAULT_TITLE);return u||S||void 0},getOnChangeClientState=o=>getInnermostProperty(o,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||(()=>{}),getAttributesFromPropsList=(o,u)=>u.filter(T=>typeof T[o]<"u").map(T=>T[o]).reduce((T,S)=>({...T,...S}),{}),getBaseTagFromPropsList=(o,u)=>u.filter(T=>typeof T.base<"u").map(T=>T.base).reverse().reduce((T,S)=>{if(!T.length){const E=Object.keys(S);for(let C=0;C<E.length;C+=1){const P=E[C].toLowerCase();if(o.indexOf(P)!==-1&&S[P])return T.concat(S)}}return T},[]),warn$1=o=>console&&typeof console.warn=="function"&&console.warn(o),getTagsFromPropsList=(o,u,T)=>{const S={};return T.filter(E=>Array.isArray(E[o])?!0:(typeof E[o]<"u"&&warn$1(`Helmet: ${o} should be of type "Array". Instead found type "${typeof E[o]}"`),!1)).map(E=>E[o]).reverse().reduce((E,C)=>{const _={};C.filter(R=>{let I;const L=Object.keys(R);for(let M=0;M<L.length;M+=1){const D=L[M],F=D.toLowerCase();u.indexOf(F)!==-1&&!(I==="rel"&&R[I].toLowerCase()==="canonical")&&!(F==="rel"&&R[F].toLowerCase()==="stylesheet")&&(I=F),u.indexOf(D)!==-1&&(D==="innerHTML"||D==="cssText"||D==="itemprop")&&(I=D)}if(!I||!R[I])return!1;const j=R[I].toLowerCase();return S[I]||(S[I]={}),_[I]||(_[I]={}),S[I][j]?!1:(_[I][j]=!0,!0)}
29).reverse().forEach(R=>E.push(R));const P=Object.keys(_);for(let R=0;R<P.length;R+=1){const I=P[R],L={...S[I],..._[I]};S[I]=L}return E},[]).reverse()},getAnyTrueFromPropsList=(o,u)=>{if(Array.isArray(o)&&o.length){for(let T=0;T<o.length;T+=1)if(o[T][u])return!0}return!1},reducePropsToState=o=>({baseTag:getBaseTagFromPropsList(["href"],o),bodyAttributes:getAttributesFromPropsList("bodyAttributes",o),defer:getInnermostProperty(o,HELMET_PROPS.DEFER),encode:getInnermostProperty(o,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList("htmlAttributes",o),linkTags:getTagsFromPropsList("link",["rel","href"],o),metaTags:getTagsFromPropsList("meta",["name","charset","http-equiv","property","itemprop"],o),noscriptTags:getTagsFromPropsList("noscript",["innerHTML"],o),onChangeClientState:getOnChangeClientState(o),scriptTags:getTagsFromPropsList("script",["src","innerHTML"],o),styleTags:getTagsFromPropsList("style",["cssText"],o),title:getTitleFromPropsList(o),titleAttributes:getAttributesFromPropsList("titleAttributes",o),prioritizeSeoTags:getAnyTrueFromPropsList(o,HELMET_PROPS.PRIORITIZE_SEO_TAGS)}),flattenArray=o=>Array.isArray(o)?o.join(""):o,checkIfPropsMatch=(o,u)=>{const T=Object.keys(o);for(let S=0;S<T.length;S+=1)if(u[T[S]]&&u[T[S]].includes(o[T[S]]))return!0;return!1},prioritizer=(o,u)=>Array.isArray(o)?o.reduce((T,S)=>(checkIfPropsMatch(S,u)?T.priority.push(S):T.default.push(S),T),{priority:[],default:[]}):{default:o,priority:[]},without=(o,u)=>({...o,[u]:void 0}),SELF_CLOSING_TAGS=["noscript","script","style"],encodeSpecialCharacters=(o,u=!0)=>u===!1?String(o):String(o).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),generateElementAttributesAsString=o=>Object.keys(o).reduce((u,T)=>{const S=typeof o[T]<"u"?`${T}="${o[T]}"`:`${T}`;return u?`${u} ${S}`:S},""),generateTitleAsString=(o,u,T,S)=>{const E=generateElementAttributesAsString(T),C=flattenArray(u);return E?`<${o} ${HELMET_ATTRIBUTE}="true" ${E}>${encodeSpecialCharacters(C,S)}</${o}>`:`<${o} ${HELMET_ATTRIBUTE}="true">${encodeSpecialCharacters(C,S)}</${o}>`},generateTagsAsString=(o,u,T=!0)=>u.reduce((S,E)=>{const C=E,_=Object.keys(C).filter(I=>!(I==="innerHTML"||I==="cssText")).reduce((I,L)=>{const j=typeof C[L]>"u"?L:`${L}="${encodeSpecialCharacters(C[L],T)}"`;return I?`${I} ${j}`:j},""),P=C.innerHTML||C.cssText||"",R=SELF_CLOSING_TAGS.indexOf(o)===-1;return`${S}<${o} ${HELMET_ATTRIBUTE}="true" ${_}${R?"/>":`>${P}</${o}>`}`},""),convertElementAttributesToReactProps=(o,u={})=>Object.keys(o).reduce((T,S)=>{const E=REACT_TAG_MAP[S];return T[E||S]=o[S],T},u),generateTitleAsReactComponent=(o,u,T)=>{const S={key:u,[HELMET_ATTRIBUTE]:!0},E=convertElementAttributesToReactProps(T,S);return[React$1.createElement("title",E,u)]},generateTagsAsReactComponent=(o,u)=>u.map((T,S)=>{const E={key:S,[HELMET_ATTRIBUTE]:!0};return Object.keys(T).forEach(C=>{const P=REACT_TAG_MAP[C]||C;if(P==="innerHTML"||P==="cssText"){const R=T.innerHTML||T.cssText;E.dangerouslySetInnerHTML={__html:R}}else E[P]=T[C]}),React$1.createElement(o,E)}),getMethodsForTag=(o,u,T=!0)=>{switch(o){case"title":return{toComponent:()=>generateTitleAsReactComponent(o,u.title,u.titleAttributes),toString:()=>generateTitleAsString(o,u.title,u.titleAttributes,T)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>convertElementAttributesToReactProps(u),toString:()=>generateElementAttributesAsString(u)};default:return{toComponent:()=>generateTagsAsReactComponent(o,u),toString:()=>generateTagsAsString(o,u,T)}}},getPriorityMethods=({metaTags:o,linkTags:u,scriptTags:T,encode:S})=>{const E=prioritizer(o,SEO_PRIORITY_TAGS.meta),C=prioritizer(u,SEO_PRIORITY_TAGS.link),_=prioritizer(T,SEO_PRIORITY_TAGS.script);return{priorityMethods:{toComponent:()=>[...generateTagsAsReactComponent("meta",E.priority),...generateTagsAsReactComponent("link",C.priority),...generateTagsAsReactComponent("script",_.priority)],toString:()=>`${getMethodsForTag("meta",E.priority,S)} ${getMethodsForTag("link",C.priority,S)} ${getMethodsForTag("script",_.priority,S)}`},metaTags:E.default,linkTags:C.default,scriptTags:_.default}},mapStateOnServer=o=>{const{baseTag:u,bodyAttributes:T,encode:S=!0,htmlAttributes:E,noscriptTags:C,styleTags:_,title:P="",titleAttributes:R,prioritizeSeoTags:I}=o;let{linkTags:L,metaTags:j,scriptTags:M}=o,D={toComponent:()=>[],toString:()=>""};return I&&({priorityMethods:D,linkTags:L,metaTags:j,scriptTags:M}=getPriorityMethods(o)),{priority:D,base:getMethodsForTag("base",u,S),bodyAttributes:getMethodsForTag("bodyAttributes",T,S),htmlAttributes:getMethodsForTag("htmlAttributes",E,S),link:getMethodsForTag("link",L,S),meta:getMethodsForTag("meta",j,S),noscript:getMethodsForTag("noscript",C,S),script:getMethodsForTag("script",M,S),style:getMethodsForTag("style",_,S),title:getMethodsForTag("title",{title:P,titleAttributes:R},S)}},server_default=mapStateOnServer,instances=[],isDocument=!!(typeof window<"u"&&window.document&&window.document.createElement),HelmetData=class{constructor(o,u){pt(this,"instances",[]);pt(this,"canUseDOM",isDocument);pt(this,"context");pt(this,"value",{setHelmet:o=>{this.context.helmet=o},helmetInstances:{get:()=>this.canUseDOM?instances:this.instances,add:o=>{(this.canUseDOM?instances:this.instances).push(o)},remove:o=>{const u=(this.canUseDOM?instances:this.instances).indexOf(o);(this.canUseDOM?instances:this.instances).splice(u,1)}}});this.context=o,this.canUseDOM=u||!1,u||(o.helmet=server_default({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},major=parseInt(React$1.version.split(".")[0],10),isReact19=major>=19,defaultValue={},Context=React$1.createContext(defaultValue),wt,HelmetProvider=(wt=class extends reactExports.Component{constructor(T){super(T);pt(this,"helmetData");isReact19?this.helmetData=null:this.helmetData=new HelmetData(this.props.context||{},wt.canUseDOM)}render(){return isReact19?React$1.createElement(React$1.Fragment,null,this.props.children):React$1.createElement(Context.Provider,{value:this.helmetData.value},this.props.children)}},pt(wt,"canUseDOM",isDocument),wt),updateTags=(o,u)=>{const T=document.head||document.querySelector("head"),S=T.querySelectorAll(`${o}[${HELMET_ATTRIBUTE}]`),E=[].slice.call(S),C=[];let _;return u&&u.length&&u.forEach(P=>{const R=document.createElement(o);for(const I in P)if(Object.prototype.hasOwnProperty.call(P,I))if(I==="innerHTML")R.innerHTML=P.innerHTML;else if(I==="cssText"){const L=P.cssText;R.appendChild(document.createTextNode(L))}else{const L=I,j=typeof P[L]>"u"?"":P[L];R.setAttribute(I,j)}R.setAttribute(HELMET_ATTRIBUTE,"true"),E.some((I,L)=>(_=L,R.isEqualNode(I)))?E.splice(_,1):C.push(R)}
29),E.forEach(P=>{var R;return(R=P.parentNode)==null?void 0:R.removeChild(P)}),C.forEach(P=>T.appendChild(P)),{oldTags:E,newTags:C}},updateAttributes=(o,u)=>{const T=document.getElementsByTagName(o)[0];if(!T)return;const S=T.getAttribute(HELMET_ATTRIBUTE),E=S?S.split(","):[],C=[...E],_=Object.keys(u);for(const P of _){const R=u[P]||"";T.getAttribute(P)!==R&&T.setAttribute(P,R),E.indexOf(P)===-1&&E.push(P);const I=C.indexOf(P);I!==-1&&C.splice(I,1)}for(let P=C.length-1;P>=0;P-=1)T.removeAttribute(C[P]);E.length===C.length?T.removeAttribute(HELMET_ATTRIBUTE):T.getAttribute(HELMET_ATTRIBUTE)!==_.join(",")&&T.setAttribute(HELMET_ATTRIBUTE,_.join(","))},updateTitle=(o,u)=>{typeof o<"u"&&document.title!==o&&(document.title=flattenArray(o)),updateAttributes("title",u)},commitTagChanges=(o,u)=>{const{baseTag:T,bodyAttributes:S,htmlAttributes:E,linkTags:C,metaTags:_,noscriptTags:P,onChangeClientState:R,scriptTags:I,styleTags:L,title:j,titleAttributes:M}=o;updateAttributes("body",S),updateAttributes("html",E),updateTitle(j,M);const D={baseTag:updateTags("base",T),linkTags:updateTags("link",C),metaTags:updateTags("meta",_),noscriptTags:updateTags("noscript",P),scriptTags:updateTags("script",I),styleTags:updateTags("style",L)},F={},N={};Object.keys(D).forEach(G=>{const{newTags:B,oldTags:H}=D[G];B.length&&(F[G]=B),H.length&&(N[G]=D[G].oldTags)}),u&&u(),R(o,F,N)},_helmetCallback=null,handleStateChangeOnClient=o=>{_helmetCallback&&cancelAnimationFrame(_helmetCallback),o.defer?_helmetCallback=requestAnimationFrame(()=>{commitTagChanges(o,()=>{_helmetCallback=null})}):(commitTagChanges(o),_helmetCallback=null)},client_default=handleStateChangeOnClient,HelmetDispatcher=class extends reactExports.Component{constructor(){super(...arguments);pt(this,"rendered",!1)}shouldComponentUpdate(u){return!shallowEqual(u,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:u}=this.props.context;u.remove(this),this.emitChange()}emitChange(){const{helmetInstances:u,setHelmet:T}=this.props.context;let S=null;const E=reducePropsToState(u.get().map(C=>{const{context:_,...P}=C.props;return P}));HelmetProvider.canUseDOM?client_default(E):server_default&&(S=server_default(E)),T(S)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:u}=this.props.context;u.add(this),this.emitChange()}render(){return this.init(),null}},react19Instances=[],toHtmlAttributes=o=>{const u={};for(const T of Object.keys(o))u[HTML_TAG_MAP[T]||T]=o[T];return u},toReactProps=o=>{const u={};for(const T of Object.keys(o)){const S=REACT_TAG_MAP[T];u[S||T]=o[T]}return u},applyAttributes=(o,u)=>{if(!isDocument)return;const T=document.getElementsByTagName(o)[0];if(!T)return;const S="data-rh-managed",E=T.getAttribute(S),C=E?E.split(","):[],_=Object.keys(u);for(const P of C)_.includes(P)||T.removeAttribute(P);for(const P of _){const R=u[P];R==null||R===!1?T.removeAttribute(P):R===!0?T.setAttribute(P,""):T.setAttribute(P,String(R))}_.length>0?T.setAttribute(S,_.join(",")):T.removeAttribute(S)},syncAllAttributes=()=>{const o={},u={};for(const T of react19Instances){const{htmlAttributes:S,bodyAttributes:E}=T.props;S&&Object.assign(o,toHtmlAttributes(S)),E&&Object.assign(u,toHtmlAttributes(E))}applyAttributes("html",o),applyAttributes("body",u)},React19Dispatcher=class extends reactExports.Component{componentDidMount(){react19Instances.push(this),syncAllAttributes()}componentDidUpdate(){syncAllAttributes()}componentWillUnmount(){const o=react19Instances.indexOf(this);o!==-1&&react19Instances.splice(o,1),syncAllAttributes()}resolveTitle(){const{title:o,titleTemplate:u,defaultTitle:T}=this.props;return o&&u?u.replace(/%s/g,()=>Array.isArray(o)?o.join(""):o):o||T||void 0}renderTitle(){const o=this.resolveTitle();if(o===void 0)return null;const u=this.props.titleAttributes||{};return React$1.createElement("title",toReactProps(u),o)}renderBase(){const{base:o}=this.props;return o?React$1.createElement("base",toReactProps(o)):null}renderMeta(){const{meta:o}=this.props;return!o||!Array.isArray(o)?null:o.map((u,T)=>React$1.createElement("meta",{key:T,...toReactProps(u)}))}renderLink(){const{link:o}=this.props;return!o||!Array.isArray(o)?null:o.map((u,T)=>
29React$1.createElement("link",{key:T,...toReactProps(u)}))}renderScript(){const{script:o}=this.props;return!o||!Array.isArray(o)?null:o.map((u,T)=>{const{innerHTML:S,...E}=u,C=toReactProps(E);return S&&(C.dangerouslySetInnerHTML={__html:S}),React$1.createElement("script",{key:T,...C})})}renderStyle(){const{style:o}=this.props;return!o||!Array.isArray(o)?null:o.map((u,T)=>{const{cssText:S,...E}=u,C=toReactProps(E);return S&&(C.dangerouslySetInnerHTML={__html:S}),React$1.createElement("style",{key:T,...C})})}renderNoscript(){const{noscript:o}=this.props;return!o||!Array.isArray(o)?null:o.map((u,T)=>{const{innerHTML:S,...E}=u,C=toReactProps(E);return S&&(C.dangerouslySetInnerHTML={__html:S}),React$1.createElement("noscript",{key:T,...C})})}render(){return React$1.createElement(React$1.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},zt,Helmet=(zt=class extends reactExports.Component{shouldComponentUpdate(o){return!fastCompare(without(this.props,"helmetData"),without(o,"helmetData"))}mapNestedChildrenToProps(o,u){if(!u)return null;switch(o.type){case"script":case"noscript":return{innerHTML:u};case"style":return{cssText:u};default:throw new Error(`<${o.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(o,u,T,S){return{...u,[o.type]:[...u[o.type]||[],{...T,...this.mapNestedChildrenToProps(o,S)}]}}mapObjectTypeChildren(o,u,T,S){switch(o.type){case"title":return{...u,[o.type]:S,titleAttributes:{...T}};case"body":return{...u,bodyAttributes:{...T}};case"html":return{...u,htmlAttributes:{...T}};default:return{...u,[o.type]:{...T}}}}mapArrayTypeChildrenToProps(o,u){let T={...u};return Object.keys(o).forEach(S=>{T={...T,[S]:o[S]}}),T}warnOnInvalidChildren(o,u){return invariant$2(VALID_TAG_NAMES.some(T=>o.type===T),typeof o.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${VALID_TAG_NAMES.join(", ")} are allowed. Helmet does not support rendering <${o.type}> elements. Refer to our API for more information.`),invariant$2(!u||typeof u=="string"||Array.isArray(u)&&!u.some(T=>typeof T!="string"),`Helmet expects a string as a child of <${o.type}>. Did you forget to wrap your children in braces? ( <${o.type}>{\`\`}</${o.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(o,u){let T={};return React$1.Children.forEach(o,S=>{if(!S||!S.props)return;const{children:E,...C}=S.props,_=Object.keys(C).reduce((R,I)=>(R[HTML_TAG_MAP[I]||I]=C[I],R),{});let{type:P}=S;
29switch(typeof P=="symbol"?P=P.toString():this.warnOnInvalidChildren(S,E),P){case"Symbol(react.fragment)":u=this.mapChildrenToProps(E,u);break;case"link":case"meta":case"noscript":case"script":case"style":T=this.flattenArrayTypeChildren(S,T,_,E);break;default:u=this.mapObjectTypeChildren(S,u,_,E);break}}),this.mapArrayTypeChildrenToProps(T,u)}render(){const{children:o,...u}=this.props;let T={...u},{helmetData:S}=u;if(o&&(T=this.mapChildrenToProps(o,T)),S&&!(S instanceof HelmetData)){const E=S;S=new HelmetData(E.context,!0),delete T.helmetData}return isReact19?React$1.createElement(React19Dispatcher,{...T}):S?React$1.createElement(HelmetDispatcher,{...T,context:S.value}):React$1.createElement(Context.Consumer,null,E=>React$1.createElement(HelmetDispatcher,{...T,context:E}))}},pt(zt,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),zt);function formatMuiErrorMessage(o,...u){const T=new URL(`https://mui.com/production-error/?code=${o}`);return u.forEach(S=>T.searchParams.append("args[]",S)),`Minified MUI error #${o}; visit ${T} for the full message.`}const THEME_ID="$$material";function sheetForTag(o){if(o.sheet)return o.sheet;for(var u=0;u<document.styleSheets.length;u++)if(document.styleSheets[u].ownerNode===o)return document.styleSheets[u]}function createStyleElement(o){var u=document.createElement("style");return u.setAttribute("data-emotion",o.key),o.nonce!==void 0&&u.setAttribute("nonce",o.nonce),u.appendChild(document.createTextNode("")),u.setAttribute("data-s",""),u}var StyleSheet=function(){function o(T){var S=this;this._insertTag=function(E){var C;S.tags.length===0?S.insertionPoint?C=S.insertionPoint.nextSibling:S.prepend?C=S.container.firstChild:C=S.before:C=S.tags[S.tags.length-1].nextSibling,S.container.insertBefore(E,C),S.tags.push(E)},this.isSpeedy=T.speedy===void 0?!0:T.speedy,this.tags=[],this.ctr=0,this.nonce=T.nonce,this.key=T.key,this.container=T.container,this.prepend=T.prepend,this.insertionPoint=T.insertionPoint,this.before=null}var u=o.prototype;return u.hydrate=function(S){S.forEach(this._insertTag)},u.insert=function(S){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(createStyleElement(this));var E=this.tags[this.tags.length-1];if(this.isSpeedy){var C=sheetForTag(E);try{C.insertRule(S,C.cssRules.length)}catch{}}else E.appendChild(document.createTextNode(S));this.ctr++}
29,u.flush=function(){this.tags.forEach(function(S){var E;return(E=S.parentNode)==null?void 0:E.removeChild(S)}),this.tags=[],this.ctr=0},o}(),MS="-ms-",MOZ="-moz-",WEBKIT="-webkit-",COMMENT="comm",RULESET="rule",DECLARATION="decl",IMPORT="@import",KEYFRAMES="@keyframes",LAYER="@layer",abs=Math.abs,from=String.fromCharCode,assign$a=Object.assign;function hash(o,u){return charat(o,0)^45?(((u<<2^charat(o,0))<<2^charat(o,1))<<2^charat(o,2))<<2^charat(o,3):0}function trim(o){return o.trim()}function match(o,u){return(o=u.exec(o))?o[0]:o}function replace(o,u,T){return o.replace(u,T)}function indexof(o,u){return o.indexOf(u)}function charat(o,u){return o.charCodeAt(u)|0}function substr(o,u,T){return o.slice(u,T)}function strlen(o){return o.length}function sizeof(o){return o.length}function append(o,u){return u.push(o),o}function combine(o,u){return o.map(u).join("")}var line=1,column=1,length=0,position=0,character=0,characters="";function node(o,u,T,S,E,C,_){return{value:o,root:u,parent:T,type:S,props:E,children:C,line,column,length:_,return:""}}function copy$1(o,u){return assign$a(node("",null,null,"",null,null,0),o,{length:-o.length},u)}function char(){return character}function prev(){return character=position>0?charat(characters,--position):0,column--,character===10&&(column=1,line--),character}function next(){return character=position<length?charat(characters,position++):0,column++,character===10&&(column=1,line++),character}function peek(){return charat(characters,position)}function caret(){return position}function slice(o,u){return substr(characters,o,u)}function token(o){switch(o){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(o){return line=column=1,length=strlen(characters=o),position=0,[]}function dealloc(o){return characters="",o}function delimit(o){return trim(slice(position-1,delimiter(o===91?o+2:o===40?o+1:o)))}function whitespace(o){for(;(character=peek())&&character<33;)next();return token(o)>2||token(character)>3?"":" "}function escaping(o,u){for(;--u&&next()&&!(character<48||character>102||character>57&&character<65||character>70&&character<97););return slice(o,caret()+(u<6&&peek()==32&&next()==32))}function delimiter(o){for(;next();)switch(character){case o:return position;case 34:case 39:o!==34&&o!==39&&delimiter(character);break;case 40:o===41&&delimiter(o);break;case 92:next();break}return position}function commenter(o,u){for(;next()&&o+character!==57;)if(o+character===84&&peek()===47)break;return"/*"+slice(u,position-1)+"*"+from(o===47?o:next())}function identifier(o){for(;!token(peek());)next();return slice(o,position)}function compile(o){return dealloc(parse("",null,null,null,[""],o=alloc(o),0,[0],o))}function parse(o,u,T,S,E,C,_,P,R){for(var I=0,L=0,j=_,M=0,D=0,F=0,N=1,G=1,B=1,H=0,O="",V=E,U=C,W=S,K=O;G;)switch(F=H,H=next()){case 40:if(F!=108&&charat(K,j-1)==58){indexof(K+=replace(delimit(H),"&","&\f"),"&\f")!=-1&&(B=-1);break}case 34:case 39:case 91:K+=delimit(H);break;case 9:case 10:case 13:case 32:K+=whitespace(F);break;case 92:K+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),u,T),R);break;default:K+="/"}break;case 123*N:P[I++]=strlen(K)*B;case 125*N:case 59:case 0:switch(H){case 0:case 125:G=0;case 59+L:B==-1&&(K=replace(K,/\f/g,"")),D>0&&strlen(K)-j&&append(D>32?declaration(K+";",S,T,j-1):declaration(replace(K," ","")+";",S,T,j-2),R);break;case 59:K+=";";default:if(append(W=ruleset(K,u,T,I,L,E,P,O,V=[],U=[],j),C),H===123)if(L===0)parse(K,u,W,W,V,C,j,P,U);else switch(M===99&&charat(K,3)===110?100:M){case 100:case 108:case 109:case 115:parse(o,W,W,S&&append(ruleset(o,W,W,0,0,E,P,O,E,V=[],j),U),E,U,j,P,S?V:U);break;default:parse(K,W,W,W,[""],U,0,P,U)}}I=L=D=0,N=B=1,O=K="",j=_;break;case 58:j=1+strlen(K),D=F;default:if(N<1){if(H==123)--N;else if(H==125&&N++==0&&prev()==125)continue}switch(K+=from(H),H*N){case 38:B=L>0?1:(K+="\f",-1);break;case 44:P[I++]=(strlen(K)-1)*B,B=1;break;
29case 64:peek()===45&&(K+=delimit(next())),M=peek(),L=j=strlen(O=K+=identifier(caret())),H++;break;case 45:F===45&&strlen(K)==2&&(N=0)}}return C}function ruleset(o,u,T,S,E,C,_,P,R,I,L){for(var j=E-1,M=E===0?C:[""],D=sizeof(M),F=0,N=0,G=0;F<S;++F)for(var B=0,H=substr(o,j+1,j=abs(N=_[F])),O=o;B<D;++B)(O=trim(N>0?M[B]+" "+H:replace(H,/&\f/g,M[B])))&&(R[G++]=O);return node(o,u,T,E===0?RULESET:P,R,I,L)}function comment(o,u,T){return node(o,u,T,COMMENT,from(char()),substr(o,2,-2),0)}function declaration(o,u,T,S){return node(o,u,T,DECLARATION,substr(o,0,S),substr(o,S+1,-1),S)}function serialize(o,u){for(var T="",S=sizeof(o),E=0;E<S;E++)T+=u(o[E],E,o,u)||"";return T}function stringify(o,u,T,S){switch(o.type){case LAYER:if(o.children.length)break;case IMPORT:case DECLARATION:return o.return=o.return||o.value;case COMMENT:return"";case KEYFRAMES:return o.return=o.value+"{"+serialize(o.children,S)+"}";case RULESET:o.value=o.props.join(",")}return strlen(T=serialize(o.children,S))?o.return=o.value+"{"+T+"}":""}function middleware(o){var u=sizeof(o);return function(T,S,E,C){for(var _="",P=0;P<u;P++)_+=o[P](T,S,E,C)||"";return _}}function rulesheet(o){return function(u){u.root||(u=u.return)&&o(u)}}function memoize$1(o){var u=Object.create(null);return function(T){return u[T]===void 0&&(u[T]=o(T)),u[T]}}var identifierWithPointTracking=function(u,T,S){for(var E=0,C=0;E=C,C=peek(),E===38&&C===12&&(T[S]=1),!token(C);)next();return slice(u,position)},toRules=function(u,T){var S=-1,E=44;do switch(token(E)){case 0:E===38&&peek()===12&&(T[S]=1),u[S]+=identifierWithPointTracking(position-1,T,S);break;case 2:u[S]+=delimit(E);break;case 4:if(E===44){u[++S]=peek()===58?"&\f":"",T[S]=u[S].length;break}default:u[S]+=from(E)}while(E=next());return u},getRules=function(u,T){return dealloc(toRules(alloc(u),T))},fixedElements=new WeakMap,compat=function(u){if(!(u.type!=="rule"||!u.parent||u.length<1)){for(var T=u.value,S=u.parent,E=u.column===S.column&&u.line===S.line;S.type!=="rule";)if(S=S.parent,!S)return;if(!(u.props.length===1&&T.charCodeAt(0)!==58&&!fixedElements.get(S))&&!E){fixedElements.set(u,!0);for(var C=[],_=getRules(T,C),P=S.props,R=0,I=0;R<_.length;R++)for(var L=0;L<P.length;L++,I++)u.props[I]=C[R]?_[R].replace(/&\f/g,P[L]):P[L]+" "+_[R]}}},removeLabel=function(u){if(u.type==="decl"){var T=u.value;T.charCodeAt(0)===108&&T.charCodeAt(2)===98&&(u.return="",u.value="")}};function prefix(o,u){switch(hash(o,u)){case 5103:return WEBKIT+"print-"+o+o;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return WEBKIT+o+o;case 5349:case 4246:case 4810:case 6968:case 2756:return WEBKIT+o+MOZ+o+MS+o+o;case 6828:case 4268:return WEBKIT+o+MS+o+o;case 6165:return WEBKIT+o+MS+"flex-"+o+o;case 5187:return WEBKIT+o+replace(o,/(\w+).+(:[^]+)/,WEBKIT+"box-$1$2"+MS+"flex-$1$2")+o;case 5443:return WEBKIT+o+MS+"flex-item-"+replace(o,/flex-|-self/,"")+o;case 4675:return WEBKIT+o+MS+"flex-line-pack"+replace(o,/align-content|flex-|-self/,"")+o;case 5548:return WEBKIT+o+MS+replace(o,"shrink","negative")+o;case 5292:return WEBKIT+o+MS+replace(o,"basis","preferred-size")+o;case 6060:return WEBKIT+"box-"+replace(o,"-grow","")+WEBKIT+o+MS+replace(o,"grow","positive")+o;case 4554:return WEBKIT+replace(o,/([^-])(transform)/g,"$1"+WEBKIT+"$2")+o;case 6187:return replace(replace(replace(o,/(zoom-|grab)/,WEBKIT+"$1"),/(image-set)/,WEBKIT+"$1"),o,"")+o;case 5495:case 3959:return replace(o,/(image-set\([^]*)/,WEBKIT+"$1$`$1");case 4968:return replace(replace(o,/(.+:)(flex-)?(.*)/,WEBKIT+"box-pack:$3"+MS+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+WEBKIT+o+o;case 4095:case 3583:case 4068:case 2532:return replace(o,/(.+)-inline(.+)/,WEBKIT+"$1$2")+o;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(o)-1-u>6)switch(charat(o,u+1)){case 109:if(charat(o,u+4)!==45)break;case 102:return replace(o,/(.+:)(.+)-([^]+)/,"$1"+WEBKIT+"$2-$3$1"+MOZ+(charat(o,u+3)==108?"$3":"$2-$3"))+o;case 115:return~indexof(o,"stretch")?prefix(replace(o,"stretch","fill-available"),u)+o:o}break;case 4949:if(charat(o,u+1)!==115)break;case 6444:switch(charat(o,strlen(o)-3-(~indexof(o,"!important")&&10))){case 107:return replace(o,":",":"+WEBKIT)+o;case 101:return replace(o,/(.+:)([^;!]+)(;|!.+)?/,"$1"+WEBKIT+(charat(o,14)===45?"inline-":"")+"box$3$1"+WEBKIT+"$2$3$1"+MS+"$2box$3")+o}break;case 5936:switch(charat(o,u+11)){case 114:return WEBKIT+o+MS+replace(o,/[svh]\w+-[tblr]{2}/,"tb")+o;case 108:return WEBKIT+o+MS+replace(o,/[svh]\w+-[tblr]{2}/,"tb-rl")+o;case 45:return WEBKIT+o+MS+replace(o,/[svh]\w+-[tblr]{2}/,"lr")+o}return WEBKIT+o+MS+o+o}return o}var prefixer=function(u,T,S,E){if(u.length>-1&&!u.return)switch(u.type){case DECLARATION:u.return=prefix(u.value,u.length);break;case KEYFRAMES:return serialize([copy$1(u,{value:replace(u.value,"@","@"+WEBKIT)})],E);case RULESET:if(u.length)return combine(u.props,function(C){switch(match(C,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy$1(u,{props:[replace(C,/:(read-\w+)/,":"+MOZ+"$1")]})],E);case"::placeholder":return serialize([copy$1(u,{props:[replace(C,/:(plac\w+)/,":"+WEBKIT+"input-$1")]}),copy$1(u,{props:[replace(C,/:(plac\w+)/,":"+MOZ+"$1")]}),copy$1(u,{props:[replace(C,/:(plac\w+)/,MS+"input-$1")]})],E)}return""})}},defaultStylisPlugins=[prefixer],createCache=function(u){var T=u.key;if(T==="css"){var S=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(S,function(N){var G=N.getAttribute("data-emotion");G.indexOf(" ")!==-1&&(document.head.appendChild(N),N.setAttribute("data-s",""))})}var E=u.stylisPlugins||defaultStylisPlugins,C={},_,P=[];_=u.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+T+' "]'),function(N){for(var G=N.getAttribute("data-emotion").split(" "),B=1;B<G.length;B++)C[G[B]]=!0;P.push(N)});var R,I=[compat,removeLabel];{var L,j=[stringify,rulesheet(function(N){L.insert(N)})],M=middleware(I.concat(E,j)),D=function(G){return serialize(compile(G),M)};R=function(G,B,H,O){L=H,D(G?G+"{"+B.styles+"}":B.styles),O&&(F.inserted[B.name]=!0)}}var F={key:T,sheet:new StyleSheet({key:T,container:_,nonce:u.nonce,speedy:u.speedy,prepend:u.prepend,insertionPoint:u.insertionPoint}),nonce:u.nonce,inserted:C,registered:{},insert:R};return F.sheet.hydrate(P),F},reactIs$2={exports:{}},reactIs_production_min={};/** @license React v16.13.1 30 * react-is.production.min.js 31 * 32 * Copyright (c) Facebook, Inc. and its affiliates. 33 * 34 * This source code is licensed under the MIT license found in the 35 * LICENSE file in the root directory of this source tree. 36 */var b=typeof Symbol=="function"&&Symbol.for,c$1=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e$1=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n$1=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?Symbol.for("react.suspense_list"):60120,r$2=b?Symbol.for("react.memo"):60115,t$1=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119;function z(o){if(typeof o=="object"&&o!==null){var u=o.$$typeof;switch(u){case c$1:switch(o=o.type,o){case l:case m:case e$1:case g:case f:case p:return o;default:switch(o=o&&o.$$typeof,o){case k:case n$1:case t$1:case r$2:case h:return o;default:return u}}case d:return u}}}function A(o){return z(o)===m}reactIs_production_min.AsyncMode=l;reactIs_production_min.ConcurrentMode=m;reactIs_production_min.ContextConsumer=k;reactIs_production_min.ContextProvider=h;reactIs_production_min.Element=c$1;reactIs_production_min.ForwardRef=n$1;reactIs_production_min.Fragment=e$1;reactIs_production_min.Lazy=t$1;reactIs_production_min.Memo=r$2;reactIs_production_min.Portal=d;reactIs_production_min.Profiler=g;reactIs_production_min.StrictMode=f;reactIs_production_min.Suspense=p;reactIs_production_min.isAsyncMode=function(o){return A(o)||z(o)===l};reactIs_production_min.isConcurrentMode=A;reactIs_production_min.isContextConsumer=function(o){return z(o)===k};reactIs_production_min.isContextProvider=function(o){return z(o)===h};reactIs_production_min.isElement=function(o){return typeof o=="object"&&o!==null&&o.$$typeof===c$1};reactIs_production_min.isForwardRef=function(o){return z(o)===n$1};reactIs_production_min.isFragment=function(o){return z(o)===e$1};reactIs_production_min.isLazy=function(o){return z(o)===t$1};reactIs_production_min.isMemo=function(o){return z(o)===r$2};reactIs_production_min.isPortal=function(o){return z(o)===d};reactIs_production_min.isProfiler=function(o){return z(o)===g};reactIs_production_min.isStrictMode=function(o){return z(o)===f};reactIs_production_min.isSuspense=function(o){return z(o)===p};reactIs_production_min.isValidElementType=function(o){return typeof o=="str
36ing"||typeof o=="function"||o===e$1||o===m||o===g||o===f||o===p||o===q||typeof o=="object"&&o!==null&&(o.$$typeof===t$1||o.$$typeof===r$2||o.$$typeof===h||o.$$typeof===k||o.$$typeof===n$1||o.$$typeof===w||o.$$typeof===x||o.$$typeof===y||o.$$typeof===v)};reactIs_production_min.typeOf=z;reactIs$2.exports=reactIs_production_min;var reactIsExports$1=reactIs$2.exports,reactIs$1=reactIsExports$1,FORWARD_REF_STATICS={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},MEMO_STATICS={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},TYPE_STATICS={};TYPE_STATICS[reactIs$1.ForwardRef]=FORWARD_REF_STATICS;TYPE_STATICS[reactIs$1.Memo]=MEMO_STATICS;var isBrowser$1=!0;function getRegisteredStyles(o,u,T){var S="";return T.split(" ").forEach(function(E){o[E]!==void 0?u.push(o[E]+";"):E&&(S+=E+" ")}),S}var registerStyles=function(u,T,S){var E=u.key+"-"+T.name;(S===!1||isBrowser$1===!1)&&u.registered[E]===void 0&&(u.registered[E]=T.styles)},insertStyles=function(u,T,S){registerStyles(u,T,S);var E=u.key+"-"+T.name;if(u.inserted[T.name]===void 0){var C=T;do u.insert(T===C?"."+E:"",C,u.sheet,!0),C=C.next;while(C!==void 0)}};function murmur2(o){for(var u=0,T,S=0,E=o.length;E>=4;
36++S,E-=4)T=o.charCodeAt(S)&255|(o.charCodeAt(++S)&255)<<8|(o.charCodeAt(++S)&255)<<16|(o.charCodeAt(++S)&255)<<24,T=(T&65535)*1540483477+((T>>>16)*59797<<16),T^=T>>>24,u=(T&65535)*1540483477+((T>>>16)*59797<<16)^(u&65535)*1540483477+((u>>>16)*59797<<16);switch(E){case 3:u^=(o.charCodeAt(S+2)&255)<<16;case 2:u^=(o.charCodeAt(S+1)&255)<<8;case 1:u^=o.charCodeAt(S)&255,u=(u&65535)*1540483477+((u>>>16)*59797<<16)}return u^=u>>>13,u=(u&65535)*1540483477+((u>>>16)*59797<<16),((u^u>>>15)>>>0).toString(36)}var unitlessKeys={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},hyphenateRegex=/[A-Z]|^ms/g,animationRegex=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function(u){return u.charCodeAt(1)===45},isProcessableValue=function(u){return u!=null&&typeof u!="boolean"},processStyleName=memoize$1(function(o){return isCustomProperty(o)?o:o.replace(hyphenateRegex,"-$&").toLowerCase()}),processStyleValue=function(u,T){switch(u){case"animation":case"animationName":if(typeof T=="string")return T.replace(animationRegex,function(S,E,C){return cursor={name:E,styles:C,next:cursor},E})}return unitlessKeys[u]!==1&&!isCustomProperty(u)&&typeof T=="number"&&T!==0?T+"px":T};function handleInterpolation(o,u,T){if(T==null)return"";var S=T;if(S.__emotion_styles!==void 0)return S;switch(typeof T){case"boolean":return"";case"object":{var E=T;if(E.anim===1)return cursor={name:E.name,styles:E.styles,next:cursor},E.name;var C=T;if(C.styles!==void 0){var _=C.next;if(_!==void 0)for(;_!==void 0;)cursor={name:_.name,styles:_.styles,next:cursor},_=_.next;var P=C.styles+";";return P}return createStringFromObject(o,u,T)}case"function":{if(o!==void 0){var R=cursor,I=T(o);return cursor=R,handleInterpolation(o,u,I)}break}}var L=T;if(u==null)return L;var j=u[L];return j!==void 0?j:L}function createStringFromObject(o,u,T){var S="";if(Array.isArray(T))for(var E=0;E<T.length;E++)S+=handleInterpolation(o,u,T[E])+";";else for(var C in T){var _=T[C];if(typeof _!="object"){var P=_;u!=null&&u[P]!==void 0?S+=C+"{"+u[P]+"}":isProcessableValue(P)&&(S+=processStyleName(C)+":"+processStyleValue(C,P)+";")}else if(Array.isArray(_)&&typeof _[0]=="string"&&(u==null||u[_[0]]===void 0))for(var R=0;R<_.length;R++)isProcessableValue(_[R])&&(S+=processStyleName(C)+":"+processStyleValue(C,_[R])+";");else{var I=handleInterpolation(o,u,_);switch(C){case"animation":case"animationName":{S+=processStyleName(C)+":"+I+";";break}default:S+=C+"{"+I+"}"}}}return S}var labelPattern=/label:\s*([^\s;{]+)\s*(;|$)/g,cursor;function serializeStyles(o,u,T){if(o.length===1&&typeof o[0]=="object"&&o[0]!==null&&o[0].styles!==void 0)return o[0];var S=!0,E="";cursor=void 0;var C=o[0];if(C==null||C.raw===void 0)S=!1,E+=handleInterpolation(T,u,C);else{var _=C;E+=_[0]}for(var P=1;P<o.length;P++)if(E+=handleInterpolation(T,u,o[P]),S){var R=C;E+=R[P]}labelPattern.lastIndex=0;for(var I="",L;(L=labelPattern.exec(E))!==null;)I+="-"+L[1];var j=murmur2(E)+I;return{name:j,styles:E,next:cursor}}var syncFallback=function(u){return u()},useInsertionEffect=React.useInsertionEffect?React.useInsertionEffect:!1,useInsertionEffectAlwaysWithSyncFallback=useInsertionEffect||syncFallback,useInsertionEffectWithLayoutFallback=useInsertionEffect||reactExports.useLayoutEffect,EmotionCacheContext=reactExports.createContext(typeof HTMLElement<"u"?createCache({key:"css"}):null);EmotionCacheContext.Provider;var withEmotionCache=function(u){return reactExports.forwardRef(function(T,S){var E=reactExports.useContext(EmotionCacheContext);return u(T,E,S)})},ThemeContext$1=reactExports.createContext({}),hasOwn={}.hasOwnProperty,typePropName="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",createEmotionProps=function(u,T){var S={};for(var E in T)hasOwn.call(T,E)&&(S[E]=T[E]);return S[typePropName]=u,S}
36,Insertion$1=function(u){var T=u.cache,S=u.serialized,E=u.isStringTag;return registerStyles(T,S,E),useInsertionEffectAlwaysWithSyncFallback(function(){return insertStyles(T,S,E)}),null},Emotion=withEmotionCache(function(o,u,T){var S=o.css;typeof S=="string"&&u.registered[S]!==void 0&&(S=u.registered[S]);var E=o[typePropName],C=[S],_="";typeof o.className=="string"?_=getRegisteredStyles(u.registered,C,o.className):o.className!=null&&(_=o.className+" ");var P=serializeStyles(C,void 0,reactExports.useContext(ThemeContext$1));_+=u.key+"-"+P.name;var R={};for(var I in o)hasOwn.call(o,I)&&I!=="css"&&I!==typePropName&&(R[I]=o[I]);return R.className=_,T&&(R.ref=T),reactExports.createElement(reactExports.Fragment,null,reactExports.createElement(Insertion$1,{cache:u,serialized:P,isStringTag:typeof E=="string"}),reactExports.createElement(E,R))}),Emotion$1=Emotion,jsx=function(u,T){var S=arguments;if(T==null||!hasOwn.call(T,"css"))return reactExports.createElement.apply(void 0,S);var E=S.length,C=new Array(E);C[0]=Emotion$1,C[1]=createEmotionProps(u,T);for(var _=2;_<E;_++)C[_]=S[_];return reactExports.createElement.apply(null,C)};(function(o){var u;u||(u=o.JSX||(o.JSX={}))})(jsx||(jsx={}));var Global=withEmotionCache(function(o,u){var T=o.styles,S=serializeStyles([T],void 0,reactExports.useContext(ThemeContext$1)),E=reactExports.useRef();return useInsertionEffectWithLayoutFallback(function(){var C=u.key+"-global",_=new u.sheet.constructor({key:C,nonce:u.sheet.nonce,container:u.sheet.container,speedy:u.sheet.isSpeedy}),P=!1,R=document.querySelector('style[data-emotion="'+C+" "+S.name+'"]');return u.sheet.tags.length&&(_.before=u.sheet.tags[0]),R!==null&&(P=!0,R.setAttribute("data-emotion",C),_.hydrate([R])),E.current=[_,P],function(){_.flush()}},[u]),useInsertionEffectWithLayoutFallback(function(){var C=E.current,_=C[0],P=C[1];if(P){C[1]=!1;return}if(S.next!==void 0&&insertStyles(u,S.next,!0),_.tags.length){var R=_.tags[_.tags.length-1].nextElementSibling;_.before=R,_.flush()}u.insert("",S,_,!1)},[u,S.name]),null});function css(){for(var o=arguments.length,u=new Array(o),T=0;T<o;T++)u[T]=arguments[T];return serializeStyles(u)}function keyframes$1(){var o=css.apply(void 0,arguments),u="animation-"+o.name;return{name:u,styles:"@keyframes "+u+"{"+o.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}var reactPropsRegex=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRen
36dering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,isPropValid=memoize$1(function(o){return reactPropsRegex.test(o)||o.charCodeAt(0)===111&&o.charCodeAt(1)===110&&o.charCodeAt(2)<91}),testOmitPropsOnStringTag=isPropValid,testOmitPropsOnComponent=function(u){return u!=="theme"},getDefaultShouldForwardProp=function(u){return typeof u=="string"&&u.charCodeAt(0)>96?testOmitPropsOnStringTag:testOmitPropsOnComponent},composeShouldForwardProps=function(u,T,S){var E;if(T){var C=T.shouldForwardProp;E=u.__emotion_forwardProp&&C?function(_){return u.__emotion_forwardProp(_)&&C(_)}:C}return typeof E!="function"&&S&&(E=u.__emotion_forwardProp),E},Insertion=function(u){var T=u.cache,S=u.serialized,E=u.isStringTag;return registerStyles(T,S,E),useInsertionEffectAlwaysWithSyncFallback(function(){return insertStyles(T,S,E)}),null},createStyled$1=function o(u,T){var S=u.__emotion_real===u,E=S&&u.__emotion_base||u,C,_;T!==void 0&&(C=T.label,_=T.target);var P=composeShouldForwardProps(u,T,S),R=P||getDefaultShouldForwardProp(E),I=!R("as");return function(){var L=arguments,j=S&&u.__emotion_styles!==void 0?u.__emotion_styles.slice(0):[];if(C!==void 0&&j.push("label:"+C+";"),L[0]==null||L[0].raw===void 0)j.push.apply(j,L);else{var M=L[0];j.push(M[0]);for(var D=L.length,F=1;F<D;F++)j.push(L[F],M[F])}var N=withEmotionCache(function(G,B,H){var O=I&&G.as||E,V="",U=[],W=G;if(G.theme==null){W={};for(var K in G)W[K]=G[K];W.theme=reactExports.useContext(ThemeContext$1)}typeof G.className=="string"?V=getRegisteredStyles(B.registered,U,G.className):G.className!=null&&(V=G.className+" ");var Y=serializeStyles(j.concat(U),B.registered,W);V+=B.key+"-"+Y.name,_!==void 0&&(V+=" "+_);var ee=I&&P===void 0?getDefaultShouldForwardProp(O):R,oe={};for(var se in G)I&&se==="as"||ee(se)&&(oe[se]=G[se]);return oe.className=V,H&&(oe.ref=H),reactExports.createElement(reactExports.Fragment,null,reactExports.createElement(Insertion,{cache:B,serialized:Y,isStringTag:typeof O=="string"}),reactExports.createElement(O,oe))});return N.displayName=C!==void 0?C:"Styled("+(typeof E=="string"?E:E.displayName||E.name||"Component")+")",N.defaultProps=u.defaultProps,N.__emotion_real=N,N.__emotion_base=E,N.__emotion_styles=j,N.__emotion_forwardProp=P,Object.defineProperty(N,"toString",{value:function(){return"."+_}}),N.withComponent=function(G,B){var H=o(G,_extends$3({},T,B,{shouldForwardProp:composeShouldForwardProps(N,B,!0)}));return H.apply(void 0,j)},N}},tags=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],styled$2=createStyled$1.bind(null);
36tags.forEach(function(o){styled$2[o]=styled$2(o)});function isEmpty$2(o){return o==null||Object.keys(o).length===0}function GlobalStyles$2(o){const{styles:u,defaultTheme:T={}}=o,S=typeof u=="function"?E=>u(isEmpty$2(E)?T:E):u;return jsxRuntimeExports.jsx(Global,{styles:S})}function styled$1(o,u){return styled$2(o,u)}function internal_mutateStyles(o,u){Array.isArray(o.__emotion_styles)&&(o.__emotion_styles=u(o.__emotion_styles))}const wrapper=[];function internal_serializeStyles(o){return wrapper[0]=o,serializeStyles(wrapper)}var reactIs={exports:{}},reactIs_production={};/** 37 * @license React 38 * react-is.production.js 39 * 40 * Copyright (c) Meta Platforms, Inc. and affiliates. 41 * 42 * This source code is licensed under the MIT license found in the 43 * LICENSE file in the root directory of this source tree. 44 */var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition"),REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference");function typeOf(o){if(typeof o=="object"&&o!==null){var u=o.$$typeof;switch(u){case REACT_ELEMENT_TYPE:switch(o=o.type,o){case REACT_FRAGMENT_TYPE:case REACT_PROFILER_TYPE:case REACT_STRICT_MODE_TYPE:case REACT_SUSPENSE_TYPE:case REACT_SUSPENSE_LIST_TYPE:case REACT_VIEW_TRANSITION_TYPE:return o;default:switch(o=o&&o.$$typeof,o){case REACT_CONTEXT_TYPE:case REACT_FORWARD_REF_TYPE:case REACT_LAZY_TYPE:case REACT_MEMO_TYPE:return o;case REACT_CONSUMER_TYPE:return o;default:return u}}case REACT_PORTAL_TYPE:return u}}}reactIs_production.ContextConsumer=REACT_CONSUMER_TYPE;reactIs_production.ContextProvider=REACT_CONTEXT_TYPE;reactIs_production.Element=REACT_ELEMENT_TYPE;reactIs_production.ForwardRef=REACT_FORWARD_REF_TYPE;reactIs_production.Fragment=REACT_FRAGMENT_TYPE;reactIs_production.Lazy=REACT_LAZY_TYPE;reactIs_production.Memo=REACT_MEMO_TYPE;reactIs_production.Portal=REACT_PORTAL_TYPE;reactIs_production.Profiler=REACT_PROFILER_TYPE;reactIs_production.StrictMode=REACT_STRICT_MODE_TYPE;reactIs_production.Suspense=REACT_SUSPENSE_TYPE;reactIs_production.SuspenseList=REACT_SUSPENSE_LIST_TYPE;reactIs_production.isContextConsumer=function(o){return typeOf(o)===REACT_CONSUMER_TYPE};reactIs_production.isContextProvider=function(o){return typeOf(o)===REACT_CONTEXT_TYPE};reactIs_production.isElement=function(o){return typeof o=="object"&&o!==null&&o.$$typeof===REACT_ELEMENT_TYPE};reactIs_production.isForwardRef=function(o){return typeOf(o)===REACT_FORWARD_REF_TYPE};reactIs_production.isFragment=function(o){return typeOf(o)===REACT_FRAGMENT_TYPE};reactIs_production.isLazy=function(o){return typeOf(o)===REACT_LAZY_TYPE};reactIs_production.isMemo=function(o){return typeOf(o)===REACT_MEMO_TYPE};reactIs_production.isPortal=function(o){return typeOf(o)===REACT_PORTAL_TYPE};reactIs_production.isProfiler=function(o){return typeOf(o)===REACT_PROFILER_TYPE};reactIs_production.isStrictMode=function(o){return typeOf(o)===REACT_STRICT_MODE_TYPE};reactIs_production.isSuspense=function(o){return typeOf(o)===REACT_SUSPENSE_TYPE};reactIs_production.isSuspenseList=function(o){return typeOf(o)===REACT_SUSPENSE_LIST_TYPE};reactIs_production.isValidElementType=function(o){return typeof o=="string"||typeof o=="function"||o===REACT_FRAGMENT_TYPE||o===REACT_PROFILER_TYPE||o===REACT_STRICT_MODE_TYPE||o===REACT_SUSPENSE_TYPE||o===REACT_SUSPENSE_LIST_TYPE||typeof o=="object"&&o!==null&&(o.$$typeof===REACT_LAZY_TYPE||o.$$typeof===REACT_MEMO_TYPE||o.$$typeof===REACT_CONTEXT_TYPE||o.$$typeof===REACT_CONSUMER_TYPE||o.$$typeof===REACT_FORWARD_REF_TYPE||o.$$typeof===REACT_CLIENT_REFERENCE||o.getModuleId!==void 0)};reactIs_production.typeOf=typeOf;reactIs.exports=reactIs_production;var reactIsExports=reactIs.exports;function isPlainObject(o){if(typeof o!="object"||o===null)return!1;
44const u=Object.getPrototypeOf(o);return(u===null||u===Object.prototype||Object.getPrototypeOf(u)===null)&&!(Symbol.toStringTag in o)&&!(Symbol.iterator in o)}function deepClone(o){if(reactExports.isValidElement(o)||reactIsExports.isValidElementType(o)||!isPlainObject(o))return o;const u={};return Object.keys(o).forEach(T=>{u[T]=deepClone(o[T])}),u}function deepmerge(o,u,T={clone:!0}){const S=T.clone?{...o}:o;return isPlainObject(o)&&isPlainObject(u)&&Object.keys(u).forEach(E=>{reactExports.isValidElement(u[E])||reactIsExports.isValidElementType(u[E])?S[E]=u[E]:isPlainObject(u[E])&&Object.prototype.hasOwnProperty.call(o,E)&&isPlainObject(o[E])?S[E]=deepmerge(o[E],u[E],T):T.clone?S[E]=isPlainObject(u[E])?deepClone(u[E]):u[E]:S[E]=u[E]}),S}const sortBreakpointsValues=o=>{const u=Object.keys(o).map(T=>({key:T,val:o[T]}))||[];return u.sort((T,S)=>T.val-S.val),u.reduce((T,S)=>({...T,[S.key]:S.val}),{})};function createBreakpoints(o){const{values:u={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:T="px",step:S=5,...E}=o,C=sortBreakpointsValues(u),_=Object.keys(C);function P(M){return`@media (min-width:${typeof u[M]=="number"?u[M]:M}${T})`}function R(M){return`@media (max-width:${(typeof u[M]=="number"?u[M]:M)-S/100}${T})`}function I(M,D){const F=_.indexOf(D);return`@media (min-width:${typeof u[M]=="number"?u[M]:M}${T}) and (max-width:${(F!==-1&&typeof u[_[F]]=="number"?u[_[F]]:D)-S/100}${T})`}function L(M){return _.indexOf(M)+1<_.length?I(M,_[_.indexOf(M)+1]):P(M)}function j(M){const D=_.indexOf(M);return D===0?P(_[1]):D===_.length-1?R(_[D]):I(M,_[_.indexOf(M)+1]).replace("@media","@media not all and")}return{keys:_,values:C,up:P,down:R,between:I,only:L,not:j,unit:T,...E}}function sortContainerQueries(o,u){if(!o.containerQueries)return u;const T=Object.keys(u).filter(S=>S.startsWith("@container")).sort((S,E)=>{var _,P;const C=/min-width:\s*([0-9.]+)/;return+(((_=S.match(C))==null?void 0:_[1])||0)-+(((P=E.match(C))==null?void 0:P[1])||0)});return T.length?T.reduce((S,E)=>{const C=u[E];return delete S[E],S[E]=C,S},{...u}):u}function isCqShorthand(o,u){return u==="@"||u.startsWith("@")&&(o.some(T=>u.startsWith(`@${T}`))||!!u.match(/^@\d/))}function getContainerQuery(o,u){const T=u.match(/^@([^/]+)?\/?(.+)?$/);if(!T)return null;const[,S,E]=T,C=Number.isNaN(+S)?S||0:+S;return o.containerQueries(E).up(C)}function cssContainerQueries(o){const u=(C,_)=>C.replace("@media",_?`@container ${_}`:"@container");function T(C,_){C.up=(...P)=>u(o.breakpoints.up(...P),_),C.down=(...P)=>u(o.breakpoints.down(...P),_),C.between=(...P)=>u(o.breakpoints.between(...P),_),C.only=(...P)=>u(o.breakpoints.only(...P),_),C.not=(...P)=>{const R=u(o.breakpoints.not(...P),_);return R.includes("not all and")?R.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):R}}const S={},E=C=>(T(S,C),S);return T(E),{...o,containerQueries:E}}const shape={borderRadius:4};function merge(o,u){return u?deepmerge(o,u,{clone:!1}):o}const values$1={xs:0,sm:600,md:900,lg:1200,xl:1536},defaultBreakpoints={keys:["xs","sm","md","lg","xl"],up:o=>`@media (min-width:${values$1[o]}px)`},defaultContainerQueries={containerQueries:o=>({up:u=>{let T=typeof u=="number"?u:values$1[u]||u;return typeof T=="number"&&(T=`${T}px`),o?`@container ${o} (min-width:${T})`:`@container (min-width:${T})`}})};function handleBreakpoints(o,u,T){const S=o.theme||{};if(Array.isArray(u)){const C=S.breakpoints||defaultBreakpoints;return u.reduce((_,P,R)=>(_[C.up(C.keys[R])]=T(u[R]),_),{})}if(typeof u=="object"){const C=S.breakpoints||defaultBreakpoints;return Object.keys(u).reduce((_,P)=>{if(isCqShorthand(C.keys,P)){const R=getContainerQuery(S.containerQueries?S:defaultContainerQueries,P);R&&(_[R]=T(u[P],P))}else if(Object.keys(C.values||values$1).includes(P)){const R=C.up(P);_[R]=T(u[P],P)}else{const R=P;_[R]=u[R]}return _},{})}return T(u)}function createEmptyBreakpointObject(o={}){var T;return((T=o.keys)==null?void 0:T.reduce((S,E)=>{const C=o.up(E);return S[C]={},S},{}))||{}}function removeUnusedBreakpoints(o,u){return o.reduce((T,S)=>{const E=T[S];return(!E||Object.keys(E).length===0)&&delete T[S],T},u)}function capitalize(o){if(typeof o!="string")throw new Error(formatMuiErrorMessage(7));return o.charAt(0).toUpperCase()+o.slice(1)}function getPath$1(o,u,T=!0){if(!u||typeof u!="string")return null;if(o&&o.vars&&T){const S=`vars.${u}`.split(".").reduce((E,C)=>E&&E[C]?E[C]:null,o);if(S!=null)return S}return u.split(".").reduce((S,E)=>S&&S[E]!=null?S[E]:null,o)}function getStyleValue$1(o,u,T,S=T){let E;return typeof o=="function"?E=o(T):Array.isArray(o)?E=o[T]||S:E=getPath$1(o,T)||S,u&&(E=u(E,S,o)),E}function style$1(o){const{prop:u,cssProperty:T=o.prop,themeKey:S,transform:E}=o,C=_=>{if(_[u]==null)return null;const P=_[u],R=_.theme,I=getPath$1(R,S)||{};return handleBreakpoints(_,P,j=>{let M=getStyleValue$1(I,E,j);return j===M&&typeof j=="string"&&(M=getStyleValue$1(I,E,`${u}${j==="default"?"":capitalize(j)}`,j)),T===!1?M:{[T]:M}})};return C.propTypes={},C.filterProps=[u],C}
44function memoize(o){const u={};return T=>(u[T]===void 0&&(u[T]=o(T)),u[T])}const properties={m:"margin",p:"padding"},directions={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},aliases={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},getCssProperties=memoize(o=>{if(o.length>2)if(aliases[o])o=aliases[o];else return[o];const[u,T]=o.split(""),S=properties[u],E=directions[T]||"";return Array.isArray(E)?E.map(C=>S+C):[S+E]}),marginKeys=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],paddingKeys=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...marginKeys,...paddingKeys];function createUnaryUnit(o,u,T,S){const E=getPath$1(o,u,!0)??T;return typeof E=="number"||typeof E=="string"?C=>typeof C=="string"?C:typeof E=="string"?E.startsWith("var(")&&C===0?0:E.startsWith("var(")&&C===1?E:`calc(${C} * ${E})`:E*C:Array.isArray(E)?C=>{if(typeof C=="string")return C;const _=Math.abs(C),P=E[_];return C>=0?P:typeof P=="number"?-P:typeof P=="string"&&P.startsWith("var(")?`calc(-1 * ${P})`:`-${P}`}:typeof E=="function"?E:()=>{}}function createUnarySpacing(o){return createUnaryUnit(o,"spacing",8)}function getValue(o,u){return typeof u=="string"||u==null?u:o(u)}function getStyleFromPropValue(o,u){return T=>o.reduce((S,E)=>(S[E]=getValue(u,T),S),{})}function resolveCssProperty(o,u,T,S){if(!u.includes(T))return null;const E=getCssProperties(T),C=getStyleFromPropValue(E,S),_=o[T];return handleBreakpoints(o,_,C)}function style(o,u){const T=createUnarySpacing(o.theme);return Object.keys(o).map(S=>resolveCssProperty(o,u,S,T)).reduce(merge,{})}function margin(o){return style(o,marginKeys)}margin.propTypes={};margin.filterProps=marginKeys;function padding(o){return style(o,paddingKeys)}padding.propTypes={};padding.filterProps=paddingKeys;function createSpacing(o=8,u=createUnarySpacing({spacing:o})){if(o.mui)return o;const T=(...S)=>(S.length===0?[1]:S).map(C=>{const _=u(C);return typeof _=="number"?`${_}px`:_}).join(" ");return T.mui=!0,T}function compose(...o){const u=o.reduce((S,E)=>(E.filterProps.forEach(C=>{S[C]=E}),S),{}),T=S=>Object.keys(S).reduce((E,C)=>u[C]?merge(E,u[C](S)):E,{});return T.propTypes={},T.filterProps=o.reduce((S,E)=>S.concat(E.filterProps),[]),T}function borderTransform(o){return typeof o!="number"?o:`${o}px solid`}function createBorderStyle(o,u){return style$1({prop:o,themeKey:"borders",transform:u})}const border=createBorderStyle("border",borderTransform),borderTop=createBorderStyle("borderTop",borderTransform),borderRight=createBorderStyle("borderRight",borderTransform),borderBottom=createBorderStyle("borderBottom",borderTransform),borderLeft=createBorderStyle("borderLeft",borderTransform),borderColor=createBorderStyle("borderColor"),borderTopColor=createBorderStyle("borderTopColor"),borderRightColor=createBorderStyle("borderRightColor"),borderBottomColor=createBorderStyle("borderBottomColor"),borderLeftColor=createBorderStyle("borderLeftColor"),outline=createBorderStyle("outline",borderTransform),outlineColor=createBorderStyle("outlineColor"),borderRadius=o=>
44{if(o.borderRadius!==void 0&&o.borderRadius!==null){const u=createUnaryUnit(o.theme,"shape.borderRadius",4),T=S=>({borderRadius:getValue(u,S)});return handleBreakpoints(o,o.borderRadius,T)}return null};borderRadius.propTypes={};borderRadius.filterProps=["borderRadius"];compose(border,borderTop,borderRight,borderBottom,borderLeft,borderColor,borderTopColor,borderRightColor,borderBottomColor,borderLeftColor,borderRadius,outline,outlineColor);const gap=o=>{if(o.gap!==void 0&&o.gap!==null){const u=createUnaryUnit(o.theme,"spacing",8),T=S=>({gap:getValue(u,S)});return handleBreakpoints(o,o.gap,T)}return null};gap.propTypes={};gap.filterProps=["gap"];const columnGap=o=>{if(o.columnGap!==void 0&&o.columnGap!==null){const u=createUnaryUnit(o.theme,"spacing",8),T=S=>({columnGap:getValue(u,S)});return handleBreakpoints(o,o.columnGap,T)}return null};columnGap.propTypes={};columnGap.filterProps=["columnGap"];const rowGap=o=>{if(o.rowGap!==void 0&&o.rowGap!==null){const u=createUnaryUnit(o.theme,"spacing",8),T=S=>({rowGap:getValue(u,S)});return handleBreakpoints(o,o.rowGap,T)}return null};rowGap.propTypes={};rowGap.filterProps=["rowGap"];const gridColumn=style$1({prop:"gridColumn"}),gridRow=style$1({prop:"gridRow"}),gridAutoFlow=style$1({prop:"gridAutoFlow"}),gridAutoColumns=style$1({prop:"gridAutoColumns"}),gridAutoRows=style$1({prop:"gridAutoRows"}),gridTemplateColumns=style$1({prop:"gridTemplateColumns"}),gridTemplateRows=style$1({prop:"gridTemplateRows"}),gridTemplateAreas=style$1({prop:"gridTemplateAreas"}),gridArea=style$1({prop:"gridArea"});compose(gap,columnGap,rowGap,gridColumn,gridRow,gridAutoFlow,gridAutoColumns,gridAutoRows,gridTemplateColumns,gridTemplateRows,gridTemplateAreas,gridArea);function paletteTransform(o,u){return u==="grey"?u:o}const color$1=style$1({prop:"color",themeKey:"palette",transform:paletteTransform}),bgcolor=style$1({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),backgroundColor=style$1({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform});compose(color$1,bgcolor,backgroundColor);function sizingTransform(o){return o<=1&&o!==0?`${o*100}%`:o}const width=style$1({prop:"width",transform:sizingTransform}),maxWidth=o=>{if(o.maxWidth!==void 0&&o.maxWidth!==null){const u=T=>{var E,C,_,P,R;const S=((_=(C=(E=o.theme)==null?void 0:E.breakpoints)==null?void 0:C.values)==null?void 0:_[T])||values$1[T];return S?((R=(P=o.theme)==null?void 0:P.breakpoints)==null?void 0:R.unit)!=="px"?{maxWidth:`${S}${o.theme.breakpoints.unit}`}:{maxWidth:S}:{maxWidth:sizingTransform(T)}};return handleBreakpoints(o,o.maxWidth,u)}return null};maxWidth.filterProps=["maxWidth"];const minWidth=style$1({prop:"minWidth",transform:sizingTransform}),height=style$1({prop:"height",transform:sizingTransform}),maxHeight=style$1({prop:"maxHeight",transform:sizingTransform}),minHeight=style$1({prop:"minHeight",transform:sizingTransform});style$1({prop:"size",cssProperty:"width",transform:sizingTransform});style$1({prop:"size",cssProperty:"height",transform:sizingTransform});const boxSizing=style$1({prop:"boxSizing"});compose(width,maxWidth,minWidth,height,maxHeight,minHeight,boxSizing);const defaultSxConfig={border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding}
44,paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:o=>({"@media print":{display:o}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};function objectsHaveSameKeys(...o){const u=o.reduce((S,E)=>S.concat(Object.keys(E)),[]),T=new Set(u);return o.every(S=>T.size===Object.keys(S).length)}function callIfFn(o,u){return typeof o=="function"?o(u):o}function unstable_createStyleFunctionSx(){function o(T,S,E,C){const _={[T]:S,theme:E},P=C[T];if(!P)return{[T]:S};const{cssProperty:R=T,themeKey:I,transform:L,style:j}=P;if(S==null)return null;if(I==="typography"&&S==="inherit")return{[T]:S};const M=getPath$1(E,I)||{};return j?j(_):handleBreakpoints(_,S,F=>{let N=getStyleValue$1(M,L,F);return F===N&&typeof F=="string"&&(N=getStyleValue$1(M,L,`${T}${F==="default"?"":capitalize(F)}`,F)),R===!1?N:{[R]:N}})}function u(T){const{sx:S,theme:E={},nested:C}=T||{};if(!S)return null;const _=E.unstable_sxConfig??defaultSxConfig;function P(R){let I=R;if(typeof R=="function")I=R(E);else if(typeof R!="object")return R;if(!I)return null;const L=createEmptyBreakpointObject(E.breakpoints),j=Object.keys(L);let M=L;return Object.keys(I).forEach(D=>{const F=callIfFn(I[D],E);if(F!=null)if(typeof F=="object")if(_[D])M=merge(M,o(D,F,E,_));else{const N=handleBreakpoints({theme:E},F,G=>({[D]:G}));objectsHaveSameKeys(N,F)?M[D]=u({sx:F,theme:E,nested:!0}):M=merge(M,N)}else M=merge(M,o(D,F,E,_))}),!C&&E.modularCssLayers?{"@layer sx":sortContainerQueries(E,removeUnusedBreakpoints(j,M))}:sortContainerQueries(E,removeUnusedBreakpoints(j,M))}return Array.isArray(S)?S.map(P):P(S)}return u}const styleFunctionSx=unstable_createStyleFunctionSx();styleFunctionSx.filterProps=["sx"];function applyStyles(o,u){var S;const T=this;if(T.vars){if(!((S=T.colorSchemes)!=null&&S[o])||typeof T.getColorSchemeSelector!="function")return{};let E=T.getColorSchemeSelector(o);return E==="&"?u:((E.includes("data-")||E.includes("."))&&(E=`*:where(${E.replace(/\s*&$/,"")}) &`),{[E]:u})}return T.palette.mode===o?u:{}}function createTheme$1(o={},...u){const{breakpoints:T={},palette:S={},spacing:E,shape:C={},..._}=o,P=createBreakpoints(T),R=createSpacing(E);let I=deepmerge({breakpoints:P,direction:"ltr",components:{},palette:{mode:"light",...S},spacing:R,shape:{...shape,...C}},_);return I=cssContainerQueries(I),I.applyStyles=applyStyles,I=u.reduce((L,j)=>deepmerge(L,j),I),I.unstable_sxConfig={...defaultSxConfig,..._==null?void 0:_.unstable_sxConfig},I.unstable_sx=function(j){return styleFunctionSx({sx:j,theme:this})},I}function isObjectEmpty$2(o){return Object.keys(o).length===0}function useTheme$3(o=null){const u=reactExports.useContext(ThemeContext$1);return!u||isObjectEmpty$2(u)?o:u}const systemDefaultTheme$1=createTheme$1();function useTheme$2(o=systemDefaultTheme$1){return useTheme$3(o)}function wrapGlobalLayer(o){const u=internal_serializeStyles(o);return o!==u&&u.styles?(u.styles.match(/^@layer\s+[^{]*$/)||(u.styles=`@layer global{${u.styles}}`),u):o}function GlobalStyles$1({styles:o,themeId:u,defaultTheme:T={}}){const S=useTheme$2(T),E=u&&S[u]||S;let C=typeof o=="function"?o(E):o;return E.modularCssLayers&&(Array.isArray(C)?C=C.map(_=>wrapGlobalLayer(typeof _=="function"?_(E):_)):C=wrapGlobalLayer(C)),jsxRuntimeExports.jsx(GlobalStyles$2,{styles:C})}const splitProps=o=>{var S;const u={systemProps:{},otherProps:{}},T=((S=o==null?void 0:o.theme)==null?void 0:S.unstable_sxConfig)??defaultSxConfig;
44return Object.keys(o).forEach(E=>{T[E]?u.systemProps[E]=o[E]:u.otherProps[E]=o[E]}),u};function extendSxProp$1(o){const{sx:u,...T}=o,{systemProps:S,otherProps:E}=splitProps(T);let C;return Array.isArray(u)?C=[S,...u]:typeof u=="function"?C=(..._)=>{const P=u(..._);return isPlainObject(P)?{...S,...P}:S}:C={...S,...u},{...E,sx:C}}const defaultGenerator=o=>o,createClassNameGenerator=()=>{let o=defaultGenerator;return{configure(u){o=u},generate(u){return o(u)},reset(){o=defaultGenerator}}},ClassNameGenerator=createClassNameGenerator();function r$1(o){var u,T,S="";if(typeof o=="string"||typeof o=="number")S+=o;else if(typeof o=="object")if(Array.isArray(o)){var E=o.length;for(u=0;u<E;u++)o[u]&&(T=r$1(o[u]))&&(S&&(S+=" "),S+=T)}else for(T in o)o[T]&&(S&&(S+=" "),S+=T);return S}function clsx(){for(var o,u,T=0,S="",E=arguments.length;T<E;T++)(o=arguments[T])&&(u=r$1(o))&&(S&&(S+=" "),S+=u);return S}function createBox$1(o={}){const{themeId:u,defaultTheme:T,defaultClassName:S="MuiBox-root",generateClassName:E}=o,C=styled$1("div",{shouldForwardProp:P=>P!=="theme"&&P!=="sx"&&P!=="as"})(styleFunctionSx);return reactExports.forwardRef(function(R,I){const L=useTheme$2(T),{className:j,component:M="div",...D}=extendSxProp$1(R);return jsxRuntimeExports.jsx(C,{as:M,ref:I,className:clsx(j,E?E(S):S),theme:u&&L[u]||L,...D})})}const globalStateClasses={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(o,u,T="Mui"){const S=globalStateClasses[u];return S?`${T}-${S}`:`${ClassNameGenerator.generate(o)}-${u}`}function generateUtilityClasses(o,u,T="Mui"){const S={};return u.forEach(E=>{S[E]=generateUtilityClass(o,E,T)}),S}function preprocessStyles(o){const{variants:u,...T}=o,S={variants:u,style:internal_serializeStyles(T),isProcessed:!0};return S.style===T||u&&u.forEach(E=>{typeof E.style!="function"&&(E.style=internal_serializeStyles(E.style))}),S}const systemDefaultTheme=createTheme$1();function shouldForwardProp(o){return o!=="ownerState"&&o!=="theme"&&o!=="sx"&&o!=="as"}function shallowLayer(o,u){return u&&o&&typeof o=="object"&&o.styles&&!o.styles.startsWith("@layer")&&(o.styles=`@layer ${u}{${String(o.styles)}}`),o}function defaultOverridesResolver(o){return o?(u,T)=>T[o]:null}function attachTheme(o,u,T){o.theme=isObjectEmpty$1(o.theme)?T:o.theme[u]||o.theme}function processStyle(o,u,T){const S=typeof u=="function"?u(o):u;if(Array.isArray(S))return S.flatMap(E=>processStyle(o,E,T));if(Array.isArray(S==null?void 0:S.variants)){let E;if(S.isProcessed)E=T?shallowLayer(S.style,T):S.style;else{const{variants:C,..._}=S;E=T?shallowLayer(internal_serializeStyles(_),T):_}return processStyleVariants(o,S.variants,[E],T)}return S!=null&&S.isProcessed?T?shallowLayer(internal_serializeStyles(S.style),T):S.style:T?shallowLayer(internal_serializeStyles(S),T):S}function processStyleVariants(o,u,T=[],S=void 0){var C;let E;e:for(let _=0;_<u.length;_+=1){const P=u[_];if(typeof P.props=="function"){if(E??(E={...o,...o.ownerState,ownerState:o.ownerState}),!P.props(E))continue}else for(const R in P.props)if(o[R]!==P.props[R]&&((C=o.ownerState)==null?void 0:C[R])!==P.props[R])continue e;typeof P.style=="function"?(E??(E={...o,...o.ownerState,ownerState:o.ownerState}),T.push(S?shallowLayer(internal_serializeStyles(P.style(E)),S):P.style(E))):T.push(S?shallowLayer(internal_serializeStyles(P.style),S):P.style)}return T}function createStyled(o={}){const{themeId:u,defaultTheme:T=systemDefaultTheme,rootShouldForwardProp:S=shouldForwardProp,slotShouldForwardProp:E=s
44houldForwardProp}=o;function C(P){attachTheme(P,u,T)}return(P,R={})=>{internal_mutateStyles(P,W=>W.filter(K=>K!==styleFunctionSx));const{name:I,slot:L,skipVariantsResolver:j,skipSx:M,overridesResolver:D=defaultOverridesResolver(lowercaseFirstLetter(L)),...F}=R,N=I&&I.startsWith("Mui")||L?"components":"custom",G=j!==void 0?j:L&&L!=="Root"&&L!=="root"||!1,B=M||!1;let H=shouldForwardProp;L==="Root"||L==="root"?H=S:L?H=E:isStringTag(P)&&(H=void 0);const O=styled$1(P,{shouldForwardProp:H,label:generateStyledLabel(),...F}),V=W=>{if(W.__emotion_real===W)return W;if(typeof W=="function")return function(Y){return processStyle(Y,W,Y.theme.modularCssLayers?N:void 0)};if(isPlainObject(W)){const K=preprocessStyles(W);return function(ee){return K.variants?processStyle(ee,K,ee.theme.modularCssLayers?N:void 0):ee.theme.modularCssLayers?shallowLayer(K.style,N):K.style}}return W},U=(...W)=>{const K=[],Y=W.map(V),ee=[];if(K.push(C),I&&D&&ee.push(function(ie){var te,Z;const re=(Z=(te=ie.theme.components)==null?void 0:te[I])==null?void 0:Z.styleOverrides;if(!re)return null;const J={};for(const X in re)J[X]=processStyle(ie,re[X],ie.theme.modularCssLayers?"theme":void 0);return D(ie,J)}),I&&!G&&ee.push(function(ie){var J,te;const ae=ie.theme,re=(te=(J=ae==null?void 0:ae.components)==null?void 0:J[I])==null?void 0:te.variants;return re?processStyleVariants(ie,re,[],ie.theme.modularCssLayers?"theme":void 0):null}),B||ee.push(styleFunctionSx),Array.isArray(Y[0])){const Q=Y.shift(),ie=new Array(K.length).fill(""),ae=new Array(ee.length).fill("");let re;re=[...ie,...Q,...ae],re.raw=[...ie,...Q.raw,...ae],K.unshift(re)}const oe=[...K,...Y,...ee],se=O(...oe);return P.muiName&&(se.muiName=P.muiName),se};return O.withConfig&&(U.withConfig=O.withConfig),U}}function generateStyledLabel(o,u){return void 0}function isObjectEmpty$1(o){for(const u in o)return!1;return!0}function isStringTag(o){return typeof o=="string"&&o.charCodeAt(0)>96}function lowercaseFirstLetter(o){return o&&o.charAt(0).toLowerCase()+o.slice(1)}function resolveProps(o,u,T=!1){const S={...u};for(const E in o)if(Object.prototype.hasOwnProperty.call(o,E)){const C=E;if(C==="components"||C==="slots")S[C]={...o[C],...S[C]};else if(C==="componentsProps"||C==="slotProps"){const _=o[C],P=u[C];if(!P)S[C]=_||{};else if(!_)S[C]=P;else{S[C]={...P};for(const R in _)if(Object.prototype.hasOwnProperty.call(_,R)){const I=R;S[C][I]=resolveProps(_[I],P[I],T)}}}else C==="className"&&T&&u.className?S.className=clsx(o==null?void 0:o.className,u==null?void 0:u.className):C==="style"&&T&&u.style?S.style={...o==null?void 0:o.style,...u==null?void 0:u.style}:S[C]===void 0&&(S[C]=o[C])}return S}function getThemeProps$1(o){const{theme:u,name:T,props:S}=o;return!u||!u.components||!u.components[T]||!u.components[T].defaultProps?S:resolveProps(u.components[T].defaultProps,S)}const useEnhancedEffect=typeof window<"u"?reactExports.useLayoutEffect:reactExports.useEffect;function useMediaQueryOld(o,u,T,S,E){const[C,_]=reactExports.useState(()=>E&&T?T(o).matches:S?S(o).matches:u);return useEnhancedEffect(()=>{if(!T)return;const P=T(o),R=()=>{_(P.matches)};return R(),P.addEventListener("change",R),()=>{P.removeEventListener("change",R)}},[o,T]),C}const safeReact$1={...React},maybeReactUseSyncExternalStore=safeReact$1.useSyncExternalStore;function useMediaQueryNew(o,u,T,S,E){const C=reactExports.useCallback(()=>u,[u]),_=reactExports.useMemo(()=>{if(E&&T)return()=>T(o).matches;if(S!==null){const{matches:L}=S(o);return()=>L}return C},[C,o,S,E,T]),[P,R]=reactExports.useMemo(()=>{if(T===null)return[C,()=>()=>{}];const L=T(o);return[()=>L.matches,j=>(L.addEventListener("change",j),()=>{L.removeEventListener("change",j)})]},[C,T,o]);return maybeReactUseSyncExternalStore(R,P,_)}function unstable_createUseMediaQuery(o={}){const{themeId:u}=o;return function(S,E={}){let C=useTheme$3();C&&u&&(C=C[u]||C);const _=typeof window<"u"&&typeof window.matchMedia<"u",{defaultMatches:P=!1,matchMedia:R=_?window.matchMedia:null,ssrMatchMedia:I=null,noSsr:L=!1}=getThemeProps$1({name:"MuiUseMediaQuery",props:E,theme:C});let j=typeof S=="function"?S(C):S;return j=j.replace(/^@media( ?)/m,""),j.includes("print")&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.","Using the print media query to modify print styles can lead to unexpected results.","Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
45`)),(maybeReactUseSyncExternalStore!==void 0?useMediaQueryNew:useMediaQueryOld)(j,P,R,I,L)}}unstable_createUseMediaQuery();function clamp$1(o,u=Number.MIN_SAFE_INTEGER,T=Number.MAX_SAFE_INTEGER){return Math.max(u,Math.min(o,T))}function clampWrapper(o,u=0,T=1){return clamp$1(o,u,T)}function hexToRgb(o){o=o.slice(1);const u=new RegExp(`.{1,${o.length>=6?2:1}}`,"g");let T=o.match(u);return T&&T[0].length===1&&(T=T.map(S=>S+S)),T?`rgb${T.length===4?"a":""}(${T.map((S,E)=>E<3?parseInt(S,16):Math.round(parseInt(S,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(o){if(o.type)return o;if(o.charAt(0)==="#")return decomposeColor(hexToRgb(o));const u=o.indexOf("("),T=o.substring(0,u);if(!["rgb","rgba","hsl","hsla","color"].includes(T))throw new Error(formatMuiErrorMessage(9,o));let S=o.substring(u+1,o.length-1),E;if(T==="color"){if(S=S.split(" "),E=S.shift(),S.length===4&&S[3].charAt(0)==="/"&&(S[3]=S[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(E))throw new Error(formatMuiErrorMessage(10,E))}else S=S.split(",");return S=S.map(C=>parseFloat(C)),{type:T,values:S,colorSpace:E}}const colorChannel=o=>{const u=decomposeColor(o);return u.values.slice(0,3).map((T,S)=>u.type.includes("hsl")&&S!==0?`${T}%`:T).join(" ")},private_safeColorChannel=(o,u)=>{try{return colorChannel(o)}catch{return o}};function recomposeColor(o){const{type:u,colorSpace:T}=o;let{values:S}=o;return u.includes("rgb")?S=S.map((E,C)=>C<3?parseInt(E,10):E):u.includes("hsl")&&(S[1]=`${S[1]}%`,S[2]=`${S[2]}%`),u.includes("color")?S=`${T} ${S.join(" ")}`:S=`${S.join(", ")}`,`${u}(${S})`}function hslToRgb(o){o=decomposeColor(o);const{values:u}=o,T=u[0],S=u[1]/100,E=u[2]/100,C=S*Math.min(E,1-E),_=(I,L=(I+T/30)%12)=>E-C*Math.max(Math.min(L-3,9-L,1),-1);let P="rgb";const R=[Math.round(_(0)*255),Math.round(_(8)*255),Math.round(_(4)*255)];return o.type==="hsla"&&(P+="a",R.push(u[3])),recomposeColor({type:P,values:R})}function getLuminance(o){o=decomposeColor(o);let u=o.type==="hsl"||o.type==="hsla"?decomposeColor(hslToRgb(o)).values:o.values;return u=u.map(T=>(o.type!=="color"&&(T/=255),T<=.03928?T/12.92:((T+.055)/1.055)**2.4)),Number((.2126*u[0]+.7152*u[1]+.0722*u[2]).toFixed(3))}function getContrastRatio(o,u){const T=getLuminance(o),S=getLuminance(u);return(Math.max(T,S)+.05)/(Math.min(T,S)+.05)}function alpha$1(o,u){return o=decomposeColor(o),u=clampWrapper(u),(o.type==="rgb"||o.type==="hsl")&&(o.type+="a"),o.type==="color"?o.values[3]=`/${u}`:o.values[3]=u,recomposeColor(o)}function private_safeAlpha(o,u,T){try{return alpha$1(o,u)}catch{return o}}function darken(o,u){if(o=decomposeColor(o),u=clampWrapper(u),o.type.includes("hsl"))o.values[2]*=1-u;else if(o.type.includes("rgb")||o.type.includes("color"))for(let T=0;T<3;T+=1)o.values[T]*=1-u;return recomposeColor(o)}function private_safeDarken(o,u,T){try{return darken(o,u)}catch{return o}}function lighten(o,u){if(o=decomposeColor(o),u=clampWrapper(u),o.type.includes("hsl"))o.values[2]+=(100-o.values[2])*u;else if(o.type.includes("rgb"))for(let T=0;T<3;T+=1)o.values[T]+=(255-o.values[T])*u;else if(o.type.includes("color"))for(let T=0;T<3;T+=1)o.values[T]+=(1-o.values[T])*u;return recomposeColor(o)}function private_safeLighten(o,u,T){try{return lighten(o,u)}catch{return o}}function emphasize(o,u=.15){return getLuminance(o)>.5?darken(o,u):lighten(o,u)}function private_safeEmphasize(o,u,T){try{return emphasize(o,u)}catch{return o}}const ThemeContext=reactExports.createContext(null);function useTheme$1(){return reactExports.useContext(ThemeContext)}const hasSymbol=typeof Symbol=="function"&&Symbol.for,nested=hasSymbol?Symbol.for("mui.nested"):"__THEME_NESTED__";function mergeOuterLocalTheme(o,u){return typeof u=="function"?u(o):{...o,...u}}function ThemeProvider$2(o){const{children:u,theme:T}=o,S=useTheme$1(),E=reactExports.useMemo(()=>{const C=S===null?{...T}:mergeOuterLocalTheme(S,T);return C!=null&&(C[nested]=S!==null),C},[T,S]);return jsxRuntimeExports.jsx(ThemeContext.Provider,{value:E,children:u})}const RtlContext=reactExports.createContext();function RtlProvider({value:o,...u}){return jsxRuntimeExports.jsx(RtlContext.Provider,{value:o??!0,...u})}const useRtl=()=>reactExports.useContext(RtlContext)??!1,PropsContext=reactExports.createContext(void 0);function DefaultPropsProvider({value:o,children:u}){return jsxRuntimeExports.jsx(PropsContext.Provider,{value:o,children:u})}function getThemeProps(o){const{theme:u,name:T,props:S}=o;if(!u||!u.components||!u.components[T])return S;const E=u.components[T];return E.defaultProps?resolveProps(E.defaultProps,S,u.components.mergeClassNameAndStyle):!E.styleOverrides&&!E.variants?resolveProps(E,S,u.components.mergeClassNameAndStyle):S}function useDefaultProps$1({props:o,name:u}){const T=reactExports.useContext(PropsContext);return getThemeProps({props:o,name:u,theme:{components:T}})}let globalId=0;function useGlobalId(o){const[u,T]=reactExports.useState(o),S=o||u;return reactExports.useEffect(()=>{u==null&&(globalId+=1,T(`mui-${globalId}`))},[u]),S}const safeReact={...React},maybeReactUseId=safeReact.useId;function useId(o){if(maybeReactUseId!==void 0){const u=maybeReactUseId();return o??u}return useGlobalId(o)}function useLayerOrder(o){const u=useTheme$3(),T=useId()||"",{modularCssLayers:S}=o;let E="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return!S||u!==null?E="":typeof S=="string"?E=S.replace(/mui(?!\.)/g,E):E=`@layer ${E};`,useEnhancedEffect(()=>{var P,R;const C=document.querySelector("head");if(!C)return;const _=C.firstChild;if(E){if(_&&((P=_.hasAttribute)!=null&&P.call(_,"data-mui-layer-order"))&&_.getAttribute("data-mui-layer-order")===T)return;const I=document.createElement("style");I.setAttribute("data-mui-layer-order",T),I.textContent=E,C.prepend(I)}else(R=C.querySelector(`style[data-mui-layer-order="${T}"]`))==null||R.remove()},[E,T]),E?jsxRuntimeExports.jsx(GlobalStyles$1,{styles:E}):null}const EMPTY_THEME={};function useThemeScoping(o,u,T,S=!1){return reactExports.useMemo(()=>{const E=o&&u[o]||u;if(typeof T=="function"){const C=T(E),_=o?{...u,[o]:C}:C;return S?()=>_:_}return o?{...u,[o]:T}:{...u,...T}},[o,u,T,S])}function ThemeProvider$1(o){const{children:u,theme:T,themeId:S}=o,E=useTheme$3(EMPTY_THEME),C=useTheme$1()||EMPTY_THEME,_=useThemeScoping(S,E,T),P=useThemeScoping(S,C,T,!0),R=(S?_[S]:_).direction==="rtl",I=useLayerOrder(_);return jsxRuntimeExports.jsx(ThemeProvider$2,{theme:P,children:jsxRuntimeExports.jsx(ThemeContext$1.Provider,{value:_,children:jsxRuntimeExports.jsx(RtlProvider,{value:R,children:jsxRuntimeExports.jsxs(DefaultPropsProvider,{value:S?_[S].components:_.components,children:[I,u]})})})})}const arg={theme:void 0};function unstable_memoTheme(o){let u,T;return function(E){let C=u;return(C===void 0||E.theme!==T)&&(arg.theme=E.theme,C=preprocessStyles(o(arg)),u=C,T=E.theme),C}}const DEFAULT_MODE_STORAGE_KEY="mode",DEFAULT_COLOR_SCHEME_STORAGE_KEY="color-scheme",DEFAULT_ATTRIBUTE="data-color-scheme";function InitColorSchemeScript(o){const{defaultMode:u="system",defaultLightColorScheme:T="light",defaultDar
45kColorScheme:S="dark",modeStorageKey:E=DEFAULT_MODE_STORAGE_KEY,colorSchemeStorageKey:C=DEFAULT_COLOR_SCHEME_STORAGE_KEY,attribute:_=DEFAULT_ATTRIBUTE,colorSchemeNode:P="document.documentElement",nonce:R}=o||{};let I="",L=_;if(_==="class"&&(L=".%s"),_==="data"&&(L="[data-%s]"),L.startsWith(".")){const M=L.substring(1);I+=`${P}.classList.remove('${M}'.replace('%s', light), '${M}'.replace('%s', dark)); 46 ${P}.classList.add('${M}'.replace('%s', colorScheme));`}const j=L.match(/\[([^[\]]+)\]/);if(j){const[M,D]=j[1].split("=");D||(I+=`${P}.removeAttribute('${M}'.replace('%s', light)); 47 ${P}.removeAttribute('${M}'.replace('%s', dark));`),I+=` 48 ${P}.setAttribute('${M}'.replace('%s', colorScheme), ${D?`${D}.replace('%s', colorScheme)`:'""'});`}else I+=`${P}.setAttribute('${L}', colorScheme);`;return jsxRuntimeExports.jsx("script",{suppressHydrationWarning:!0,nonce:typeof window>"u"?R:"",dangerouslySetInnerHTML:{__html:`(function() { 49try { 50 let colorScheme = ''; 51 const mode = localStorage.getItem('${E}') || '${u}'; 52 const dark = localStorage.getItem('${C}-dark') || '${S}'; 53 const light = localStorage.getItem('${C}-light') || '${T}'; 54 if (mode === 'system') { 55 // handle system mode 56 const mql = window.matchMedia('(prefers-color-scheme: dark)'); 57 if (mql.matches) { 58 colorScheme = dark 59 } else { 60 colorScheme = light 61 } 62 } 63 if (mode === 'light') { 64 colorScheme = light; 65 } 66 if (mode === 'dark') { 67 colorScheme = dark; 68 } 69 if (colorScheme) { 70 ${I} 71 } 72} catch(e){}})();`}},"mui-color-scheme-init")}function noop$5(){}const localStorageManager=({key:o,storageWindow:u})=>(!u&&typeof window<"u"&&(u=window),{get(T){if(typeof window>"u")return;if(!u)return T;let S;try{S=u.localStorage.getItem(o)}catch{}return S||T},set:T=>{if(u)try{u.localStorage.setItem(o,T)}catch{}},subscribe:T=>{if(!u)return noop$5;const S=E=>{const C=E.newValue;E.key===o&&T(C)};return u.addEventListener("storage",S),()=>{u.removeEventListener("storage",S)}}});function noop$4(){}function getSystemMode(o){if(typeof window<"u"&&typeof window.matchMedia=="function"&&o==="system")return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function processState(o,u){if(o.mode==="light"||o.mode==="system"&&o.systemMode==="light")return u("light");if(o.mode==="dark"||o.mode==="system"&&o.systemMode==="dark")return u("dark")}function getColorScheme(o){return processState(o,u=>{if(u==="light")return o.lightColorScheme;if(u==="dark")return o.darkColorScheme})}function useCurrentColorScheme(o){const{defaultMode:u="light",defaultLightColorScheme:T,defaultDarkColorScheme:S,supportedColorSchemes:E=[],modeStorageKey:C=DEFAULT_MODE_STORAGE_KEY,colorSchemeStorageKey:_=DEFAULT_COLOR_SCHEME_STORAGE_KEY,storageWindow:P=typeof window>"u"?void 0:window,storageManager:R=localStorageManager,noSsr:I=!1}=o,L=E.join(","),j=E.length>1,M=reactExports.useMemo(()=>R==null?void 0:R({key:C,storageWindow:P}),[R,C,P]),D=reactExports.useMemo(()=>R==null?void 0:R({key:`${_}-light`,storageWindow:P}),[R,_,P]),F=reactExports.useMemo(()=>R==null?void 0:R({key:`${_}-dark`,storageWindow:P}),[R,_,P]),[N,G]=reactExports.useState(()=>{const Y=(M==null?void 0:M.get(u))||u,ee=(D==null?void 0:D.get(T))||T,oe=(F==null?void 0:F.get(S))||S;return{mode:Y,systemMode:getSystemMode(Y),lightColorScheme:ee,darkColorScheme:oe}}),[B,H]=reactExports.useState(I||!j);reactExports.useEffect(()=>{H(!0)},[]);const O=getColorScheme(N),V=reactExports.useCallback(Y=>{G(ee=>{if(Y===ee.mode)return ee;const oe=Y??u;return M==null||M.set(oe),{...ee,mode:oe,systemMode:getSystemMode(oe)}})},[M,u]),U=reactExports.useCallback(Y=>{Y?typeof Y=="string"?Y&&!L.includes(Y)?console.error(`\`${Y}\` does not exist in \`theme.colorSchemes\`.`):G(ee=>{const oe={...ee};return processState(ee,se=>{se==="light"&&(D==null||D.set(Y),oe.lightColorScheme=Y),se==="dark"&&(F==null||F.set(Y),oe.darkColorScheme=Y)}),oe}):G(ee=>{const oe={...ee},se=Y.light===null?T:Y.light,Q=Y.dark===null?S:Y.dark;return se&&(L.includes(se)?(oe.lightColorScheme=se,D==null||D.set(se)):console.error(`\`${se}\` does not exist in \`theme.colorSchemes\`.`)),Q&&(L.includes(Q)?(oe.darkColorScheme=Q,F==null||F.set(Q)):console.error(`\`${Q}\` does not exist in \`theme.colorSchemes\`.`)),oe}):G(ee=>(D==null||D.set(T),F==null||F.set(S),{...ee,lightColorScheme:T,darkColorScheme:S}))},[L,D,F,T,S]),W=reactExports.useCallback(Y=>{N.mode==="system"&&G(ee=>
72{const oe=Y!=null&&Y.matches?"dark":"light";return ee.systemMode===oe?ee:{...ee,systemMode:oe}})},[N.mode]),K=reactExports.useRef(W);return K.current=W,reactExports.useEffect(()=>{if(typeof window.matchMedia!="function"||!j)return;const Y=(...oe)=>K.current(...oe),ee=window.matchMedia("(prefers-color-scheme: dark)");return ee.addListener(Y),Y(ee),()=>{ee.removeListener(Y)}},[j]),reactExports.useEffect(()=>{if(j){const Y=(M==null?void 0:M.subscribe(se=>{(!se||["light","dark","system"].includes(se))&&V(se||u)}))||noop$4,ee=(D==null?void 0:D.subscribe(se=>{(!se||L.match(se))&&U({light:se})}))||noop$4,oe=(F==null?void 0:F.subscribe(se=>{(!se||L.match(se))&&U({dark:se})}))||noop$4;return()=>{Y(),ee(),oe()}}},[U,V,L,u,P,j,M,D,F]),{...N,mode:B?N.mode:void 0,systemMode:B?N.systemMode:void 0,colorScheme:B?O:void 0,setMode:V,setColorScheme:U}}const DISABLE_CSS_TRANSITION="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function createCssVarsProvider(o){const{themeId:u,theme:T={},modeStorageKey:S=DEFAULT_MODE_STORAGE_KEY,colorSchemeStorageKey:E=DEFAULT_COLOR_SCHEME_STORAGE_KEY,disableTransitionOnChange:C=!1,defaultColorScheme:_,resolveTheme:P}=o,R={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},I=reactExports.createContext(void 0),L=()=>reactExports.useContext(I)||R,j={},M={};function D(B){var it,st,at,ot;const{children:H,theme:O,modeStorageKey:V=S,colorSchemeStorageKey:U=E,disableTransitionOnChange:W=C,storageManager:K,storageWindow:Y=typeof window>"u"?void 0:window,documentNode:ee=typeof document>"u"?void 0:document,colorSchemeNode:oe=typeof document>"u"?void 0:document.documentElement,disableNestedContext:se=!1,disableStyleSheetGeneration:Q=!1,defaultMode:ie="system",forceThemeRerender:ae=!1,noSsr:re}=B,J=reactExports.useRef(!1),te=useTheme$1(),Z=reactExports.useContext(I),X=!!Z&&!se,de=reactExports.useMemo(()=>O||(typeof T=="function"?T():T),[O]),he=de[u],ne=he||de,{colorSchemes:ue=j,components:ce=M,cssVarPrefix:fe}=ne,ve=Object.keys(ue).filter(je=>!!ue[je]).join(","),Te=reactExports.useMemo(()=>ve.split(","),[ve]),Se=typeof _=="string"?_:_.light,ke=typeof _=="string"?_:_.dark,we=ue[Se]&&ue[ke]?ie:((st=(it=ue[ne.defaultColorScheme])==null?void 0:it.palette)==null?void 0:st.mode)||((at=ne.palette)==null?void 0:at.mode),{mode:Le,setMode:pe,systemMode:Me,lightColorScheme:Pe,darkColorScheme:Ue,colorScheme:qe,setColorScheme:Ie}=useCurrentColorScheme({supportedColorSchemes:Te,defaultLightColorScheme:Se,defaultDarkColorScheme:ke,modeStorageKey:V,colorSchemeStorageKey:U,defaultMode:we,storageManager:K,storageWindow:Y,noSsr:re});let Xe=Le,et=qe;X&&(Xe=Z.mode,et=Z.colorScheme);let tt=et||ne.defaultColorScheme;ne.vars&&!ae&&(tt=ne.defaultColorScheme);const Ye=reactExports.useMemo(()=>{var Qe;const je=((Qe=ne.generateThemeVars)==null?void 0:Qe.call(ne))||ne.vars,Be={...ne,components:ce,colorSchemes:ue,cssVarPrefix:fe,vars:je};if(typeof Be.generateSpacing=="function"&&(Be.spacing=Be.generateSpacing()),tt){const Ge=ue[tt];Ge&&typeof Ge=="object"&&Object.keys(Ge).forEach(We=>{Ge[We]&&typeof Ge[We]=="object"?Be[We]={...Be[We],...Ge[We]}:Be[We]=Ge[We]})}return P?P(Be):Be},[ne,tt,ce,ue,fe]),ze=ne.colorSchemeSelector;useEnhancedEffect(()=>{if(et&&oe&&ze&&ze!=="media"){const je=ze;let Be=ze;if(je==="class"&&(Be=".%s"),je==="data"&&(Be="[data-%s]"),je!=null&&je.startsWith("data-")&&!je.includes("%s")&&(Be=`[${je}="%s"]`),Be.startsWith("."))oe.classList.remove(...Te.map(Qe=>Be.substring(1).replace("%s",Qe))),oe.classList.add(Be.substring(1).replace("%s",et));else{const Qe=Be.replace("%s",et).match(/\[([^\]]+)\]/);if(Qe){const[Ge,We]=Qe[1].split("=");We||Te.forEach(mt=>{oe.removeAttribute(Ge.replace(et,mt))}),oe.setAttribute(Ge,We?We.replace(/"|'/g,""):"")}else oe.setAttribute(Be,et)}}},[et,ze,oe,Te]),reactExports.useEffect(()=>{let je;if(W&&J.current&&ee){const Be=ee.createElement("style");Be.appendChild(ee.createTextNode(DISABLE_CSS_TRANSITION)),ee.head.appendChild(Be),window.getComputedStyle(ee.body),je=setTimeout(()=>{ee.head.removeChild(Be)},1)}return()=>{clearTimeout(je)}},[et,W,ee]),reactExports.useEffect(()=>(J.current=!0,()=>{J.current=!1}),[]);const Ze=reactExports.useMemo(()=>({allColorSchemes:Te,colorScheme:et,darkColorScheme:Ue,lightColorScheme:Pe,mode:Xe,setColorScheme:Ie,setMode:pe,systemMode:Me}),[Te,et,Ue,Pe,Xe,Ie,pe,Me,Ye.colorSchemeSelector]);let He=!0;(Q||ne.cssVariables===!1||X&&(te==null?void 0:te.cssVarPrefix)===fe)&&(He=!1);const rt=jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(ThemeProvider$1,{themeId:he?u:void 0,theme:Ye,children:H}),He&&jsxRuntimeExports.jsx(GlobalStyles$2,{styles:((ot=Ye.generateStyleSheets)==null?void 0:ot.call(Ye))||[]})]});return X?rt:jsxRuntimeExports.jsx(I.Provider,{value:Ze,children:rt})}const F=typeof _=="string"?_:_.light,N=typeof _=="string"?_:_.dark;
72return{CssVarsProvider:D,useColorScheme:L,getInitColorSchemeScript:B=>InitColorSchemeScript({colorSchemeStorageKey:E,defaultLightColorScheme:F,defaultDarkColorScheme:N,modeStorageKey:S,...B})}}function createGetCssVar$1(o=""){function u(...S){if(!S.length)return"";const E=S[0];return typeof E=="string"&&!E.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, var(--${o?`${o}-`:""}${E}${u(...S.slice(1))})`:`, ${E}`}return(S,...E)=>`var(--${o?`${o}-`:""}${S}${u(...E)})`}const assignNestedKeys=(o,u,T,S=[])=>{let E=o;u.forEach((C,_)=>{_===u.length-1?Array.isArray(E)?E[Number(C)]=T:E&&typeof E=="object"&&(E[C]=T):E&&typeof E=="object"&&(E[C]||(E[C]=S.includes(C)?[]:{}),E=E[C])})},walkObjectDeep=(o,u,T)=>{function S(E,C=[],_=[]){Object.entries(E).forEach(([P,R])=>{(!T||T&&!T([...C,P]))&&R!=null&&(typeof R=="object"&&Object.keys(R).length>0?S(R,[...C,P],Array.isArray(R)?[..._,P]:_):u([...C,P],R,_))})}S(o)},getCssValue=(o,u)=>typeof u=="number"?["lineHeight","fontWeight","opacity","zIndex"].some(S=>o.includes(S))||o[o.length-1].toLowerCase().includes("opacity")?u:`${u}px`:u;function cssVarsParser(o,u){const{prefix:T,shouldSkipGeneratingVar:S}=u||{},E={},C={},_={};return walkObjectDeep(o,(P,R,I)=>{if((typeof R=="string"||typeof R=="number")&&(!S||!S(P,R))){const L=`--${T?`${T}-`:""}${P.join("-")}`,j=getCssValue(P,R);Object.assign(E,{[L]:j}),assignNestedKeys(C,P,`var(${L})`,I),assignNestedKeys(_,P,`var(${L}, ${j})`,I)}},P=>P[0]==="vars"),{css:E,vars:C,varsWithDefaults:_}}function prepareCssVars(o,u={}){const{getSelector:T=B,disableCssColorScheme:S,colorSchemeSelector:E,enableContrastVars:C}=u,{colorSchemes:_={},components:P,defaultColorScheme:R="light",...I}=o,{vars:L,css:j,varsWithDefaults:M}=cssVarsParser(I,u);let D=M;const F={},{[R]:N,...G}=_;if(Object.entries(G||{}).forEach(([V,U])=>{const{vars:W,css:K,varsWithDefaults:Y}=cssVarsParser(U,u);D=deepmerge(D,Y),F[V]={css:K,vars:W}}),N){const{css:V,vars:U,varsWithDefaults:W}=cssVarsParser(N,u);D=deepmerge(D,W),F[R]={css:V,vars:U}}function B(V,U){var K,Y;let W=E;if(E==="class"&&(W=".%s"),E==="data"&&(W="[data-%s]"),E!=null&&E.startsWith("data-")&&!E.includes("%s")&&(W=`[${E}="%s"]`),V){if(W==="media")return o.defaultColorScheme===V?":root":{[`@media (prefers-color-scheme: ${((Y=(K=_[V])==null?void 0:K.palette)==null?void 0:Y.mode)||V})`]:{":root":U}};if(W)return o.defaultColorScheme===V?`:root, ${W.replace("%s",String(V))}`:W.replace("%s",String(V))}return":root"}return{vars:D,generateThemeVars:()=>{let V={...L};return Object.entries(F).forEach(([,{vars:U}])=>{V=deepmerge(V,U)}),V},generateStyleSheets:()=>{var ee,oe;const V=[],U=o.defaultColorScheme||"light";function W(se,Q){Object.keys(Q).length&&V.push(typeof se=="string"?{[se]:{...Q}}:se)}W(T(void 0,{...j}),j);const{[U]:K,...Y}=F;if(K){const{css:se}=K,Q=(oe=(ee=_[U])==null?void 0:ee.palette)==null?void 0:oe.mode,ie=!S&&Q?{colorScheme:Q,...se}:{...se};W(T(U,{...ie}),ie)}return Object.entries(Y).forEach(([se,{css:Q}])=>{var re,J;const ie=(J=(re=_[se])==null?void 0:re.palette)==null?void 0:J.mode,ae=!S&&ie?{colorScheme:ie,...Q}:{...Q};W(T(se,{...ae}),ae)}),C&&V.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),V}}}function createGetColorSchemeSelector(o){return function(T){return o==="media"?`@media (prefers-color-scheme: ${T})`:o?o.startsWith("data-")&&!o.includes("%s")?`[${o}="${T}"] &`:o==="class"?`.${T} &`:o==="data"?`[data-${T}] &`:`${o.replace("%s",T)} &`:"&"}}function composeClasses(o,u,T=void 0){const S={};for(const E in o){const C=o[E];let _="",P=!0;for(let R=0;R<C.length;R+=1){const I=C[R];I&&(_+=(P===!0?"":" ")+u(I),P=!1,T&&T[I]&&(_+=" "+T[I]))}S[E]=_}return S}function isMuiElement(o,u){var T,S,E;return reactExports.isValidElement(o)&&u.indexOf(o.type.muiName??((E=(S=(T=o.type)==null?void 0:T._payload)==null?void 0:S.value)==null?void 0:E.muiName))!==-1}const common$5={black:"#000",white:"#fff"},grey={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},purple={50:"#f3e5f5",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",700:"#7b1fa2"},red={300:"#e57373",400:"#ef5350",500:"#f44336",700:"#d32f2f",800:"#c62828"},orange={300:"#ffb74d",400:"#ffa726",500:"#ff9800",700:"#f57c00",900:"#e65100"},blue={50:"#e3f2fd",200:"#90caf9",400:"#42a5f5",700:"#1976d2",800:"#1565c0"},lightBlue={300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",700:"#0288d1",900:"#01579b"},green={300:"#81c784",400:"#66bb6a",500:"#4caf50",700:"#388e3c",800:"#2e7d32",900:"#1b5e20"};function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:common$5.white,default:common$5.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackgroun
72d:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}const light=getLight();function getDark(){return{text:{primary:common$5.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:common$5.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}const dark=getDark();function addLightOrDark(o,u,T,S){const E=S.light||S,C=S.dark||S*1.5;o[u]||(o.hasOwnProperty(T)?o[u]=o[T]:u==="light"?o.light=lighten(o.main,E):u==="dark"&&(o.dark=darken(o.main,C)))}function mixLightOrDark(o,u,T,S,E){const C=E.light||E,_=E.dark||E*1.5;u[T]||(u.hasOwnProperty(S)?u[T]=u[S]:T==="light"?u.light=`color-mix(in ${o}, ${u.main}, #fff ${(C*100).toFixed(0)}%)`:T==="dark"&&(u.dark=`color-mix(in ${o}, ${u.main}, #000 ${(_*100).toFixed(0)}%)`))}function getDefaultPrimary(o="light"){return o==="dark"?{main:blue[200],light:blue[50],dark:blue[400]}:{main:blue[700],light:blue[400],dark:blue[800]}}function getDefaultSecondary(o="light"){return o==="dark"?{main:purple[200],light:purple[50],dark:purple[400]}:{main:purple[500],light:purple[300],dark:purple[700]}}function getDefaultError(o="light"){return o==="dark"?{main:red[500],light:red[300],dark:red[700]}:{main:red[700],light:red[400],dark:red[800]}}function getDefaultInfo(o="light"){return o==="dark"?{main:lightBlue[400],light:lightBlue[300],dark:lightBlue[700]}:{main:lightBlue[700],light:lightBlue[500],dark:lightBlue[900]}}function getDefaultSuccess(o="light"){return o==="dark"?{main:green[400],light:green[300],dark:green[700]}:{main:green[800],light:green[500],dark:green[900]}}function getDefaultWarning(o="light"){return o==="dark"?{main:orange[400],light:orange[300],dark:orange[700]}:{main:"#ed6c02",light:orange[500],dark:orange[900]}}function contrastColor(o){return`oklch(from ${o} var(--__l) 0 h / var(--__a))`}function createPalette(o){const{mode:u="light",contrastThreshold:T=3,tonalOffset:S=.2,colorSpace:E,...C}=o,_=o.primary||getDefaultPrimary(u),P=o.secondary||getDefaultSecondary(u),R=o.error||getDefaultError(u),I=o.info||getDefaultInfo(u),L=o.success||getDefaultSuccess(u),j=o.warning||getDefaultWarning(u);function M(G){return E?contrastColor(G):getContrastRatio(G,dark.text.primary)>=T?dark.text.primary:light.text.primary}const D=({color:G,name:B,mainShade:H=500,lightShade:O=300,darkShade:V=700})=>{if(G={...G},!G.main&&G[H]&&(G.main=G[H]),!G.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,B?` (${B})`:"",H));if(typeof G.main!="string")throw new Error(formatMuiErrorMessage(12,B?` (${B})`:"",JSON.stringify(G.main)));return E?(mixLightOrDark(E,G,"light",O,S),mixLightOrDark(E,G,"dark",V,S)):(addLightOrDark(G,"light",O,S),addLightOrDark(G,"dark",V,S)),G.contrastText||(G.contrastText=M(G.main)),G};let F;return u==="light"?F=getLight():u==="dark"&&(F=getDark()),deepmerge({common:{...common$5},mode:u,primary:D({color:_,name:"primary"}),secondary:D({color:P,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:D({color:R,name:"error"}),warning:D({color:j,name:"warning"}),info:D({color:I,name:"info"}),success:D({color:L,name:"success"}),grey,contrastThreshold:T,getContrastText:M,augmentColor:D,tonalOffset:S,...F},C)}function prepareTypographyVars(o){const u={};return Object.entries(o).forEach(S=>{const[E,C]=S;typeof C=="object"&&(u[E]=`${C.fontStyle?`${C.fontStyle} `:""}${C.fontVariant?`${C.fontVariant} `:""}${C.fontWeight?`${C.fontWeight} `:""}${C.fontStretch?`${C.fontStretch} `:""}${C.fontSize||""}${C.lineHeight?`/${C.lineHeight} `:""}${C.fontFamily||""}`)}),u}function createMixins(o,u){return{toolbar:{minHeight:56,[o.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[o.up("sm")]:{minHeight:64}},...u}}function round(o){return Math.round(o*1e5)/1e5}const caseAllCaps={textTransform:"uppercase"},defaultFontFamily='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(o,u){const{fontFamily:T=defaultFontFamily,fontSize:S=14,fontWeightLight:E=300,fontWeightRegular:C=400,fontWeightMedium:_=500,fontWeightBold:P=700,htmlFontSize:R=16,allVariants:I,pxToRem:L,...j}=typeof u=="function"?u(o):u,M=S/14,D=L||(G=>`${G/R*M}rem`),F=(G,B,H,O,V)=>({fontFamily:T,fontWeight:G,fontSize:D(B),lineHeight:H,...T===defaultFontFamily?{letterSpacing:`${round(O/B)}em`}:{},...V,...I}),N={h1:F(E,96,1.167,-1.5),h2:F(E,60,1.2,-.5),h3:F(C,48,1.167,0),h4:F(C,34,1.235,.25),h5:F(C,24,1.334,0),h6:F(_,20,1.6,.15),subtitle1:F(C,16,1.75,.15),subtitle2:F(_,14,1.57,.1),body1:F(C,16,1.5,.15),body2:F(C,14,1.43,.15),button:F(_,14,1.75,.4,caseAllCaps),caption:F(C,12,1.66,.4),overline:F(C,12,2.66,1,caseAllCaps),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return deepmerge({htmlFontSize:R,pxToRem:D,fontFamily:T,fontSize:S,fontWeightLight:E,fontWeightRegular:C,fontWeightMedium:_,fontWeightBold:P,...N},j,{clone:!1})}const shadowKeyUmbraOpacity=.2,shadowKeyPenumbraOpacity=.14,shadowAmbientShadowOpacity=.12;function createShadow(...o){return[`${o[0]}px ${o[1]}px ${o[2]}px ${o[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`,`${o[4]}
72px ${o[5]}px ${o[6]}px ${o[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`,`${o[8]}px ${o[9]}px ${o[10]}px ${o[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(",")}const shadows=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],easing={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},duration={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(o){return`${Math.round(o)}ms`}function getAutoHeightDuration(o){if(!o)return 0;const u=o/36;return Math.min(Math.round((4+15*u**.25+u/5)*10),3e3)}function createTransitions(o){const u={...easing,...o.easing},T={...duration,...o.duration};return{getAutoHeightDuration,create:(E=["all"],C={})=>{const{duration:_=T.standard,easing:P=u.easeInOut,delay:R=0,...I}=C;return(Array.isArray(E)?E:[E]).map(L=>`${L} ${typeof _=="string"?_:formatMs(_)} ${P} ${typeof R=="string"?R:formatMs(R)}`).join(",")},...o,easing:u,duration:T}}const zIndex={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(o){return isPlainObject(o)||typeof o>"u"||typeof o=="string"||typeof o=="boolean"||typeof o=="number"||Array.isArray(o)}function stringifyTheme(o={}){const u={...o};function T(S){const E=Object.entries(S);for(let C=0;C<E.length;C++){const[_,P]=E[C];!isSerializable(P)||_.startsWith("unstable_")?delete S[_]:isPlainObject(P)&&(S[_]={...P},T(S[_]))}}return T(u),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles'; 73 74const theme = ${JSON.stringify(u,null,2)}; 75 76theme.breakpoints = createBreakpoints(theme.breakpoints || {}); 77theme.transitions = createTransitions(theme.transitions || {}); 78 79export default theme;`}function coefficientToPercentage(o){return typeof o=="number"?`${(o*100).toFixed(0)}%`:`calc((${o}) * 100%)`}const parseAddition=o=>{if(!Number.isNaN(+o))return+o;const u=o.match(/\d*\.?\d+/g);if(!u)return 0;let T=0;for(let S=0;S<u.length;S+=1)T+=+u[S];return T};function attachColorManipulators(o){Object.assign(o,{alpha(u,T){const S=this||o;return S.colorSpace?`oklch(from ${u} l c h / ${typeof T=="string"?`calc(${T})`:T})`:S.vars?`rgba(${u.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${typeof T=="string"?`calc(${T})`:T})`:alpha$1(u,parseAddition(T))},lighten(u,T){const S=this||o;return S.colorSpace?`color-mix(in ${S.colorSpace}, ${u}, #fff ${coefficientToPercentage(T)})`:lighten(u,T)},darken(u,T){const S=this||o;return S.colorSpace?`color-mix(in ${S.colorSpace}, ${u}, #000 ${coefficientToPercentage(T)})`:darken(u,T)}})}function createThemeNoVars(o={},...u){const{breakpoints:T,mixins:S={},spacing:E,palette:C={},transitions:_={},typography:P={},shape:R,colorSpace:I,...L}=o;if(o.vars&&o.generateThemeVars===void 0)throw new Error(formatMuiErrorMessage(20));const j=createPalette({...C,colorSpace:I}),M=createTheme$1(o);let D=deepmerge(M,{mixins:createMixins(M.breakpoints,S),palette:j,shadows:shadows.slice(),typography:createTypography(j,P),transitions:createTransitions(_),zIndex:{...zIndex}});return D=deepmerge(D,L),D=u.reduce((F,N)=>deepmerge(F,N),D),D.unstable_sxConfig={...defaultSxConfig,...L==null?void 0:L.unstable_sxConfig},D.unstable_sx=function(N){return styleFunctionSx({sx:N,theme:this})},D.toRuntimeSource=stringifyTheme,attachColorManipulators(D),D}function getOverlayAlpha(o){let u;return o<1?u=5.11916*o**2:u=4.5*Math.log(o+1)+2,Math.round(u*10)/1e3}
79const defaultDarkOverlays=[...Array(25)].map((o,u)=>{if(u===0)return"none";const T=getOverlayAlpha(u);return`linear-gradient(rgba(255 255 255 / ${T}), rgba(255 255 255 / ${T}))`});function getOpacity(o){return{inputPlaceholder:o==="dark"?.5:.42,inputUnderline:o==="dark"?.7:.42,switchTrackDisabled:o==="dark"?.2:.12,switchTrack:o==="dark"?.3:.38}}function getOverlays(o){return o==="dark"?defaultDarkOverlays:[]}function createColorScheme(o){const{palette:u={mode:"light"},opacity:T,overlays:S,colorSpace:E,...C}=o,_=createPalette({...u,colorSpace:E});return{palette:_,opacity:{...getOpacity(_.mode),...T},overlays:S||getOverlays(_.mode),...C}}function shouldSkipGeneratingVar(o){var u;return!!o[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!o[0].match(/sxConfig$/)||o[0]==="palette"&&!!((u=o[1])!=null&&u.match(/(mode|contrastThreshold|tonalOffset)/))}const excludeVariablesFromRoot=o=>[...[...Array(25)].map((u,T)=>`--${o?`${o}-`:""}overlays-${T}`),`--${o?`${o}-`:""}palette-AppBar-darkBg`,`--${o?`${o}-`:""}palette-AppBar-darkColor`],defaultGetSelector=o=>(u,T)=>{const S=o.rootSelector||":root",E=o.colorSchemeSelector;let C=E;if(E==="class"&&(C=".%s"),E==="data"&&(C="[data-%s]"),E!=null&&E.startsWith("data-")&&!E.includes("%s")&&(C=`[${E}="%s"]`),o.defaultColorScheme===u){if(u==="dark"){const _={};return excludeVariablesFromRoot(o.cssVarPrefix).forEach(P=>{_[P]=T[P],delete T[P]}),C==="media"?{[S]:T,"@media (prefers-color-scheme: dark)":{[S]:_}}:C?{[C.replace("%s",u)]:_,[`${S}, ${C.replace("%s",u)}`]:T}:{[S]:{...T,..._}}}if(C&&C!=="media")return`${S}, ${C.replace("%s",String(u))}`}else if(u){if(C==="media")return{[`@media (prefers-color-scheme: ${String(u)})`]:{[S]:T}};if(C)return C.replace("%s",String(u))}return S};function assignNode(o,u){u.forEach(T=>{o[T]||(o[T]={})})}function setColor(o,u,T){!o[u]&&T&&(o[u]=T)}function toRgb(o){return typeof o!="string"||!o.startsWith("hsl")?o:hslToRgb(o)}function setColorChannel(o,u){`${u}Channel`in o||(o[`${u}Channel`]=private_safeColorChannel(toRgb(o[u])))}function getSpacingVal(o){return typeof o=="number"?`${o}px`:typeof o=="string"||typeof o=="function"||Array.isArray(o)?o:"8px"}const silent=o=>{try{return o()}catch{}},createGetCssVar=(o="mui")=>createGetCssVar$1(o);function attachColorScheme$1(o,u,T,S,E){if(!T)return;T=T===!0?{}:T;const C=E==="dark"?"dark":"light";if(!S){u[E]=createColorScheme({...T,palette:{mode:C,...T==null?void 0:T.palette},colorSpace:o});return}const{palette:_,...P}=createThemeNoVars({...S,palette:{mode:C,...T==null?void 0:T.palette},colorSpace:o});return u[E]={...T,palette:_,opacity:{...getOpacity(C),...T==null?void 0:T.opacity},overlays:(T==null?void 0:T.overlays)||getOverlays(C)},P}function createThemeWithVars(o={},...u){const{colorSchemes:T={light:!0},defaultColorScheme:S,disableCssColorScheme:E=!1,cssVarPrefix:C="mui",nativeColor:_=!1,shouldSkipGeneratingVar:P=shouldSkipGeneratingVar,colorSchemeSelector:R=T.light&&T.dark?"media":void 0,rootSelector:I=":root",...L}=o,j=Object.keys(T)[0],M=S||(T.light&&j!=="light"?"light":j),D=createGetCssVar(C),{[M]:F,light:N,dark:G,...B}=T,H={...B};let O=F;if((M==="dark"&&!("dark"in T)||M==="light"&&!("light"in T))&&(O=!0),!O)throw new Error(formatMuiErrorMessage(21,M));let V;_&&(V="oklch");const U=attachColorScheme$1(V,H,O,L,M);N&&!H.light&&attachColorScheme$1(V,H,N,void 0,"light"),G&&!H.dark&&attachColorScheme$1(V,H,G,void 0,"dark");let W={defaultColorScheme:M,...U,cssVarPrefix:C,colorSchemeSelector:R,rootSelector:I,getCssVar:D,colorSchemes:H,font:{...prepareTypographyVars(U.typography),...U.font},spacing:getSpacingVal(L.spacing)};Object.keys(W.colorSchemes).forEach(se=>{const Q=W.colorSchemes[se].palette,ie=re=>{const J=re.split("-"),te=J[1],Z=J[2];return D(re,Q[te][Z])};Q.mode==="light"&&(setColor(Q.common,"background","#fff"),setColor(Q.common,"onBackground","#000")),Q.mode==="dark"&&(setColor(Q.common,"background","#000"),setColor(Q.common,"onBackground","#fff"));function ae(re,J,te){if(V){let Z;return re===private_safeAlpha&&(Z=`transparent ${((1-te)*100).toFixed(0)}%`),re===private_safeDarken&&(Z=`#000 ${(te*100).toFixed(0)}%`),re===private_safeLighten&&(Z=`#fff ${(te*100).toFixed(0)}%`),`color-mix(in ${V}, ${J}, ${Z})`}return re(J,te)}if(assignNode(Q,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),Q.mode==="light"){setColor(Q.Alert,"errorColor",ae(private_safeDarken,Q.error.light,.6)),setColor(Q.Alert,"infoColor",ae(private_safeDarken,Q.info.light,.6)),setColor(Q.Alert,"successColor",ae(private_safeDarken,Q.success.light,.6)),setColor(Q.Alert,"warningColor",ae(private_safeDarken,Q.warning.light,.6)),setColor(Q.Alert,"errorFilledBg",ie("palette-error-main")),setColor(Q.Alert,"infoFilledBg",ie("palette-info-main")),setColor(Q.Alert,"successFilledBg",ie("palette-success-main")),setColor(Q.Alert,"warningFilledBg",ie("palette-warning-main")),setColor(Q.Alert,"errorFilledColor",silent(()=>Q.getContrastText(Q.error.main))),setColor(Q.Alert,"infoFilledColor",silent(()=>Q.getContrastText(Q.info.main))),setColor(Q.Alert,"successFilledColor",silent(()=>Q.getContrastText(Q.success.main))),setColor(Q.Alert,"warningFilledColor",silent(()=>Q.getContrastText(Q.warning.main))),setColor(Q.Alert,"errorStandardBg",ae(private_safeLighten,Q.error.light,.9)),setColor(Q.Alert,"infoStandardBg",ae(private_safeLighten,Q.info.light,.9)),setColor(Q.Alert,"successStandardBg",ae(private_safeLighten,Q.success.light,.9)),setColor(Q.Alert,"warningStandardBg",ae(private_safeLighten,Q.warning.light,.9)),setColor(Q.Alert,"errorIconColor",ie("palette-error-main")),setColor(Q.Alert,"infoIconColor",ie("palette-info-main")),setColor(Q.Alert,"successIconColor",ie("palette-success-main")),setColor(Q.Alert,"warningIconColor",ie("palette-warning-main")),setColor(Q.AppBar,"defaultBg",ie("palette-grey-100")),setColor(Q.Avatar,"defaultBg",ie("palette-grey-400")),setColor(Q.Button,"inheritContainedBg",ie("palette-grey-300")),setColor(Q.Button,"inheritContainedHoverBg",ie("palette-grey-A100")),setColor(Q.Chip,"defaultBorder",ie("palette-grey-400")),setColor(Q.Chip,"defaultAvatarColor",ie("palette-grey-700")),setColor(Q.Chip,"defaultIconColor",ie("palette-grey-700")),setColor(Q.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(Q.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(Q.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(Q.LinearProgress,"primaryBg",ae(private_safeLighten,Q.primary.main,.62)),setColor(Q.LinearProgress,"secondaryBg",ae(private_safeLighten,Q.secondary.main,.62)),setColor(Q.LinearProgress,"errorBg",ae(private_safeLighten,Q.error.main,.62)),setColor(Q.LinearProgress,"infoBg",ae(private_safeLighten,Q.info.main,.62)),setColor(Q.LinearProgress,"successBg",ae(private_safeLighten,Q.success.main,.62)),setColor(Q.LinearProgress,"warningBg",ae(private_safeLighten,Q.warning.main,.62)),setColor(Q.Skeleton,"bg",V?ae(private_safeAlpha,Q.text.primary,.11):`rgba(${ie("palette-text-primaryChannel")} / 0.11)`),setColor(Q.Slider,"primaryTrack",ae(private_safeLighten,Q.primary.main,.62)),setColor(Q.Slider,"secondaryTrack",ae(private_safeLighten,Q.secondary.main,.62)),setColor(Q.Slider,"errorTrack",ae(private_safeLighten,Q.error.main,.62)),setColor(Q.Slider,"infoTrack",ae(private_safeLighten,Q.info.main,.62)),setColor(Q.Slider,"successTrack",ae(private_safeLighten,Q.success.main,.62)),setColor(Q.Slider,"warningTrack",ae(private_safeLighten,Q.warning.main,.62));const re=V?ae(private_safeDarken,Q.background.default,.6825):private_safeEmphasize(Q.background.default,.8);setColor(Q.SnackbarContent,"bg",re),setColor(Q.SnackbarContent,"color",silent(()=>V?dark.text.primary:Q.getContrastText(re))),setColor(Q.SpeedDialAction,"fabHoverBg",private_safeEmphasize(Q.background.paper,.15)),setColor(Q.StepConnector,"border",ie("palette-grey-400")),setColor(Q.StepContent,"border",ie("palette-grey-400")),setColor(Q.Switch,"defaultColor",ie("palette-common-white")),setColor(Q.Switch,"defaultDisabledColor",ie("palette-grey-100")),setColor(Q.Switch,"primaryDisabledColor",ae(private_safeLighten,Q.primary.main,.62)),setColor(Q.Switch,"secondary
79DisabledColor",ae(private_safeLighten,Q.secondary.main,.62)),setColor(Q.Switch,"errorDisabledColor",ae(private_safeLighten,Q.error.main,.62)),setColor(Q.Switch,"infoDisabledColor",ae(private_safeLighten,Q.info.main,.62)),setColor(Q.Switch,"successDisabledColor",ae(private_safeLighten,Q.success.main,.62)),setColor(Q.Switch,"warningDisabledColor",ae(private_safeLighten,Q.warning.main,.62)),setColor(Q.TableCell,"border",ae(private_safeLighten,ae(private_safeAlpha,Q.divider,1),.88)),setColor(Q.Tooltip,"bg",ae(private_safeAlpha,Q.grey[700],.92))}if(Q.mode==="dark"){setColor(Q.Alert,"errorColor",ae(private_safeLighten,Q.error.light,.6)),setColor(Q.Alert,"infoColor",ae(private_safeLighten,Q.info.light,.6)),setColor(Q.Alert,"successColor",ae(private_safeLighten,Q.success.light,.6)),setColor(Q.Alert,"warningColor",ae(private_safeLighten,Q.warning.light,.6)),setColor(Q.Alert,"errorFilledBg",ie("palette-error-dark")),setColor(Q.Alert,"infoFilledBg",ie("palette-info-dark")),setColor(Q.Alert,"successFilledBg",ie("palette-success-dark")),setColor(Q.Alert,"warningFilledBg",ie("palette-warning-dark")),setColor(Q.Alert,"errorFilledColor",silent(()=>Q.getContrastText(Q.error.dark))),setColor(Q.Alert,"infoFilledColor",silent(()=>Q.getContrastText(Q.info.dark))),setColor(Q.Alert,"successFilledColor",silent(()=>Q.getContrastText(Q.success.dark))),setColor(Q.Alert,"warningFilledColor",silent(()=>Q.getContrastText(Q.warning.dark))),setColor(Q.Alert,"errorStandardBg",ae(private_safeDarken,Q.error.light,.9)),setColor(Q.Alert,"infoStandardBg",ae(private_safeDarken,Q.info.light,.9)),setColor(Q.Alert,"successStandardBg",ae(private_safeDarken,Q.success.light,.9)),setColor(Q.Alert,"warningStandardBg",ae(private_safeDarken,Q.warning.light,.9)),setColor(Q.Alert,"errorIconColor",ie("palette-error-main")),setColor(Q.Alert,"infoIconColor",ie("palette-info-main")),setColor(Q.Alert,"successIconColor",ie("palette-success-main")),setColor(Q.Alert,"warningIconColor",ie("palette-warning-main")),setColor(Q.AppBar,"defaultBg",ie("palette-grey-900")),setColor(Q.AppBar,"darkBg",ie("palette-background-paper")),setColor(Q.AppBar,"darkColor",ie("palette-text-primary")),setColor(Q.Avatar,"defaultBg",ie("palette-grey-600")),setColor(Q.Button,"inheritContainedBg",ie("palette-grey-800")),setColor(Q.Button,"inheritContainedHoverBg",ie("palette-grey-700")),setColor(Q.Chip,"defaultBorder",ie("palette-grey-700")),setColor(Q.Chip,"defaultAvatarColor",ie("palette-grey-300")),setColor(Q.Chip,"defaultIconColor",ie("palette-grey-300")),setColor(Q.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(Q.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(Q.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(Q.LinearProgress,"primaryBg",ae(private_safeDarken,Q.primary.main,.5)),setColor(Q.LinearProgress,"secondaryBg",ae(private_safeDarken,Q.secondary.main,.5)),setColor(Q.LinearProgress,"errorBg",ae(private_safeDarken,Q.error.main,.5)),setColor(Q.LinearProgress,"infoBg",ae(private_safeDarken,Q.info.main,.5)),setColor(Q.LinearProgress,"successBg",ae(private_safeDarken,Q.success.main,.5)),setColor(Q.LinearProgress,"warningBg",ae(private_safeDarken,Q.warning.main,.5)),setColor(Q.Skeleton,"bg",V?ae(private_safeAlpha,Q.text.primary,.13):`rgba(${ie("palette-text-primaryChannel")} / 0.13)`),setColor(Q.Slider,"primaryTrack",ae(private_safeDarken,Q.primary.main,.5)),setColor(Q.Slider,"secondaryTrack",ae(private_safeDarken,Q.secondary.main,.5)),setColor(Q.Slider,"errorTrack",ae(private_safeDarken,Q.error.main,.5)),setColor(Q.Slider,"infoTrack",ae(private_safeDarken,Q.info.main,.5)),setColor(Q.Slider,"successTrack",ae(private_safeDarken,Q.success.main,.5)),setColor(Q.Slider,"warningTrack",ae(private_safeDarken,Q.warning.main,.5));const re=V?ae(private_safeLighten,Q.background.default,.985):private_safeEmphasize(Q.background.default,.98);setColor(Q.SnackbarContent,"bg",re),setColor(Q.SnackbarContent,"color",silent(()=>V?light.text.primary:Q.getContrastText(re))),setColor(Q.SpeedDialAction,"fabHoverBg",private_safeEmphasize(Q.background.paper,.15)),setColor(Q.StepConnector,"border",ie("palette-grey-600")),setColor(Q.StepContent,"border",ie("palette-grey-600")),setColor(Q.Switch,"defaultColor",ie("palette-grey-300")),setColor(Q.Switch,"defaultDisabledColor",ie("palette-grey-600")),setColor(Q.Switch,"primaryDisabledColor",ae(private_safeDarken,Q.primary.main,.55)),setColor(Q.Switch,"secondary
79DisabledColor",ae(private_safeDarken,Q.secondary.main,.55)),setColor(Q.Switch,"errorDisabledColor",ae(private_safeDarken,Q.error.main,.55)),setColor(Q.Switch,"infoDisabledColor",ae(private_safeDarken,Q.info.main,.55)),setColor(Q.Switch,"successDisabledColor",ae(private_safeDarken,Q.success.main,.55)),setColor(Q.Switch,"warningDisabledColor",ae(private_safeDarken,Q.warning.main,.55)),setColor(Q.TableCell,"border",ae(private_safeDarken,ae(private_safeAlpha,Q.divider,1),.68)),setColor(Q.Tooltip,"bg",ae(private_safeAlpha,Q.grey[700],.92))}setColorChannel(Q.background,"default"),setColorChannel(Q.background,"paper"),setColorChannel(Q.common,"background"),setColorChannel(Q.common,"onBackground"),setColorChannel(Q,"divider"),Object.keys(Q).forEach(re=>{const J=Q[re];re!=="tonalOffset"&&J&&typeof J=="object"&&(J.main&&setColor(Q[re],"mainChannel",private_safeColorChannel(toRgb(J.main))),J.light&&setColor(Q[re],"lightChannel",private_safeColorChannel(toRgb(J.light))),J.dark&&setColor(Q[re],"darkChannel",private_safeColorChannel(toRgb(J.dark))),J.contrastText&&setColor(Q[re],"contrastTextChannel",private_safeColorChannel(toRgb(J.contrastText))),re==="text"&&(setColorChannel(Q[re],"primary"),setColorChannel(Q[re],"secondary")),re==="action"&&(J.active&&setColorChannel(Q[re],"active"),J.selected&&setColorChannel(Q[re],"selected")))})}),W=u.reduce((se,Q)=>deepmerge(se,Q),W);const K={prefix:C,disableCssColorScheme:E,shouldSkipGeneratingVar:P,getSelector:defaultGetSelector(W),enableContrastVars:_},{vars:Y,generateThemeVars:ee,generateStyleSheets:oe}=prepareCssVars(W,K);return W.vars=Y,Object.entries(W.colorSchemes[W.defaultColorScheme]).forEach(([se,Q])=>{W[se]=Q}),W.generateThemeVars=ee,W.generateStyleSheets=oe,W.generateSpacing=function(){return createSpacing(L.spacing,createUnarySpacing(this))},W.getColorSchemeSelector=createGetColorSchemeSelector(R),W.spacing=W.generateSpacing(),W.shouldSkipGeneratingVar=P,W.unstable_sxConfig={...defaultSxConfig,...L==null?void 0:L.unstable_sxConfig},W.unstable_sx=function(Q){return styleFunctionSx({sx:Q,theme:this})},W.toRuntimeSource=stringifyTheme,W}function attachColorScheme(o,u,T){o.colorSchemes&&T&&(o.colorSchemes[u]={...T!==!0&&T,palette:createPalette({...T===!0?{}:T.palette,mode:u})})}function createTheme(o={},...u){const{palette:T,cssVariables:S=!1,colorSchemes:E=T?void 0:{light:!0},defaultColorScheme:C=T==null?void 0:T.mode,..._}=o,P=C||"light",R=E==null?void 0:E[P],I={...E,...T?{[P]:{...typeof R!="boolean"&&R,palette:T}}:void 0};if(S===!1){if(!("colorSchemes"in o))return createThemeNoVars(o,...u);let L=T;"palette"in o||I[P]&&(I[P]!==!0?L=I[P].palette:P==="dark"&&(L={mode:"dark"}));const j=createThemeNoVars({...o,palette:L},...u);return j.defaultColorScheme=P,j.colorSchemes=I,j.palette.mode==="light"&&(j.colorSchemes.light={...I.light!==!0&&I.light,palette:j.palette},attachColorScheme(j,"dark",I.dark)),j.palette.mode==="dark"&&(j.colorSchemes.dark={...I.dark!==!0&&I.dark,palette:j.palette},attachColorScheme(j,"light",I.light)),j}return!T&&!("light"in I)&&P==="light"&&(I.light=!0),createThemeWithVars({..._,colorSchemes:I,defaultColorScheme:P,...typeof S!="boolean"&&S},...u)}const defaultTheme$1=createTheme();function useTheme(){const o=useTheme$2(defaultTheme$1);return o[THEME_ID]||o}function slotShouldForwardProp(o){return o!=="ownerState"&&o!=="theme"&&o!=="sx"&&o!=="as"}const rootShouldForwardProp=o=>slotShouldForwardProp(o)&&o!=="classes",styled=createStyled({themeId:THEME_ID,defaultTheme:defaultTheme$1,rootShouldForwardProp});function ThemeProviderNoVars({theme:o,...u}){const T=THEME_ID in o?o[THEME_ID]:void 0;return jsxRuntimeExports.jsx(ThemeProvider$1,{...u,themeId:T?THEME_ID:void 0,theme:T||o})}const defaultConfig={colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:InternalCssVarsProvider}=createCssVarsProvider({themeId:THEME_ID,theme:()=>createTheme({cssVariables:!0}),colorSchemeStorageKey:defaultConfig.colorSchemeStorageKey,modeStorageKey:defaultConfig.modeStorageKey,defaultColorScheme:{light:defaultConfig.defaultLightColorScheme,dark:defaultConfig.defaultDar
79kColorScheme},resolveTheme:o=>{const u={...o,typography:createTypography(o.palette,o.typography)};return u.unstable_sx=function(S){return styleFunctionSx({sx:S,theme:this})},u}}),CssVarsProvider=InternalCssVarsProvider;function ThemeProvider({theme:o,...u}){const T=reactExports.useMemo(()=>{if(typeof o=="function")return o;const S=THEME_ID in o?o[THEME_ID]:o;return"colorSchemes"in S?null:"vars"in S?o:{...o,vars:null}},[o]);return T?jsxRuntimeExports.jsx(ThemeProviderNoVars,{theme:T,...u}):jsxRuntimeExports.jsx(CssVarsProvider,{theme:o,...u})}const firebaseConfig={apiKey:"AIzaSyAhMtUEk4ewaYBoiMJUZgQw2SPKQHPWrMI",authDomain:"giao-vien-doi-moi.firebaseapp.com",projectId:"giao-vien-doi-moi",storageBucket:"giao-vien-doi-moi.firebasestorage.app",messagingSenderId:"198677949267",appId:"1:198677949267:web:fd0be4a88b3d2a4f734fa6",databaseURL:"https://giao-vien-doi-moi-default-rtdb.asia-southeast1.firebasedatabase.app"},app=initializeApp(firebaseConfig),RECAPTCHA_SITE_KEY="6Le9ZncsAAAAAFiL50lrRu_vsXPOdiu-KZtEZaCA",appCheck=initializeAppCheck(app,{provider:new ReCaptchaV3Provider(RECAPTCHA_SITE_KEY),isTokenAutoRefreshEnabled:!0}),auth=getAuth(app),db=getFirestore(app),storage=getStorage(app),realtimeDb=getDatabase(app),googleProvider=new GoogleAuthProvider,config$1=Object.freeze(Object.defineProperty({__proto__:null,appCheck,auth,db,default:app,googleProvider,realtimeDb,storage},Symbol.toStringTag,{value:"Module"}));function isInAppBrowser(){if(typeof navigator>"u")return!1;const o=navigator.userAgent.toLowerCase();return o.includes("zalo")||o.includes("fban")||o.includes("fbav")||o.includes("instagram")||o.includes("wechat")||o.includes("micromessenger")||o.includes("qq/")}function isDesktopDevice(){var _;if(typeof window>"u"||typeof navigator>"u")return!0;const o=navigator.userAgent.toLowerCase(),u=/android(?!.*tablet)|webos|iphone|ipod|blackberry|iemobile|opera mini|mobile/i.test(o),S=/macintosh/i.test(o)&&typeof navigator.maxTouchPoints=="number"&&navigator.maxTouchPoints>1||/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk)/i.test(o),E=o.includes("zalo")||o.includes("fban")||o.includes("fbav")||o.includes("instagram")||o.includes("wechat")||o.includes("micromessenger")||o.includes("qq/");return!(u||S||E||(((_=window.screen)==null?void 0:_.width)||window.innerWidth||1920)<1024)}const DESKTOP_SESSION_KEY="desktopSessionId",SESSION_FIELD="activeDesktopSession",USERS_COLLECTION="subscriptions",VERIFY_CACHE_TTL_MS=6e5;let _lastVerifyOk=0,_lastVerifyUid=null;function showKickedOverlay(o=6){if(document.getElementById("session-expired-overlay"))return Promise.resolve();const u=document.createElement("div");return u.id="session-expired-overlay",u.style.cssText=["position:fixed","top:0","left:0","right:0","bottom:0","background:rgba(10,8,25,0.94)","z-index:2147483647","display:flex","flex-direction:column","align-items:center","justify-content:center",'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif',"backdrop-filter:blur(8px)","animation:sgFadeIn 0.35s ease"].join(";"),u.innerHTML=` 80 <style> 81 @keyframes sgFadeIn { from { opacity:0; transform:scale(0.97) } to { opacity:1; transform:scale(1) } } 82 @keyframes sgPulse { 0%,100% { transform:scale(1) } 50% { transform:scale(1.12) } } 83 </style> 84 <div style="background:linear-gradient(145deg,#1a1040,#0f1b35);border:1px solid rgba(255,90,90,0.4);border-radius:24px;padding:52px 60px;text-align:center;max-width:540px;width:90%;box-shadow:0 28px 80px rgba(0,0,0,0.85)"> 85 <div style="font-size:68px;margin-bottom:22px;animation:sgPulse 2s infinite">ð</div> 86 <div style="color:#ff6b6b;font-size:1.45rem;font-weight:700;margin-bottom:16px">Phiên ÄÄng nháºp Äã hết hạn</div> 87 <div style="color:rgba(255,255,255,0.82);font-size:1.02rem;line-height:1.75;margin-bottom:32px"> 88 Tà i khoản Äang ÄÆ°á»£c sá» dụng<br/> 89 trên <strong style="color:white">má»t máy tÃnh khác</strong>.<br/> 90 Vui lòng ÄÄng nháºp lại Äá» tiếp tục. 91 </div> 92 <div style="color:rgba(255,255,255,0.45);font-size:0.92rem;padding:12px 28px;background:rgba(255,255,255,0.06);border-radius:50px;display:inline-block"> 93 Tá»± Äá»ng ÄÄng xuất sau <span id="sgCountdown" style="color:#ff6b6b;font-weight:700">${o}</span> giây... 94 </div> 95 </div> 96 `,document.body.appendChild(u),new Promise(T=>{let S=o;const E=setInterval(()=>{S-=1;const C=document.getElementById("sgCountdown");C&&(C.textContent=String(S)),S<=0&&(clearInterval(E),T())},1e3)})}async function emergencySignOut(){var o;try{localStorage.removeItem(DESKTOP_SESSION_KEY),await showKickedOverlay(6),await signOut(auth),window.location.href="/"}
96catch(u){localStorage.removeItem(DESKTOP_SESSION_KEY),(o=document.getElementById("session-expired-overlay"))==null||o.remove(),console.error("[SessionGuard] Emergency sign out error:",u),window.location.href="/"}}function useSessionGuard(){const{currentUser:o}=useAuth();return{verifySession:reactExports.useCallback(async()=>{var C;if(!isDesktopDevice())return!0;if(!o)return console.warn("[SessionGuard] verifySession called but no currentUser."),!1;const T=o.uid;if(_lastVerifyUid===T&&Date.now()-_lastVerifyOk<VERIFY_CACHE_TTL_MS)return!0;const S=localStorage.getItem(DESKTOP_SESSION_KEY);if(!S)return console.log("[SessionGuard] Local session missing, silently recreating..."),await createDesktopSession(o),!0;let E=null;try{const _=doc(db,USERS_COLLECTION,T),P=await getDocFromServer(_);if(!P.exists())return console.warn("[SessionGuard] User document not found on Firestore."),!0;E=((C=P.data())==null?void 0:C[SESSION_FIELD])??null}catch(_){return console.error("[SessionGuard] Failed to fetch session from server:",_),!0}return S===E?(_lastVerifyOk=Date.now(),_lastVerifyUid=T,!0):(_lastVerifyOk=0,_lastVerifyUid=null,console.warn(`[SessionGuard] Session mismatch! Local: "${S}", Server: "${E}". Kicking out...`),emergencySignOut(),!1)},[o])}}async function createDesktopSession(o){if(!isDesktopDevice())return null;if(!(o!=null&&o.uid))return console.warn("[SessionGuard] createDesktopSession called without valid user."),null;try{const u=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`session_${Date.now()}_${Math.random().toString(36).substring(2,11)}`,T=doc(db,USERS_COLLECTION,o.uid);return await setDoc(T,{[SESSION_FIELD]:u,[`${SESSION_FIELD}UpdatedAt`]:new Date().toISOString()},{merge:!0}),localStorage.setItem(DESKTOP_SESSION_KEY,u),_lastVerifyOk=0,_lastVerifyUid=null,console.log(`[SessionGuard] Session created: "${u}" for ${o.email}`),u}catch(u){return console.warn("[SessionGuard] createDesktopSession failed:",u.message),null}}const VI_FALLBACK={errInvalidCredential:"Phiên ÄÄng nháºp Google trên trình duyá»t nà y Äã hết hạn. Cách xá» lý: má» cá»a sỠẩn danh (Ctrl + Shift + N) rá»i ÄÄng nháºp lại. Nếu và o ÄÆ°á»£c, hãy quay lại cá»a sá» thưá»ng và xoá cookie cá»§a Google (Cà i Äặt â Quyá»n riêng tư â Xoá dữ liá»u duyá»t web â chá»n Cookie).",errPopupBlocked:"Trình duyá»t Äã chặn cá»a sá» ÄÄng nháºp Google. Hãy bấm và o biá»u tượng chặn pop-up á» góc phải thanh Äá»a chá», chá»n Luôn cho phép, rá»i thá» lại.",errPopupClosed:"Bạn Äã Äóng cá»a sá» ÄÄng nháºp Google trưá»c khi chá»n xong tà i khoản. Hãy bấm ÄÄng nháºp bằng Google lần nữa.",errCookiesBlocked:"Trình duyá»t Äang chặn cookie nên không ÄÄng nháºp Google ÄÆ°á»£c. Hãy và o Cà i Äặt â Quyá»n riêng tư â Cookie, chá»n Cho phép cookie cá»§a bên thứ ba (hoặc tắt tiá»n Ãch chặn quảng cáo cho trang nà y), rá»i thá» lại.",errNetwork:"Mất kết ná»i mạng khi Äang ÄÄng nháºp. Hãy kiá»m tra lại Wi-Fi hoặc 4G rá»i thá» lại.",errTooManyRequests:"Bạn Äã thá» ÄÄng nháºp quá nhiá»u lần. Vui lòng Äợi và i phút rá»i thá» lại.",errUserDisabled:"Tà i khoản nà y Äã bá» khoá. Vui lòng liên há» quản trá» viên Äá» ÄÆ°á»£c há» trợ.",errWebView:"Bạn Äang má» trang trong ứng dụng Zalo/Facebook nên không ÄÄng nháºp Google ÄÆ°á»£c. Hãy bấm dấu ba chấm á» góc trên bên phải, chá»n Má» bằng trình duyá»t, rá»i ÄÄng nháºp lại.",errUnknown:"Không ÄÄng nháºp ÄÆ°á»£c. Hãy thá» má» cá»a sỠẩn danh (Ctrl + Shift + N) hoặc dùng trình duyá»t khác. Nếu vẫn lá»i, chụp mà n hình nà y gá»i cho quản trá» viên."},CODE_TO_KEY={"auth/invalid-credential":"errInvalidCredential","auth/user-token-expired":"errInvalidCredential","auth/invalid-user-token":"errInvalidCredential","auth/popup-blocked":"errPopupBlocked","auth/popup-closed-by-user":"errPopupClosed","auth/cancelled-popup-request":"errPopupClosed","auth/web-storage-unsupported":"errCookiesBlocked","auth/network-request-failed":"errNetwork","auth/too-many-requests":"errTooManyRequests","auth/user-disabled":"errUserDisabled","auth/operation-not-supported-in-this-environment":"errWebView"};function mapAuthError(o,u){const T=(o==null?void 0:o.code)||"",S=(o==null?void 0:o.message)||"",E=(P,R)=>u?u(P,R):VI_FALLBACK[P]??P,C=CODE_TO_KEY[T];if(C)return E(C);if(!T&&S)return S;const _=T?u?u("errCodeHint",{code:T}):`Mã lá»i: ${T}`:"";return`${E("errUnknown")} ${_}`.trim()}const AuthContext=reactExports.createContext({}),isMobileOrWebView=()=>{const o=navigator.userAgent.toLowerCase(),u=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(o),T=o.includes("zalo")||o.includes("fban")||o.includes("fbav")||o.includes("instagram")||o.includes("wechat")||o.includes("qq")||o.includes("micromessenger"),S=window.navigator.standalone===!0;return u||T||S},useAuth=()=>{const o=reactExports.useContext(AuthContext);if(!o)throw new Error("useAuth must be used within AuthProvider");return o},AuthProvider=({children:o})=>{const[u,T]=reactExports.useState(null),[S,E]=reactExports.useState(!0),[C,_]=reactExports.useState(null),[P,R]=reactExports.useState(""),I=D=>{},L=async()=>{var D;try{_(null),R(""),I("Starting loginWithGoogle...");const F=window.location.hostname;if(/^192\.168\.|^172\.16\.|^172\.31\.|^10\./.test(F)&&F!=="localhost"){const B=`Không há» trợ ÄÄng nháºp qua IP LAN ${F}. Vui lòng dùng localhost hoặc domain tháºt.`;throw _(B),I(B),new Error(B)}googleProvider.setCustomParameters({prompt:"select_account"});const G=isMobileOrWebView();I(`isMobile/WebView detected: ${G}`);
96try{I("Attempting signInWithPopup...");const B=await signInWithPopup(auth,googleProvider);return I(`Popup success for: ${(D=B.user)==null?void 0:D.email}`),B.user&&(await createDesktopSession(B.user),I(`Desktop session created for: ${B.user.email}`)),B.user}catch(B){if(I(`Popup failed: [${B.code}] ${B.message}`),G||B.code==="auth/internal-error"||B.code==="auth/popup-blocked")return I("Fallback to signInWithRedirect..."),sessionStorage.setItem("isGoogleRedirecting","true"),await signInWithRedirect(auth,googleProvider),null;throw B}}catch(F){throw I(`Fatal error: ${F.message}`),console.error("Error signing in with Google:",F),F}},j=async()=>{try{await signOut(auth)}catch(D){throw console.error("Error signing out:",D),D}};reactExports.useEffect(()=>{let D=()=>{},F=!0;return(async()=>{const G=sessionStorage.getItem("isGoogleRedirecting")==="true";try{I("Checking redirect result...");const B=await Promise.race([getRedirectResult(auth),new Promise((H,O)=>setTimeout(()=>O(Object.assign(new Error("getRedirectResult timeout"),{code:"auth/network-request-failed"})),1e4))]);B!=null&&B.user?(I(`Redirect result OK: ${B.user.email}`),await createDesktopSession(B.user),I(`Desktop session created (redirect flow) for: ${B.user.email}`)):I("Redirect result is NULL.")}catch(B){I(`Redirect error: [${(B==null?void 0:B.code)||"timeout"}] ${B.message}`),F&&_(mapAuthError(B))}finally{G&&sessionStorage.removeItem("isGoogleRedirecting"),D=onAuthStateChanged(auth,B=>{F&&(I(`onAuthStateChanged fired. User = ${(B==null?void 0:B.email)||"null"}`),T(B),E(!1))})}})(),()=>{F=!1,D()}},[]);const M={currentUser:u,loading:S,authError:C,authDebugLog:P,loginWithGoogle:L,logout:j};return jsxRuntimeExports.jsx(AuthContext.Provider,{value:M,children:S?jsxRuntimeExports.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"100vh",background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},children:jsxRuntimeExports.jsxs("div",{style:{color:"white",fontSize:"1.5em",fontWeight:"600",textAlign:"center",padding:"20px"},children:["Äang xá» lý ÄÄng nháºp...",!1]})}):o})},APP_SALT="gvdm-2026-secure-companion-robot";async function deriveKey(o){const u=new TextEncoder,T=await crypto.subtle.importKey("raw",u.encode(o+APP_SALT),{name:"PBKDF2"},!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:u.encode(APP_SALT),iterations:1e5,hash:"SHA-256"},T,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function encryptApiKey(o,u){const T=await deriveKey(u),S=crypto.getRandomValues(new Uint8Array(12)),E=new TextEncoder,C=await crypto.subtle.encrypt({name:"AES-GCM",iv:S},T,E.encode(o)),_=Array.from(S).map(R=>R.toString(16).padStart(2,"0")).join(""),P=btoa(String.fromCharCode(...new Uint8Array(C)));return`${_}:${P}`}async function decryptApiKey(o,u){const[T,S]=o.split(":");if(!T||!S)throw new Error("Invalid encrypted format");const E=new Uint8Array(T.match(/.{2}/g).map(I=>parseInt(I,16))),C=Uint8Array.from(atob(S),I=>I.charCodeAt(0)),_=await deriveKey(u),P=new TextDecoder,R=await crypto.subtle.decrypt({name:"AES-GCM",iv:E},_,C);return P.decode(R)}function isEncrypted(o){return/^[0-9a-f]{24}:[A-Za-z0-9+/=]+$/.test(o)}const saveApiKeyToFirebase=async(o,u,T)=>{if(!o||!u)throw new Error("userId và apiKey không ÄÆ°á»£c Äá» trá»ng");try{const S=await encryptApiKey(u,o),E=doc(db,"users",o);await setDoc(E,{gemini_api_key:S,gemini_model_name:T||"gemini-2.5-flash",updated_at:new Date},{merge:!0})}catch(S){throw console.error("Lá»i khi lưu API key:",S),S}},saveApiKeysToFirebase=async(o,u,T)=>{if(!o||u.length===0)throw new Error("userId và apiKeys không ÄÆ°á»£c Äá» trá»ng");try{const S=await Promise.all(u.map(C=>encryptApiKey(C,o))),E=doc(db,"users",o);await setDoc(E,{gemini_api_key:S[0],gemini_api_keys:S,gemini_model_name:T||"gemini-2.5-flash",updated_at:new Date},{merge:!0})}catch(S){throw console.error("Lá»i khi lưu API keys:",S),S}},loadApiKeyFromFirebase=async o=>{if(!o)throw new Error("userId không ÄÆ°á»£c Äá» trá»ng");try{const u=doc(db,"users",o),T=await getDoc(u);if(T.exists()){const S=T.data();let E=S.gemini_api_key||"";if(E&&isEncrypted(E))try{E=await decryptApiKey(E,o)}catch{console.error("Không thá» giải mã API key â key có thá» bá» há»ng"),E=""}let C=[];return S.gemini_api_keys&&Array.isArray(S.gemini_api_keys)&&(C=await Promise.all(S.gemini_api_keys.map(async _=>{if(_&&isEncrypted(_))try{return await decryptApiKey(_,o)}catch{return""}return _||""})),C=C.filter(_=>_.length>0)),C.length===0&&E&&(C=[E]),{apiKey:E,apiKeys:C,modelName:S.gemini_model_name||"gemini-2.5-flash"}}return{apiKey:"",apiKeys:[],modelName:"gemini-2.5-flash"}}catch(u){throw console.error("Lá»i khi load API key:",u),u}},deleteApiKeyFromFirebase=async o=>{if(!o)throw new Error("userId không ÄÆ°á»£c Äá» trá»ng");try{const u=doc(db,"users",o);await setDoc(u,{gemini_api_key:null,gemini_model_name:null},{merge:!0})}catch(u){throw console.error("Lá»i khi xóa API key:",u),u}},AIContext=reactExports.createContext(void 0),AI_MODELS=[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Mạnh nhất)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash (Nhanh)"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash-Lite (Rất nhanh
96)"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash (á»n Äá»nh)"},{id:"gemini-2.0-flash-lite",name:"Gemini 2.0 Flash-Lite (Rất á»n Äá»nh)"}];function AIProvider({children:o}){const{currentUser:u}=useAuth(),[T,S]=reactExports.useState(""),[E,C]=reactExports.useState([]),[_,P]=reactExports.useState(AI_MODELS[1].id),[R,I]=reactExports.useState(!1),[L,j]=reactExports.useState(!1),[M,D]=reactExports.useState(!0);reactExports.useEffect(()=>{(async()=>{if(!(u!=null&&u.uid)){D(!1);return}if(u.isAnonymous){D(!1);return}try{const{apiKey:U,apiKeys:W,modelName:K}=await loadApiKeyFromFirebase(u.uid);U&&(S(U),I(!0)),W&&W.length>0&&C(W),K&&P(K)}catch(U){console.error("Lá»i load API key từ Firebase:",U)}finally{D(!1)}})()},[u==null?void 0:u.uid,u==null?void 0:u.isAnonymous]);const F=async(V,U)=>{if(!(u!=null&&u.uid)){console.error("Ngưá»i dùng chưa ÄÄng nháºp");return}if(u.isAnonymous){console.error("Anonymous users cannot save API keys");return}try{const W=U||_;await saveApiKeyToFirebase(u.uid,V,W),S(V),C(K=>K.length>0?[V,...K.slice(1)]:[V]),P(W),I(!!V)}catch(W){throw console.error("Lá»i khi lưu API key:",W),W}},N=async(V,U)=>{if(!(!(u!=null&&u.uid)||u.isAnonymous))try{const W=U||_;await saveApiKeysToFirebase(u.uid,V,W),C(V),S(V[0]||""),P(W),I(V.length>0)}catch(W){throw console.error("Lá»i khi lưu API keys:",W),W}},G=async V=>{if(!(u!=null&&u.uid)){console.error("Ngưá»i dùng chưa ÄÄng nháºp");return}if(u.isAnonymous){console.error("Anonymous users cannot save model name");return}try{await saveApiKeyToFirebase(u.uid,T,V),P(V)}catch(U){throw console.error("Lá»i khi lưu model name:",U),U}},B=async()=>{if(!(u!=null&&u.uid)){console.error("Ngưá»i dùng chưa ÄÄng nháºp");return}try{await deleteApiKeyFromFirebase(u.uid),S(""),C([]),I(!1)}catch(V){throw console.error("Lá»i khi xóa API key:",V),V}},H=()=>{j(!0)},O=()=>{j(!1)};return jsxRuntimeExports.jsx(AIContext.Provider,{value:{apiKey:T,apiKeys:E,isApiKeySet:R,saveApiKey:F,saveApiKeys:N,clearApiKey:B,openApiKeyModal:H,closeApiKeyModal:O,showModal:L,modelName:_,saveModelName:G,isLoading:M},children:o})}const ConsoleContext=reactExports.createContext(void 0);function ConsoleProvider({children:o}){return reactExports.useEffect(()=>{},[]),jsxRuntimeExports.jsx(ConsoleContext.Provider,{value:{},children:o})}const AI_TOOLS_MAP=[{id:"aiTool1",label:"skkn",featureCode:"aiT1",legacyGroupKey:"aiToolsUnlocked"},{id:"aiTool2",label:"bienphap",featureCode:"aiT2",legacyGroupKey:"aiToolsUnlocked"},{id:"aiTool4",label:"hocba",featureCode:"aiT4",legacyGroupKey:"aiToolsUnlocked"},{id:"aiTool5",label:"dethi7991",featureCode:"aiT5",legacyGroupKey:"aiToolsGroup2Unlocked"},{id:"aiTool6",label:"dethi7991en",featureCode:"aiT6",legacyGroupKey:"aiToolsGroup2Unlocked"},{id:"aiTool7",label:"dethinguvan",featureCode:"aiT7",legacyGroupKey:"aiToolsGroup2Unlocked"},{id:"aiTool8",label:"phantichde",featureCode:"aiT8",legacyGroupKey:"aiToolsGroup2Unlocked"},{id:"aiTool9",label:"giaoanmamnon",featureCode:"aiT9"},{id:"aiTool10",label:"phanmem",featureCode:"aiT10",legacyGroupKey:"aiToolsGroup3Unlocked"},{id:"aiTool11",label:"khgd3439",featureCode:"aiT11",legacyGroupKey:"aiToolsGroup4Unlocked"},{id:"aiTool14",label:"khgdai",featureCode:"aiT14",legacyGroupKey:"aiToolsGroup4Unlocked"},{id:"aiTool13",label:"giaoancde",featureCode:"aiT13",legacyGroupKey:"aiToolsGroup4Unlocked"},{id:"aiTool16",label:"tichhoptonghop",featureCode:"aiT16"}];Object.fromEntries(AI_TOOLS_MAP.map(o=>[o.featureCode,o.id]));const TRIAL_LIMITS={interactiveVideo:5,quizGame:5,panorama:3,companionRobot:5,wheelQuiz:15,wheelQuizPlay:15,wheelQuizSets:15,handSlashQuiz:5,flipPuzzle:5,pacedQuiz:5,crosswordPuzzle:5,tugOfWar:5,interactiveImage:5,headTiltQuiz:5,journey:1,poseQuiz:5,turnBasedGame:5,versusGame:1,paperMode:5,faceRandom:10,scavengerHunt:1,starBagGame:5,minesweeper:5,htmlEmbedGame:1,flashcard:5,mindMap:5,knowledgeTrain:5,flyingWordsGame:5},PRO_FEATURE_LABELS={interactiveVideo:{name:"Video tương tác",nameEn:"Interactive Video",unit:"video",unitEn:"videos"},quizGame:{name:"Kéo Thả - Ná»i Ã",nameEn:"Drag & Drop - Matching",unit:"bà i",unitEn:"lessons"},panorama:{name:"Phòng ảo 360°",nameEn:"360° Virtual Room",unit:"phòng",unitEn:"rooms"},wheelQuiz:{name:"Vòng quay - Lượt chÆ¡i",nameEn:"Wheel Quiz - Play Sessions",unit:"lượt chÆ¡i",unitEn:"play sessions"},pacedQuiz:{name:"Paced Quiz",nameEn:"Paced Quiz",unit:"bà i",unitEn:"lessons"},flipPuzzle:{name:"Láºt mảnh ghép",nameEn:"Flip Puzzle",unit:"bà i",unitEn:"lessons"}
96,crosswordPuzzle:{name:"Giải ô chữ",nameEn:"Crossword Puzzle",unit:"bà i",unitEn:"lessons"},handSlashQuiz:{name:"Game chém tay",nameEn:"Hand Slash Quiz",unit:"bà i",unitEn:"lessons"},headTiltQuiz:{name:"Trắc nghiá»m nghiêng Äầu",nameEn:"Head Tilt Quiz",unit:"bà i",unitEn:"lessons"},interactiveImage:{name:"Ảnh tương tác",nameEn:"Interactive Image",unit:"ảnh",unitEn:"images"},tugOfWar:{name:"Kéo co",nameEn:"Tug of War",unit:"trò chÆ¡i",unitEn:"games"},turnBasedGame:{name:"Game Theo Lượt",nameEn:"Turn-Based Game",unit:"bà i",unitEn:"games"},poseQuiz:{name:"Thá» dục ABC",nameEn:"Pose Slideshow Quiz",unit:"bà i",unitEn:"lessons"},journey:{name:"Hà nh Trình Há»c Táºp",nameEn:"Learning Journey",unit:"hà nh trình",unitEn:"journeys"},versusGame:{name:"Game Äá»i Kháng",nameEn:"Versus Battle Game",unit:"bà i",unitEn:"games"},faceRandom:{name:"Gá»i Há»c Sinh Bằng Camera",nameEn:"Random Student Camera Picker",unit:"lượt gá»i",unitEn:"sessions"},starBagGame:{name:"Cuá»c Äua ngôi sao",nameEn:"Star Bag Game",unit:"bà i",unitEn:"games"},flashcard:{name:"Thẻ láºt (Flashcard)",nameEn:"Flip Cards (Flashcard)",unit:"bá» thẻ",unitEn:"decks"},htmlEmbedGame:{name:"Game tá»± tạo",nameEn:"Custom Game",unit:"",unitEn:""},minesweeper:{name:"Dò Mìn",nameEn:"Minesweeper",unit:"bà i",unitEn:"lessons"},mindMap:{name:"SÆ¡ Äá» Tư Duy",nameEn:"Mind Map Builder",unit:"sÆ¡ Äá»",unitEn:"maps"},knowledgeTrain:{name:"Äoà n tà u tri thức",nameEn:"Knowledge Train",unit:"bà i",unitEn:"lessons"},flyingWordsGame:{name:"Từ ngữ biết bay",nameEn:"Flying Words",unit:"bà i",unitEn:"lessons"},scavengerHunt:{name:"SÄn Kho Báu",nameEn:"Scavenger Hunt",unit:"cuá»c sÄn",unitEn:"hunts"}},MAX_PRO_FEATURE_LIMIT=500;async function getUserSubscription(o){try{const u=doc(db,"subscriptions",o),T=await getDoc(u);if(T.exists())return T.data();{const S={subscriptionLevel:"trial",skknCount:0,bienphaCount:0,interactiveVideoCount:0,quizGameCount:0,panoramaCount:0,companionRobotCount:0,wheelQuizCount:0,flipPuzzleCount:0,pacedQuizCount:0,crosswordPuzzleCount:0,tugOfWarCount:0,interactiveImageCount:0,headTiltQuizCount:0,handSlashQuizCount:0,noiseTrackerCount:0,journeyCount:0,turnBasedGameCount:0,versusGameCount:0,paperModeCount:0,faceRandomCount:0,htmlEmbedGameCount:0,flashcardCount:0,mindMapCount:0,proPlan:{isPurchased:!1,purchasedAt:null},proPlanExpiresAt:null,extendedAssignmentExpiresAt:null,pinnedLessons:{},conductEvaluation:{status:"none",trialValidUntil:null,proExpiresAt:null},createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await setDoc(u,S),S}}catch(u){throw console.error("Error getting user subscription:",u),u}}async function checkCanUseFeature(o,u){var T;try{const S=await getUserSubscription(o),E=u+"Count",C=u+"ExpiresAt",_=S[E]||0,P=_>=999999,R=S[C],I=!!(R&&new Date(R)>new Date),L=S.proPlanExpiresAt,M=((T=S.proPlan)==null?void 0:T.isPurchased)===!0||L&&new Date(L)>new Date||S.subscriptionLevel==="premium";if(P||I||M){const H=P?Math.max(0,_-999999):_,O=MAX_PRO_FEATURE_LIMIT,V=H<O;let U="";P?U=" · VÄ©nh viá»
n":I?U=` · Hết hạn ${new Date(R).toLocaleDateString("vi-VN")}`:L&&(U=` · FullGame hết hạn ${new Date(L).toLocaleDateString("vi-VN")}`);let W=M?"FullGame":P?"Äã mua (vÄ©nh viá»
n)":"Äã mua";return{canUse:V,canCreate:V,canViewExisting:!0,remaining:V?O-H:0,level:M?"premium":"pro",currentCount:H,limit:O,expiresAt:R||null,isLegacy:P,isExpired:!1,message:V?`${W}${U}: ${H}/${O} lượt`:`${W}: Äã Äạt giá»i hạn tá»i Äa ${O} bà i há»c`}}const F=TRIAL_LIMITS[u]||5,N=S[u+"RevokedAt"];if(!!R||!!N){const H=R||N;return{canUse:!1,canCreate:!1,canViewExisting:!0,remaining:0,level:"expired",currentCount:_,limit:F,expiresAt:R||null,isLegacy:!1,isExpired:!0,message:H?`Äã hết hạn ngà y ${new Date(H).toLocaleDateString("vi-VN")} â Gia hạn Äá» tiếp tục`:"Äã hết hạn â Gia hạn Äá» tiếp tục"}}const B=F-_;return{canUse:B>0,canCreate:B>0,canViewExisting:!0,remaining:Math.max(0,B),level:"trial",currentCount:_,limit:F,expiresAt:null,isLegacy:!1,isExpired:!1,message:`Trial: Äã dùng ${_}/${F} lượt`}}catch(S){throw console.error(`Error checking ${u} feature:`,S),S}}async function updateFeatureCounter(o,u,T=1){try{const S=doc(db,"subscriptions",o),E=u+"Count";await updateDoc(S,{[E]:increment(T)})}catch(S){throw console.error(`Error updating ${u} counter:`,S),S}}async function incrementInteractiveVideoCount(o){try{await updateFeatureCounter(o,"interactiveVideo",1)}catch(u){throw console.error("Error incrementing interactive video count:",u),u}}async function incrementQuizGameCount(o){try{await updateFeatureCounter(o,"quizGame",1)}
96catch(u){throw console.error("Error incrementing quiz game count:",u),u}}async function incrementPanoramaCount(o){try{await updateFeatureCounter(o,"panorama",1)}catch(u){throw console.error("Error incrementing panorama count:",u),u}}async function getAIToolsAccess(o){try{const u=await getUserSubscription(o),T={},S=new Date,E=u.fullAiPlanExpiresAt,C=!!(E&&new Date(E)>S);for(const _ of AI_TOOLS_MAP){if(C){const L=Math.ceil((new Date(E).getTime()-S.getTime())/864e5);T[_.id]={unlocked:!0,expiresAt:E,isLegacy:!1,daysRemaining:L};continue}if(u[_.id]===!0){T[_.id]={unlocked:!0,expiresAt:null,isLegacy:!0,daysRemaining:null};continue}const P=_.id+"ExpiresAt",R=u[P]||null;if(R){const L=new Date(R),j=Math.ceil((L.getTime()-S.getTime())/(1e3*60*60*24));T[_.id]={unlocked:j>0,expiresAt:R,isLegacy:!1,daysRemaining:j>0?j:-1};continue}if(u.proAiToolsLegacy===!0&&_.legacyGroupKey==="aiToolsUnlocked"){T[_.id]={unlocked:!0,expiresAt:null,isLegacy:!0,daysRemaining:null};continue}if(_.legacyGroupKey?!!u[_.legacyGroupKey]||_.legacyGroupKey==="aiToolsGroup3Unlocked"&&!!u.aiSpecialistUnlocked:!1){T[_.id]={unlocked:!0,expiresAt:null,isLegacy:!0,daysRemaining:null};continue}T[_.id]={unlocked:!1,expiresAt:null,isLegacy:!1,daysRemaining:null}}return T}catch(u){return console.error("Error getting AI Tools access:",u),{}}}async function checkCanUseExtendedLink(o){try{const u=await getUserSubscription(o),T=u.extendedAssignmentExpiresAt,S=!!(T&&new Date(T)>new Date);return{canUse:S,expiresAt:T||null,maxYears:S?u.extendedLinkMaxYears??5:1}}catch(u){throw console.error("Error checking extended link access:",u),u}}async function checkCanCreateFlipPuzzle(o){try{const u=await checkCanUseFeature(o,"flipPuzzle");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="flipPuzzle",T}return u}catch(u){throw u}}async function incrementFlipPuzzleCount(o){try{await updateFeatureCounter(o,"flipPuzzle",1)}catch(u){throw console.error("Error incrementing flip puzzle count:",u),u}}async function checkCanCreateKnowledgeTrain(o){try{const u=await checkCanUseFeature(o,"knowledgeTrain");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="knowledgeTrain",T}return u}catch(u){throw u}}async function incrementKnowledgeTrainCount(o){try{await updateFeatureCounter(o,"knowledgeTrain",1)}catch(u){throw console.error("Error incrementing knowledge train count:",u),u}}async function checkCanCreatePacedQuiz(o){try{const u=await checkCanUseFeature(o,"pacedQuiz");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="pacedQuiz",T}return u}catch(u){throw u}}async function incrementPacedQuizCount(o){try{await updateFeatureCounter(o,"pacedQuiz",1)}catch(u){throw console.error("Error incrementing paced quiz count:",u),u}}async function checkCanCreateCrosswordPuzzle(o){try{const u=await checkCanUseFeature(o,"crosswordPuzzle");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="crosswordPuzzle",T}return u}catch(u){throw u}}async function incrementCrosswordPuzzleCount(o){try{await updateFeatureCounter(o,"crosswordPuzzle",1)}catch(u){throw console.error("Error incrementing crossword puzzle count:",u),u}}async function checkCanCreateTugOfWar(o){try{const u=await checkCanUseFeature(o,"tugOfWar");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="tugOfWar",T}return u}catch(u){throw u}}async function incrementTugOfWarCount(o){try{await updateFeatureCounter(o,"tugOfWar",1)}catch(u){throw console.error("Error incrementing tug of war count:",u),u}}async function checkCanCreateInteractiveImage(o){try{const u=await checkCanUseFeature(o,"interactiveImage");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="interactiveImage",T}return u}catch(u){throw u}}async function incrementInteractiveImageCount(o){try{await updateFeatureCounter(o,"interactiveImage",1)}catch(u){throw console.error("Error incrementing interactive image count:",u),u}}async function checkCanCreateHeadTiltQuiz(o){try{const u=await checkCanUseFeature(o,"headTiltQuiz");
96if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="headTiltQuiz",T}return u}catch(u){throw u}}async function incrementHeadTiltQuizCount(o){try{await updateFeatureCounter(o,"headTiltQuiz",1)}catch(u){throw console.error("Error incrementing head tilt quiz count:",u),u}}async function checkCanCreateJourney(o){try{const u=await checkCanUseFeature(o,"journey");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="journey",T}return u}catch(u){throw u}}async function incrementJourneyCount(o){try{await updateFeatureCounter(o,"journey",1)}catch(u){throw console.error("Error incrementing journey count:",u),u}}async function checkCanCreatePoseQuiz(o){try{const u=await checkCanUseFeature(o,"poseQuiz");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="poseQuiz",T}return u}catch(u){throw u}}async function incrementPoseQuizCount(o){try{await updateFeatureCounter(o,"poseQuiz",1)}catch(u){throw console.error("Error incrementing pose quiz count:",u),u}}async function getPinnedItems(o,u){var T;try{return((T=(await getUserSubscription(o)).pinnedLessons)==null?void 0:T[u])||[]}catch(S){return console.error("Error getting pinned items:",S),[]}}async function togglePinItem(o,u,T){var S;try{const E=doc(db,"subscriptions",o),C=await getUserSubscription(o),_=TRIAL_LIMITS[u]||5,P=((S=C.pinnedLessons)==null?void 0:S[u])||[];if(P.includes(T)){const I=P.filter(L=>L!==T);return await updateDoc(E,{pinnedLessons:{...C.pinnedLessons||{},[u]:I},updatedAt:new Date().toISOString()}),{pinned:!1,pinnedCount:I.length,limit:_,limitReached:!1}}else{if(P.length>=_)return{pinned:!1,pinnedCount:P.length,limit:_,limitReached:!0};const I=[...P,T];return await updateDoc(E,{pinnedLessons:{...C.pinnedLessons||{},[u]:I},updatedAt:new Date().toISOString()}),{pinned:!0,pinnedCount:I.length,limit:_,limitReached:!1}}}catch(E){throw console.error("Error toggling pin:",E),E}}async function autoPinRecentItems(o,u,T){var S;try{const E=await getUserSubscription(o);if((((S=E.pinnedLessons)==null?void 0:S[u])||[]).length>0)return;const _=TRIAL_LIMITS[u]||5,P=T.slice(0,_);if(P.length===0)return;const R=doc(db,"subscriptions",o);await updateDoc(R,{pinnedLessons:{...E.pinnedLessons||{},[u]:P},updatedAt:new Date().toISOString()})}catch(E){console.error("Error auto-pinning items:",E)}}async function checkCanCreateScavengerHunt(o){try{const u=await checkCanUseFeature(o,"scavengerHunt");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="scavengerHunt",T}return u}catch(u){throw u}}async function incrementScavengerHuntCount(o){try{await updateFeatureCounter(o,"scavengerHunt",1)}catch(u){throw console.error("Error incrementing scavenger hunt count:",u),u}}async function incrementStarBagGameCount(o){try{await updateFeatureCounter(o,"starBagGame",1)}catch(u){throw console.error("Error incrementing star bag game count:",u),u}}async function checkCanCreateMinesweeperGame(o){try{const u=await checkCanUseFeature(o,"minesweeper");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="minesweeper",T}return u}catch(u){throw u}}async function incrementMinesweeperGameCount(o){try{await updateFeatureCounter(o,"minesweeper",1)}catch(u){throw console.error("Error incrementing minesweeper game count:",u),u}}async function checkCanCreateHtmlEmbedGame(o){try{const u=await checkCanUseFeature(o,"htmlEmbedGame");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="htmlEmbedGame",T}return u}catch(u){throw u}}async function incrementHtmlEmbedGameCount(o){try{await updateFeatureCounter(o,"htmlEmbedGame",1)}catch(u){throw console.error("Error incrementing html embed game count:",u),u}}async function checkCanCreateFlashcard(o){try{const u=await checkCanUseFeature(o,"flashcard");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="flashcard",T}return u}catch(u){throw u}}
96async function incrementFlashcardCount(o){try{await updateFeatureCounter(o,"flashcard",1)}catch(u){throw console.error("Error incrementing flashcard count:",u),u}}async function checkCanCreateMindMap(o){try{const u=await checkCanUseFeature(o,"mindMap");if(!u.canUse){const T=new Error("LIMIT_REACHED");throw T.remaining=u.remaining,T.limit=u.limit,T.feature="mindMap",T}return u}catch(u){throw u}}async function incrementMindMapCount(o){try{await updateFeatureCounter(o,"mindMap",1)}catch(u){throw console.error("Error incrementing mind map count:",u),u}}function deriveFeatureStatus(o,u){var D,F;const T=TRIAL_LIMITS[u]||5;if(!o)return{canUse:!0,remaining:T,level:"trial",currentCount:0,limit:T,isExpired:!1};const S=o.proPlanExpiresAt,E=((D=o.proPlan)==null?void 0:D.isPurchased)===!0||S&&new Date(S)>new Date||o.subscriptionLevel==="premium"||o.subscriptionLevel==="pro",C=u+"Count",_=u+"ExpiresAt",P=o[C]||0,R=o[_],I=P>=999999,L=!!(R&&new Date(R)>new Date);if(E||I||L){const N=I?Math.max(0,P-999999):P;return{canUse:!0,canCreate:!0,remaining:-1,level:E?"premium":"pro",currentCount:N,limit:500,isExpired:!1,isLegacy:I||((F=o.proPlan)==null?void 0:F.isPurchased)}}if(!!R||!!S||!!o[u+"RevokedAt"])return{canUse:!1,canCreate:!1,remaining:0,level:"expired",currentCount:P,limit:T,isExpired:!0,isLegacy:!1};const M=T-P;return{canUse:M>0,canCreate:M>0,remaining:Math.max(0,M),level:"trial",currentCount:P,limit:T,isExpired:!1,isLegacy:!1}}const SubscriptionContext=reactExports.createContext(null),useSubscription=()=>{const o=reactExports.useContext(SubscriptionContext);if(!o)throw new Error("useSubscription must be used within SubscriptionProvider");return o},SubscriptionProvider=({children:o})=>{const{currentUser:u}=useAuth(),[T,S]=reactExports.useState(null),[E,C]=reactExports.useState(!1),[_,P]=reactExports.useState(!1),R=reactExports.useCallback(()=>P(!0),[]),I=reactExports.useCallback(async j=>{if(j){C(!0);try{const M=await getUserSubscription(j);S(M)}catch(M){(M==null?void 0:M.code)!=="permission-denied"&&console.error("[SubscriptionContext] Error fetching subscription:",M)}finally{C(!1)}}},[]);reactExports.useEffect(()=>{if(!(u!=null&&u.uid)){S(null);return}C(!0);const j=onSnapshot(doc(db,"subscriptions",u.uid),M=>{const D=M.exists()?M.data():null;S(D),C(!1)},M=>{(M==null?void 0:M.code)!=="permission-denied"&&(console.error("[SUB] onSnapshot error:",M),I(u.uid))});return()=>j()},[u==null?void 0:u.uid,I]);const L=reactExports.useCallback(()=>{u!=null&&u.uid&&I(u.uid)},[u==null?void 0:u.uid,I]);return jsxRuntimeExports.jsx(SubscriptionContext.Provider,{value:{subscription:T,subLoading:E,refreshSubscription:L,proModalOpen:_,setProModalOpen:P,openProModal:R},children:o})},STORAGE_KEY="mindmap_active_session",MindMapSessionContext=reactExports.createContext(null);function loadFromStorage(){try{const o=localStorage.getItem(STORAGE_KEY);return o?JSON.parse(o):null}catch{return null}}function saveToStorage(o){try{o?localStorage.setItem(STORAGE_KEY,JSON.stringify(o)):localStorage.removeItem(STORAGE_KEY)}catch{}}function flattenLeafNodes(o){const u=[];for(const T of o)if(T.children&&T.children.length>0)for(const S of T.children)u.push({nodeId:S.id,label:S.label,parentLabel:T.label,options:S.options||[],correctOptionIds:S.correctOptionIds||[],confirmedOptionIds:null});else u.push({nodeId:T.id,label:T.label,parentLabel:"",options:T.options||[],correctOptionIds:T.correctOptionIds||[],confirmedOptionIds:null});return u}function MindMapSessionProvider({children:o}){const[u,T]=reactExports.useState(()=>loadFromStorage());reactExports.useEffect(()=>{saveToStorage(u)},[u]);const S=reactExports.useCallback(R=>{const I={mapId:R.id,title:R.title,layout:R.layout??"radial",branchStyle:R.branchStyle??"organic",startedAt:Date.now(),nodes:flattenLeafNodes(R.nodes||[])};T(I)},[]),E=reactExports.useCallback((R,I)=>{T(L=>L&&{...L,nodes:L.nodes.map(j=>j.nodeId===R?{...j,confirmedOptionIds:I}:j)})},[]),C=reactExports.useCallback(()=>{if(!u)return{done:0,total:0};const R=u.nodes.length;return{done:u.nodes.filter(L=>L.confirmedOptionIds!==null).length,total:R}},[u]),_=reactExports.useCallback(()=>T(null),[]),P=reactExports.useCallback(()=>T(null),[]);return jsxRuntimeExports.jsx(MindMapSessionContext.Provider,{value:{session:u,startSession:S,confirmNode:E,getProgress:C,endSession:_,clearSession:P},children:o})}function useMindMapSession(){const o=reactExports.useContext(MindMapSessionContext);if(!o)throw new Error("useMindMapSession must be used within MindMapSessionProvider");return o}function renderFormulasOnly(o,u){const T=[],S=/\$([^$]+)\$/g;let E=0,C,_=u;for(;(C=S.exec(o))!==null;){C.index>E&&T.push(reactExports.createElement("span",{key:_++},o.slice(E,C.index)));try{const P=katex.renderToString(C[1],{throwOnError:!1});T.push(reactExports.createElement("span",{key:_++,dangerouslySetInnerHTML:{__html:P}}))}catch{T.push(reactExports.createElement("span",{key:_++},C[0]))}E=S.lastIndex}return E<o.length&&T.push(reactExports.createElement("span",{key:_++},o.slice(E))),{nodes:T,nextKey:_}}function renderWithKaTeX(o){if(!o)return"";const u=[],T=/\$([^$]+)\$|\[color=([^\]]+)\](.*?)\[\/color\]/gs;let S=0,E,C=0;for(;(E=T.exec(o))!==null;){if(E.index>S&&u.push(reactExports.createElement("span",{key:C++},o.slice(S,E.index))),E[1]!==void 0)try{const _=katex.renderToString(E[1],{throwOnError:!1});u.push(reactExports.createElement("span",{key:C++,dangerouslySetInnerHTML:{__html:_}}))}catch{u.push(reactExports.createElement("span",{key:C++},E[0]))}else if(E[2]!==void 0){const _=renderFormulasOnly(E[3],C);C=_.nextKey,u.push(reactExports.createElement("span",{key:C++,style:{color:E[2]}},_.nodes))}S=T.lastIndex}return S<o.length&&u.push(reactExports.createElement("span",{key:C++},o.slice(S))),u.length>0?u:o}function escapeHtml(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function safeColor(o){return/^(#[0-9a-fA-F]{3,8}|[a-zA-Z]+)$/.test(o)?o:"inherit"}function renderInlineToHTML(o){let u="";const T=/\$([^$]+)\$/g;let S=0,E;for(;(E=T.exec(o))!==null;){E.index>S&&(u+=escapeHtml(o.slice(S,E.index)));try{u+=katex.renderToString(E[1],{throwOnError:!1})}catch{u+=escapeHtml(E[0])}S=T.lastIndex}return S<o.length&&(u+=escapeHtml(o.slice(S))),u}function katexToHTML(o){if(!o)return"";const u=/\[color=([^\]]+)\](.*?)\[\/color\]/gs;let T="",S=0,E;for(;(E=u.exec(o))!==null;)E.index>S&&(T+=renderInlineToHTML(o.slice(S,E.index))),T+=`<span style="color:${safeColor(E[1])}">${renderInlineToHTML(E[2])}</span>`,S=u.lastIndex;return S<o.length&&(T+=renderInlineToHTML(o.slice(S))),T}const HEADER_HEIGHT=64,DEFAULT_TOP=HEADER_HEIGHT+12,DEFAULT_RIGHT=20;function MindMapFloatingSticker(){const{session:o,confirmNode:u,getProgress:T,endSession:S}=useMindMapSession(),E=useNavigate(),[C,_]=reactExports.useState("collapsed"),[P,R]=reactExports.useState(null),[I,L]=reactExports.useState([]),[j,M]=reactExports.useState(null),D=reactExports.useRef(null),F=reactExports.useRef(null),N=reactExports.useRef(!1),G=reactExports.useCallback(()=>{var X;const te=DEFAULT_RIGHT,Z=window.innerWidth-te-(((X=F.current)==null?void 0:X.offsetWidth)??200);return{top:DEFAULT_TOP,left:Math.max(0,Z)}},[]);reactExports.useEffect(()=>{if(!o){M(null);return}j===null&&requestAnimationFrame(()=>M(G()))}
96,[o]);const B=reactExports.useCallback(te=>{if(te.target.closest("button, input, label"))return;N.current=!1;const Z=(j==null?void 0:j.top)??DEFAULT_TOP,X=(j==null?void 0:j.left)??window.innerWidth-DEFAULT_RIGHT-180;D.current={startX:te.clientX,startY:te.clientY,initTop:Z,initLeft:X};const de=ne=>{if(!D.current)return;const ue=ne.clientX-D.current.startX,ce=ne.clientY-D.current.startY;(Math.abs(ue)>3||Math.abs(ce)>3)&&(N.current=!0);const fe=180,ve=Math.max(HEADER_HEIGHT,D.current.initTop+ce),Te=Math.max(0,Math.min(window.innerWidth-fe,D.current.initLeft+ue));M({top:ve,left:Te})},he=()=>{D.current=null,window.removeEventListener("mousemove",de),window.removeEventListener("mouseup",he)};window.addEventListener("mousemove",de),window.addEventListener("mouseup",he)},[j]);if(!o)return null;const{done:H,total:O}=T(),V=O>0&&H===O,U=o.nodes.find(te=>te.confirmedOptionIds===null),W=o.nodes.find(te=>te.nodeId===P)||U,K=te=>{R(te.nodeId),L(te.confirmedOptionIds??[])},Y=te=>{L(Z=>Z.includes(te)?Z.filter(X=>X!==te):[...Z,te])},ee=()=>{!W||I.length===0||(u(W.nodeId,I),R(null),L([]))},oe=()=>{window.confirm("Kết thúc tiết há»c? Phiên hiá»n tại sẽ bá» xóa.")&&(S(),_("collapsed"))},se=()=>{E("/mind-map?result=1",{state:{resultAt:Date.now()}})},Q=te=>te.confirmedOptionIds!==null?"â":U&&te.nodeId===U.nodeId?"ð¡":"ð",ie=340,ae=8,re=j?{top:j.top,left:j.left,bottom:"auto",right:"auto"}:{top:DEFAULT_TOP,right:DEFAULT_RIGHT,bottom:"auto"},J=()=>{var ne;if(!j)return{top:DEFAULT_TOP,right:DEFAULT_RIGHT,bottom:"auto"};const te=((ne=F.current)==null?void 0:ne.offsetWidth)??180;let X=j.left+te/2-ie/2;X=Math.max(ae,Math.min(window.innerWidth-ie-ae,X));const de=window.innerHeight-200;return{top:Math.min(j.top,de),left:X,bottom:"auto",right:"auto"}};return C==="collapsed"?jsxRuntimeExports.jsxs("div",{ref:F,className:"mmfs-sticker",style:re,onMouseDown:B,onClick:()=>{N.current||_("panel")},children:[jsxRuntimeExports.jsx("div",{className:"mmfs-sticker__icon",children:"ð"}),jsxRuntimeExports.jsxs("div",{className:"mmfs-sticker__info",children:[jsxRuntimeExports.jsxs("span",{className:"mmfs-sticker__count",children:[H,"/",O]}),jsxRuntimeExports.jsx("span",{className:"mmfs-sticker__label",children:"SÆ¡ Äá» tư duy"})]}),jsxRuntimeExports.jsx("button",{className:"mmfs-sticker__close",title:"Kết thúc tiết há»c",onClick:te=>{te.stopPropagation(),oe()},children:"â"})]}):jsxRuntimeExports.jsxs("div",{ref:F,className:"mmfs-panel",style:J(),onMouseDown:B,children:[jsxRuntimeExports.jsxs("div",{className:"mmfs-panel__header",style:{cursor:"grab"},children:[jsxRuntimeExports.jsxs("span",{className:"mmfs-panel__title",children:["ð ",o.title]}),jsxRuntimeExports.jsx("div",{className:"mmfs-panel__header-actions",children:jsxRuntimeExports.jsx("button",{className:"mmfs-panel__min",title:"Thu gá»n",onClick:()=>{_("collapsed"),R(null)},children:"â"})})]}),jsxRuntimeExports.jsxs("div",{className:"mmfs-panel__progress",children:[jsxRuntimeExports.jsx("div",{className:"mmfs-panel__progress-bar",children:jsxRuntimeExports.jsx("div",{className:"mmfs-panel__progress-fill",style:{width:O?`${H/O*100}%`:"0%"}})}),jsxRuntimeExports.jsxs("span",{className:"mmfs-panel__progress-text",children:[H,"/",O," nút"]})]}),W?jsxRuntimeExports.jsxs("div",{className:"mmfs-panel__current",children:[W.parentLabel?jsxRuntimeExports.jsx("div",{className:"mmfs-panel__node-parent",children:renderWithKaTeX(W.parentLabel)}):null,jsxRuntimeExports.jsx("div",{className:"mmfs-panel__node-label",children:renderWithKaTeX(W.label)}),jsxRuntimeExports.jsx("div",{className:"mmfs-panel__options",children:W.options.map(te=>{const Z=I.includes(te.id);return jsxRuntimeExports.jsxs("label",{className:`mmfs-opt ${Z?"mmfs-opt--checked":""}`,children:[jsxRuntimeExports.jsx("input",{type:"checkbox",checked:Z,onChange:()=>Y(te.id)}),jsxRuntimeExports.jsx("span",{children:renderWithKaTeX(te.text)})]},te.id)})}),jsxRuntimeExports.jsx("button",{className:"mmfs-panel__confirm",disabled:I.length===0,onClick:ee,children:"â Xác nháºn"})]}):jsxRuntimeExports.jsx("div",{className:"mmfs-panel__current mmfs-panel__current--done",children:"ð Äã hoà n thà nh tất cả các nút!"}),jsxRuntimeExports.jsx("div",{className:"mmfs-panel__list",children:o.nodes.map(te=>{const Z=Q(te);return jsxRuntimeExports.jsxs("div",{className:`mmfs-row ${(W==null?void 0:W.nodeId)===te.nodeId?"mmfs-row--active":""}`,onClick:()=>K(te),children:[jsxRuntimeExports.jsx("span",{className:"mmfs-row__status",children:Z}),jsxRuntimeExports.jsxs("span",{className:"mmfs-row__label",children:[te.parentLabel?jsxRuntimeExports.jsxs("span",{className:"mmfs-row__parent",children:[renderWithKaTeX(te.parentLabel)," ⺠"]}):null,renderWithKaTeX(te.label)]})]}
96,te.nodeId)})}),jsxRuntimeExports.jsxs("div",{className:"mmfs-panel__footer",children:[V&&jsxRuntimeExports.jsx("button",{className:"mmfs-panel__finish",onClick:se,children:"ð¯ Hoà n thà nh sÆ¡ Äá»"}),jsxRuntimeExports.jsx("button",{className:"mmfs-panel__end",onClick:oe,children:"Kết thúc"})]})]})}function ProtectedRoute({children:o}){const{currentUser:u,loading:T}=useAuth();return T?jsxRuntimeExports.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"100vh",background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},children:jsxRuntimeExports.jsx("div",{style:{color:"white",fontSize:"1.5em",fontWeight:"600"},children:"Äang tải..."})}):u?o:jsxRuntimeExports.jsx(Navigate,{to:"/login"})}function createChainedFunction(...o){return o.reduce((u,T)=>T==null?u:function(...E){u.apply(this,E),T.apply(this,E)},()=>{})}function GlobalStyles(o){return jsxRuntimeExports.jsx(GlobalStyles$1,{...o,defaultTheme:defaultTheme$1,themeId:THEME_ID})}function globalCss(o){return function(T){return jsxRuntimeExports.jsx(GlobalStyles,{styles:typeof o=="function"?S=>o({theme:S,...T}):o})}}function internal_createExtendSxProp(){return extendSxProp$1}const memoTheme=unstable_memoTheme;function useDefaultProps(o){return useDefaultProps$1(o)}function getSvgIconUtilityClass(o){return generateUtilityClass("MuiSvgIcon",o)}generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const useUtilityClasses$N=o=>{const{color:u,fontSize:T,classes:S}=o,E={root:["root",u!=="inherit"&&`color${capitalize(u)}`,`fontSize${capitalize(T)}`]};return composeClasses(E,getSvgIconUtilityClass,S)},SvgIconRoot=styled("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.color!=="inherit"&&u[`color${capitalize(T.color)}`],u[`fontSize${capitalize(T.fontSize)}`]]}})(memoTheme(({theme:o})=>{var u,T,S,E,C,_,P,R,I,L,j,M,D,F;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:(E=(u=o.transitions)==null?void 0:u.create)==null?void 0:E.call(u,"fill",{duration:(S=(T=(o.vars??o).transitions)==null?void 0:T.duration)==null?void 0:S.shorter}),variants:[{props:N=>!N.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:((_=(C=o.typography)==null?void 0:C.pxToRem)==null?void 0:_.call(C,20))||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:((R=(P=o.typography)==null?void 0:P.pxToRem)==null?void 0:R.call(P,24))||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:((L=(I=o.typography)==null?void 0:I.pxToRem)==null?void 0:L.call(I,35))||"2.1875rem"}},...Object.entries((o.vars??o).palette).filter(([,N])=>N&&N.main).map(([N])=>{var G,B;return{props:{color:N},style:{color:(B=(G=(o.vars??o).palette)==null?void 0:G[N])==null?void 0:B.main}}}),{props:{color:"action"},style:{color:(M=(j=(o.vars??o).palette)==null?void 0:j.action)==null?void 0:M.active}},{props:{color:"disabled"},style:{color:(F=(D=(o.vars??o).palette)==null?void 0:D.action)==null?void 0:F.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}})),SvgIcon=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiSvgIcon"}),{children:E,className:C,color:_="inherit",component:P="svg",fontSize:R="medium",htmlColor:I,inheritViewBox:L=!1,titleAccess:j,viewBox:M="0 0 24 24",...D}=S,F=reactExports.isValidElement(E)&&E.type==="svg",N={...S,color:_,component:P,fontSize:R,instanceFontSize:u.fontSize,inheritViewBox:L,viewBox:M,hasSvgAsChild:F},G={};L||(G.viewBox=M);const B=useUtilityClasses$N(N);return jsxRuntimeExports.jsxs(SvgIconRoot,{as:P,className:clsx(B.root,C),focusable:"false",color:I,"aria-hidden":j?void 0:!0,role:j?"img":void 0,ref:T,...G,...D,...F&&E.props,ownerState:N,children:[F?E.props.children:E,j?jsxRuntimeExports.jsx("title",{children:j}):null]})});SvgIcon.muiName="SvgIcon";function createSvgIcon(o,u){function T(S,E){return jsxRuntimeExports.jsx(SvgIcon,{"data-testid":void 0,ref:E,...S,children:o})}return T.muiName=SvgIcon.muiName,reactExports.memo(reactExports.forwardRef(T))}function debounce(o,u=166){let T;function S(...E){const C=()=>{o.apply(this,E)};clearTimeout(T),T=setTimeout(C,u)}return S.clear=()=>{clearTimeout(T)},S}function ownerDocument(o){return o&&o.ownerDocument||document}function ownerWindow(o){return ownerDocument(o).defaultView||window}function setRef(o,u){typeof o=="function"?o(u):o&&(o.current=u)}function useControlled(o){const{controlled:u,default:T,name:S,state:E="value"}=o,{current:C}=reactExports.useRef(u!==void 0),[_,P]=reactExports.useState(T),R=C?u:_,I=reactExports.useCallback(L=>{C||P(L)},[]);return[R,I]}function useEventCallback(o){const u=reactExports.useRef(o);return useEnhancedEffect(()=>{u.current=o}),reactExports.useRef((...T)=>(0,u.current)(...T)).current}function useForkRef(...o){const u=reactExports.useRef(void 0),T=reactExports.useCallback(S=>{const E=o.map(C=>{if(C==null)return null;if(typeof C=="function"){const _=C,P=_(S);return typeof P=="function"?P:()=>{_(null)}}return C.current=S,()=>{C.current=null}});return()=>
96{E.forEach(C=>C==null?void 0:C())}},o);return reactExports.useMemo(()=>o.every(S=>S==null)?null:S=>{u.current&&(u.current(),u.current=void 0),S!=null&&(u.current=T(S))},o)}function isEventHandler(o,u){const T=o.charCodeAt(2);return o[0]==="o"&&o[1]==="n"&&T>=65&&T<=90&&typeof u=="function"}function mergeSlotProps$1(o,u){if(!o)return u;function T(_,P){const R={};return Object.keys(P).forEach(I=>{isEventHandler(I,P[I])&&typeof _[I]=="function"&&(R[I]=(...L)=>{_[I](...L),P[I](...L)})}),R}if(typeof o=="function"||typeof u=="function")return _=>{const P=typeof u=="function"?u(_):u,R=typeof o=="function"?o({..._,...P}):o,I=clsx(_==null?void 0:_.className,P==null?void 0:P.className,R==null?void 0:R.className),L=T(R,P);return{...P,...R,...L,...!!I&&{className:I},...(P==null?void 0:P.style)&&(R==null?void 0:R.style)&&{style:{...P.style,...R.style}},...(P==null?void 0:P.sx)&&(R==null?void 0:R.sx)&&{sx:[...Array.isArray(P.sx)?P.sx:[P.sx],...Array.isArray(R.sx)?R.sx:[R.sx]]}}};const S=u,E=T(o,S),C=clsx(S==null?void 0:S.className,o==null?void 0:o.className);return{...u,...o,...E,...!!C&&{className:C},...(S==null?void 0:S.style)&&(o==null?void 0:o.style)&&{style:{...S.style,...o.style}},...(S==null?void 0:S.sx)&&(o==null?void 0:o.sx)&&{sx:[...Array.isArray(S.sx)?S.sx:[S.sx],...Array.isArray(o.sx)?o.sx:[o.sx]]}}}function _objectWithoutPropertiesLoose$1(o,u){if(o==null)return{};var T={};for(var S in o)if({}.hasOwnProperty.call(o,S)){if(u.indexOf(S)!==-1)continue;T[S]=o[S]}return T}function _setPrototypeOf(o,u){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(T,S){return T.__proto__=S,T},_setPrototypeOf(o,u)}function _inheritsLoose(o,u){o.prototype=Object.create(u.prototype),o.prototype.constructor=o,_setPrototypeOf(o,u)}const config={disabled:!1},TransitionGroupContext=React$1.createContext(null);var forceReflow=function(u){return u.scrollTop},UNMOUNTED="unmounted",EXITED="exited",ENTERING="entering",ENTERED="entered",EXITING="exiting",Transition=function(o){_inheritsLoose(u,o);function u(S,E){var C;C=o.call(this,S,E)||this;var _=E,P=_&&!_.isMounting?S.enter:S.appear,R;return C.appearStatus=null,S.in?P?(R=EXITED,C.appearStatus=ENTERING):R=ENTERED:S.unmountOnExit||S.mountOnEnter?R=UNMOUNTED:R=EXITED,C.state={status:R},C.nextCallback=null,C}u.getDerivedStateFromProps=function(E,C){var _=E.in;return _&&C.status===UNMOUNTED?{status:EXITED}:null};var T=u.prototype;return T.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},T.componentDidUpdate=function(E){var C=null;if(E!==this.props){var _=this.state.status;this.props.in?_!==ENTERING&&_!==ENTERED&&(C=ENTERING):(_===ENTERING||_===ENTERED)&&(C=EXITING)}this.updateStatus(!1,C)},T.componentWillUnmount=function(){this.cancelNextCallback()},T.getTimeouts=function(){var E=this.props.timeout,C,_,P;return C=_=P=E,E!=null&&typeof E!="number"&&(C=E.exit,_=E.enter,P=E.appear!==void 0?E.appear:_),{exit:C,enter:_,appear:P}},T.updateStatus=function(E,C){if(E===void 0&&(E=!1),C!==null)if(this.cancelNextCallback(),C===ENTERING){if(this.props.unmountOnExit||this.props.mountOnEnter){var _=this.props.nodeRef?this.props.nodeRef.current:ReactDOM.findDOMNode(this);_&&forceReflow(_)}this.performEnter(E)}else this.performExit();else this.props.unmountOnExit&&this.state.status===EXITED&&this.setState({status:UNMOUNTED})},T.performEnter=function(E){var C=this,_=this.props.enter,P=this.context?this.context.isMounting:E,R=this.props.nodeRef?[P]:[ReactDOM.findDOMNode(this),P],I=R[0],L=R[1],j=this.getTimeouts(),M=P?j.appear:j.enter;if(!E&&!_||config.disabled){this.safeSetState({status:ENTERED},function(){C.props.onEntered(I)});return}this.props.onEnter(I,L),this.safeSetState({status:ENTERING},function(){C.props.onEntering(I,L),C.onTransitionEnd(M,function(){C.safeSetState({status:ENTERED},function(){C.props.onEntered(I,L)})})})},T.performExit=function(){var E=this,C=this.props.exit,_=this.getTimeouts(),P=this.props.nodeRef?void 0:ReactDOM.findDOMNode(this);if(!C||config.disabled){this.safeSetState({status:EXITED},function(){E.props.onExited(P)});return}this.props.onExit(P),this.safeSetState({status:EXITING},function(){E.props.onExiting(P),E.onTransitionEnd(_.exit,function(){E.safeSetState({status:EXITED},function(){E.props.onExited(P)})})})},T.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},T.safeSetState=function(E,C){C=this.setNextCallback(C),this.setState(E,C)},T.setNextCallback=function(E){var C=this,_=!0;return this.nextCallback=function(P){_&&(_=!1,C.nextCallback=null,E(P))},this.nextCallback.cancel=function(){_=!1},this.nextCallback},T.onTransitionEnd=function(E,C){this.setNextCallback(C);var _=this.props.nodeRef?this.props.nodeRef.current:ReactDOM.findDOMNode(this),P=E==null&&!this.props.addEndListener;if(!_||P){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var R=this.props.nodeRef?[this.nextCallback]:[_,this.nextCallback],I=R[0],L=R[1];this.props.addEndListener(I,L)}E!=null&&setTimeout(this.nextCallback,E)},T.render=function(){var E=this.state.status;if(E===UNMOUNTED)return null;var C=this.props,_=C.children;C.in,C.mountOnEnter,C.unmountOnExit,C.appear,C.enter,C.exit,C.timeout,C.addEndListener,C.onEnter,C.onEntering,C.onEntered,C.onExit,C.onExiting,C.onExited,C.nodeRef;var P=_objectWithoutPropertiesLoose$1(C,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return React$1.createElement(TransitionGroupContext.Provider,{value:null},typeof _=="function"?_(E,P):React$1.cloneElement(React$1.Children.only(_),P))},u}(React$1.Component);Transition.contextType=TransitionGroupContext;Transition.propTypes={};function noop$3(){}Transition.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter
vendor: 1,323 bytes, line 96
96:!0,exit:!0,onEnter:noop$3,onEntering:noop$3,onEntered:noop$3,onExit:noop$3,onExiting:noop$3,onExited:noop$3};Transition.UNMOUNTED=UNMOUNTED;Transition.EXITED=EXITED;Transition.ENTERING=ENTERING;Transition.ENTERED=ENTERED;Transition.EXITING=EXITING;function _assertThisInitialized(o){if(o===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return o}function getChildMapping(o,u){var T=function(C){return u&&reactExports.isValidElement(C)?u(C):C},S=Object.create(null);return o&&reactExports.Children.map(o,function(E){return E}).forEach(function(E){S[E.key]=T(E)}),S}function mergeChildMappings(o,u){o=o||{},u=u||{};function T(L){return L in u?u[L]:o[L]}var S=Object.create(null),E=[];for(var C in o)C in u?E.length&&(S[C]=E,E=[]):E.push(C);var _,P={};for(var R in u){if(S[R])for(_=0;_<S[R].length;_++){var I=S[R][_];P[S[R][_]]=T(I)}P[R]=T(R)}for(_=0;_<E.length;_++)P[E[_]]=T(E[_]);return P}function getProp(o,u,T){return T[u]!=null?T[u]:o.props[u]}function getInitialChildMapping(o,u){return getChildMapping(o.children,function(T){return reactExports.cloneElement(T,{onExited:u.bind(null,T),in:!0,appear:getProp(T,"appear",o),enter:getProp(T,"enter",o),exit:getProp(T,"exit",o)})})}function getNextChildMapping(o,u,T){var S=getChildMapping(o.children),E=mergeChildMappings(u,S);
96return Object.keys(E).forEach(function(C){var _=E[C];if(reactExports.isValidElement(_)){var P=C in u,R=C in S,I=u[C],L=reactExports.isValidElement(I)&&!I.props.in;R&&(!P||L)?E[C]=reactExports.cloneElement(_,{onExited:T.bind(null,_),in:!0,exit:getProp(_,"exit",o),enter:getProp(_,"enter",o)}):!R&&P&&!L?E[C]=reactExports.cloneElement(_,{in:!1}):R&&P&&reactExports.isValidElement(I)&&(E[C]=reactExports.cloneElement(_,{onExited:T.bind(null,_),in:I.props.in,exit:getProp(_,"exit",o),enter:getProp(_,"enter",o)}))}}),E}var values=Object.values||function(o){return Object.keys(o).map(function(u){return o[u]})},defaultProps={component:"div",childFactory:function(u){return u}},TransitionGroup=function(o){_inheritsLoose(u,o);function u(S,E){var C;C=o.call(this,S,E)||this;var _=C.handleExited.bind(_assertThisInitialized(C));return C.state={contextValue:{isMounting:!0},handleExited:_,firstRender:!0},C}var T=u.prototype;return T.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},T.componentWillUnmount=function(){this.mounted=!1},u.getDerivedStateFromProps=function(E,C){var _=C.children,P=C.handleExited,R=C.firstRender;return{children:R?getInitialChildMapping(E,P):getNextChildMapping(E,_,P),firstRender:!1}},T.handleExited=function(E,C){var _=getChildMapping(this.props.children);E.key in _||(E.props.onExited&&E.props.onExited(C),this.mounted&&this.setState(function(P){var R=_extends$3({},P.children);return delete R[E.key],{children:R}}))},T.render=function(){var E=this.props,C=E.component,_=E.childFactory,P=_objectWithoutPropertiesLoose$1(E,["component","childFactory"]),R=this.state.contextValue,I=values(this.state.children).map(_);return delete P.appear,delete P.enter,delete P.exit,C===null?React$1.createElement(TransitionGroupContext.Provider,{value:R},I):React$1.createElement(TransitionGroupContext.Provider,{value:R},React$1.createElement(C,P,I))},u}(React$1.Component);TransitionGroup.propTypes={};TransitionGroup.defaultProps=defaultProps;const UNINITIALIZED={};function useLazyRef(o,u){const T=reactExports.useRef(UNINITIALIZED);return T.current===UNINITIALIZED&&(T.current=o(u)),T}const EMPTY=[];function useOnMount(o){reactExports.useEffect(o,EMPTY)}class Timeout{constructor(){pt(this,"currentId",null);pt(this,"clear",()=>{this.currentId!==null&&(clearTimeout(this.currentId),this.currentId=null)});pt(this,"disposeEffect",()=>this.clear)}
96static create(){return new Timeout}start(u,T){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,T()},u)}}function useTimeout(){const o=useLazyRef(Timeout.create).current;return useOnMount(o.disposeEffect),o}const reflow=o=>o.scrollTop;function getTransitionProps(o,u){const{timeout:T,easing:S,style:E={}}=o;return{duration:E.transitionDuration??(typeof T=="number"?T:T[u.mode]||0),easing:E.transitionTimingFunction??(typeof S=="object"?S[u.mode]:S),delay:E.transitionDelay}}function getCollapseUtilityClass(o){return generateUtilityClass("MuiCollapse",o)}generateUtilityClasses("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const useUtilityClasses$M=o=>{const{orientation:u,classes:T}=o,S={root:["root",`${u}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${u}`],wrapperInner:["wrapperInner",`${u}`]};return composeClasses(S,getCollapseUtilityClass,T)},CollapseRoot=styled("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.orientation],T.state==="entered"&&u.entered,T.state==="exited"&&!T.in&&T.collapsedSize==="0px"&&u.hidden]}})(memoTheme(({theme:o})=>({height:0,overflow:"hidden",transition:o.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:o.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:u})=>u.state==="exited"&&!u.in&&u.collapsedSize==="0px",style:{visibility:"hidden"}}]}))),CollapseWrapper=styled("div",{name:"MuiCollapse",slot:"Wrapper"})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),CollapseWrapperInner=styled("div",{name:"MuiCollapse",slot:"WrapperInner"})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),Collapse=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiCollapse"}),{addEndListener:E,children:C,className:_,collapsedSize:P="0px",component:R,easing:I,in:L,onEnter:j,onEntered:M,onEntering:D,onExit:F,onExited:N,onExiting:G,orientation:B="vertical",style:H,timeout:O=duration.standard,TransitionComponent:V=Transition,...U}=S,W={...S,orientation:B,collapsedSize:P},K=useUtilityClasses$M(W),Y=useTheme(),ee=useTimeout(),oe=reactExports.useRef(null),se=reactExports.useRef(),Q=typeof P=="number"?`${P}px`:P,ie=B==="horizontal",ae=ie?"width":"height",re=reactExports.useRef(null),J=useForkRef(T,re),te=ve=>Te=>{if(ve){const Se=re.current;Te===void 0?ve(Se):ve(Se,Te)}},Z=()=>oe.current?oe.current[ie?"clientWidth":"clientHeight"]:0,X=te((ve,Te)=>{oe.current&&ie&&(oe.current.style.position="absolute"),ve.style[ae]=Q,j&&j(ve,Te)}),de=te((ve,Te)=>{const Se=Z();oe.current&&ie&&(oe.current.style.position="");const{duration:ke,easing:we}=getTransitionProps({style:H,timeout:O,easing:I},{mode:"enter"});if(O==="auto"){const Le=Y.transitions.getAutoHeightDuration(Se);ve.style.transitionDuration=`${Le}ms`,se.current=Le}else ve.style.transitionDuration=typeof ke=="string"?ke:`${ke}ms`;ve.style[ae]=`${Se}px`,ve.style.transitionTimingFunction=we,D&&D(ve,Te)}),he=te((ve,Te)=>{ve.style[ae]="auto",M&&M(ve,Te)}),ne=te(ve=>{ve.style[ae]=`${Z()}px`,F&&F(ve)}),ue=te(N),ce=te(ve=>{const Te=Z(),{duration:Se,easing:ke}=getTransitionProps({style:H,timeout:O,easing:I},{mode:"exit"});if(O==="auto"){const we=Y.transitions.getAutoHeightDuration(Te);ve.style.transitionDuration=`${we}ms`,se.current=we}else ve.style.transitionDuration=typeof Se=="string"?Se:`${Se}ms`;ve.style[ae]=Q,ve.style.transitionTimingFunction=ke,G&&G(ve)}),fe=ve=>{O==="auto"&&ee.start(se.current||0,ve),E&&E(re.current,ve)};return jsxRuntimeExports.jsx(V,{in:L,onEnter:X,onEntered:he,onEntering:de,onExit:ne,onExited:ue,onExiting:ce,addEndListener:fe,nodeRef:re,timeout:O==="auto"?null:O,...U,children:(ve,{ownerState:Te,...Se})=>jsxRuntimeExports.jsx(CollapseRoot,{as:R,className:clsx(K.root,_,{entered:K.entered,exited:!L&&Q==="0px"&&K.hidden}[ve]),style:{[ie?"minWidth":"minHeight"]:Q,...H},ref:J,ownerState:{...W,state:ve},...Se,children:jsxRuntimeExports.jsx(CollapseWrapper,{ownerState:{...W,state:ve},className:K.wrapper,ref:oe,children:jsxRuntimeExports.jsx(CollapseWrapperInner,{ownerState:{...W,state:ve},className:K.wrapperInner,children:C})})})})});Collapse&&(Collapse.muiSupportAuto=!0);function getPaperUtilityClass(o){return generateUtilityClass("MuiPaper",o)}generateUtilityClasses("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const useUtilityClasses$L=o=>{const{square:u,elevation:T,variant:S,classes:E}=o,C={root:["root",S,!u&&"rounded",S==="elevation"&&`elevation${T}`]};return composeClasses(C,getPaperUtilityClass,E)},PaperRoot=styled("div",{name:"MuiPaper",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;
96return[u.root,u[T.variant],!T.square&&u.rounded,T.variant==="elevation"&&u[`elevation${T.elevation}`]]}})(memoTheme(({theme:o})=>({backgroundColor:(o.vars||o).palette.background.paper,color:(o.vars||o).palette.text.primary,transition:o.transitions.create("box-shadow"),variants:[{props:({ownerState:u})=>!u.square,style:{borderRadius:o.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(o.vars||o).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),Paper=reactExports.forwardRef(function(u,T){var D;const S=useDefaultProps({props:u,name:"MuiPaper"}),E=useTheme(),{className:C,component:_="div",elevation:P=1,square:R=!1,variant:I="elevation",...L}=S,j={...S,component:_,elevation:P,square:R,variant:I},M=useUtilityClasses$L(j);return jsxRuntimeExports.jsx(PaperRoot,{as:_,ownerState:j,className:clsx(M.root,C),ref:T,...L,style:{...I==="elevation"&&{"--Paper-shadow":(E.vars||E).shadows[P],...E.vars&&{"--Paper-overlay":(D=E.vars.overlays)==null?void 0:D[P]},...!E.vars&&E.palette.mode==="dark"&&{"--Paper-overlay":`linear-gradient(${alpha$1("#fff",getOverlayAlpha(P))}, ${alpha$1("#fff",getOverlayAlpha(P))})`}},...L.style}})});function isHostComponent(o){return typeof o=="string"}function appendOwnerState(o,u,T){return o===void 0||isHostComponent(o)?u:{...u,ownerState:{...u.ownerState,...T}}}function resolveComponentProps(o,u,T){return typeof o=="function"?o(u,T):o}function extractEventHandlers(o,u=[]){if(o===void 0)return{};const T={};return Object.keys(o).filter(S=>S.match(/^on[A-Z]/)&&typeof o[S]=="function"&&!u.includes(S)).forEach(S=>{T[S]=o[S]}),T}function omitEventHandlers(o){if(o===void 0)return{};const u={};return Object.keys(o).filter(T=>!(T.match(/^on[A-Z]/)&&typeof o[T]=="function")).forEach(T=>{u[T]=o[T]}),u}function mergeSlotProps(o){const{getSlotProps:u,additionalProps:T,externalSlotProps:S,externalForwardedProps:E,className:C}=o;if(!u){const D=clsx(T==null?void 0:T.className,C,E==null?void 0:E.className,S==null?void 0:S.className),F={...T==null?void 0:T.style,...E==null?void 0:E.style,...S==null?void 0:S.style},N={...T,...E,...S};return D.length>0&&(N.className=D),Object.keys(F).length>0&&(N.style=F),{props:N,internalRef:void 0}}const _=extractEventHandlers({...E,...S}),P=omitEventHandlers(S),R=omitEventHandlers(E),I=u(_),L=clsx(I==null?void 0:I.className,T==null?void 0:T.className,C,E==null?void 0:E.className,S==null?void 0:S.className),j={...I==null?void 0:I.style,...T==null?void 0:T.style,...E==null?void 0:E.style,...S==null?void 0:S.style},M={...I,...T,...R,...P};return L.length>0&&(M.className=L),Object.keys(j).length>0&&(M.style=j),{props:M,internalRef:I.ref}}function useSlot(o,u){const{className:T,elementType:S,ownerState:E,externalForwardedProps:C,internalForwardedProps:_,shouldForwardComponentProp:P=!1,...R}=u,{component:I,slots:L={[o]:void 0},slotProps:j={[o]:void 0},...M}=C,D=L[o]||S,F=resolveComponentProps(j[o],E),{props:{component:N,...G},internalRef:B}=mergeSlotProps({className:T,...R,externalForwardedProps:o==="root"?M:void 0,externalSlotProps:F}),H=useForkRef(B,F==null?void 0:F.ref,u.ref),O=o==="root"?N||I:N,V=appendOwnerState(D,{...o==="root"&&!I&&!L[o]&&_,...o!=="root"&&!L[o]&&_,...G,...O&&!P&&{as:O},...O&&P&&{component:O},ref:H},E);return[D,V]}function isFocusVisible(o){try{return o.matches(":focus-visible")}catch{}return!1}class LazyRipple{constructor(){pt(this,"mountEffect",()=>{this.shouldMount&&!this.didMount&&this.ref.current!==null&&(this.didMount=!0,this.mounted.resolve())});this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}static create(){return new LazyRipple}static use(){const u=useLazyRef(LazyRipple.create).current,[T,S]=reactExports.useState(!1);return u.shouldMount=T,u.setShouldMount=S,reactExports.useEffect(u.mountEffect,[T]),u}mount(){return this.mounted||(this.mounted=createControlledPromise(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}start(...u){this.mount().then(()=>{var T;return(T=this.ref.current)==null?void 0:T.start(...u)})}stop(...u){this.mount().then(()=>{var T;return(T=this.ref.current)==null?void 0:T.stop(...u)})}pulsate(...u){this.mount().then(()=>{var T;return(T=this.ref.current)==null?void 0:T.pulsate(...u)})}}function useLazyRipple(){return LazyRipple.use()}function createControlledPromise(){let o,u;const T=new Promise((S,E)=>{o=S,u=E});return T.resolve=o,T.reject=u,T}function Ripple(o){const{className:u,classes:T,pulsate:S=!1,rippleX:E,rippleY:C,rippleSize:_,in:P,onExited:R,timeout:I}=o,[L,j]=reactExports.useState(!1),M=clsx(u,T.ripple,T.rippleVisible,S&&T.ripplePulsate),D={width:_,height:_,top:-(_/2)+C,left:-(_/2)+E},F=clsx(T.child,L&&T.childLeaving,S&&T.childPulsate);return!P&&!L&&j(!0),reactExports.useEffect(()=>{if(!P&&R!=null){const N=setTimeout(R,I);return()=>{clearTimeout(N)}}},[R,P,I]),jsxRuntimeExports.jsx("span",{className:M,style:D,children:jsxRuntimeExports.jsx("span",{className:F})})}const touchRippleClasses=generateUtilityClasses("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),DURATION=550,DELAY_RIPPLE=80,enterKeyframe=keyframes$1` 97 0% { 98 transform: scale(0); 99 opacity: 0.1; 100 } 101 102 100% { 103 transform: scale(1); 104 opacity: 0.3; 105 } 106`,exitKeyframe=keyframes$1` 107 0% { 108 opacity: 1; 109 } 110 111 100% { 112 opacity: 0; 113 } 114`,pulsateKeyframe=keyframes$1` 115 0% { 116 transform: scale(1); 117 } 118 119 50% { 120 transform: scale(0.92); 121 } 122 123 100% { 124 transform: scale(1); 125 } 126`,TouchRippleRoot=styled("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),TouchRippleRipple=styled(Ripple,{name:"MuiTouchRipple",slot:"Ripple"})` 127 opacity: 0; 128 position: absolute; 129 130 &.${touchRippleClasses.rippleVisible} { 131 opacity: 0.3; 132 transform: scale(1); 133 animation-name: ${enterKeyframe}; 134 animation-duration: ${DURATION}ms; 135 animation-timing-function: ${({theme:o})=>o.transitions.easing.easeInOut}; 136 } 137 138 &.${touchRippleClasses.ripplePulsate} { 139 animation-duration: ${({theme:o})=>o.transitions.duration.shorter}ms; 140 } 141 142 & .${touchRippleClasses.child} { 143 opacity: 1; 144 display: block; 145 width: 100%; 146 height: 100%; 147 border-radius: 50%; 148 background-color: currentColor; 149 } 150 151 & .${touchRippleClasses.childLeaving} { 152 opacity: 0; 153 animation-name: ${exitKeyframe}; 154 animation-duration: ${DURATION}ms; 155 animation-timing-function: ${({theme:o})=>o.transitions.easing.easeInOut}; 156 } 157 158 & .${touchRippleClasses.childPulsate} { 159 position: absolute; 160 /* @noflip */ 161 left: 0px; 162 top: 0; 163 animation-name: ${pulsateKeyframe}; 164 animation-duration: 2500ms; 165 animation-timing-function: ${({theme:o})=>o.transitions.easing.easeInOut}; 166 animation-iteration-count: infinite; 167 animation-delay: 200ms; 168 } 169`,TouchRipple=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTouchRipple"}),{center:E=!1,classes:C={},className:_,...P}=S,[R,I]=reactExports.useState([]),L=reactExports.useRef(0),j=reactExports.useRef(null);reactExports.useEffect(()=>{j.current&&(j.current(),j.current=null)},[R]);const M=reactExports.useRef(!1),D=useTimeout(),F=reactExports.useRef(null),N=reactExports.useRef(null),G=reactExports.useCallback(V=>{const{pulsate:U,rippleX:W,rippleY:K,rippleSize:Y,cb:ee}=V;I(oe=>[...oe,jsxRuntimeExports.jsx(TouchRippleRipple,{classes:{ripple:clsx(C.r
169ipple,touchRippleClasses.ripple),rippleVisible:clsx(C.rippleVisible,touchRippleClasses.rippleVisible),ripplePulsate:clsx(C.ripplePulsate,touchRippleClasses.ripplePulsate),child:clsx(C.child,touchRippleClasses.child),childLeaving:clsx(C.childLeaving,touchRippleClasses.childLeaving),childPulsate:clsx(C.childPulsate,touchRippleClasses.childPulsate)},timeout:DURATION,pulsate:U,rippleX:W,rippleY:K,rippleSize:Y},L.current)]),L.current+=1,j.current=ee},[C]),B=reactExports.useCallback((V={},U={},W=()=>{})=>{const{pulsate:K=!1,center:Y=E||U.pulsate,fakeElement:ee=!1}=U;if((V==null?void 0:V.type)==="mousedown"&&M.current){M.current=!1;return}(V==null?void 0:V.type)==="touchstart"&&(M.current=!0);const oe=ee?null:N.current,se=oe?oe.getBoundingClientRect():{width:0,height:0,left:0,top:0};let Q,ie,ae;if(Y||V===void 0||V.clientX===0&&V.clientY===0||!V.clientX&&!V.touches)Q=Math.round(se.width/2),ie=Math.round(se.height/2);else{const{clientX:re,clientY:J}=V.touches&&V.touches.length>0?V.touches[0]:V;Q=Math.round(re-se.left),ie=Math.round(J-se.top)}if(Y)ae=Math.sqrt((2*se.width**2+se.height**2)/3),ae%2===0&&(ae+=1);else{const re=Math.max(Math.abs((oe?oe.clientWidth:0)-Q),Q)*2+2,J=Math.max(Math.abs((oe?oe.clientHeight:0)-ie),ie)*2+2;ae=Math.sqrt(re**2+J**2)}V!=null&&V.touches?F.current===null&&(F.current=()=>{G({pulsate:K,rippleX:Q,rippleY:ie,rippleSize:ae,cb:W})},D.start(DELAY_RIPPLE,()=>{F.current&&(F.current(),F.current=null)})):G({pulsate:K,rippleX:Q,rippleY:ie,rippleSize:ae,cb:W})},[E,G,D]),H=reactExports.useCallback(()=>{B({},{pulsate:!0})},[B]),O=reactExports.useCallback((V,U)=>{if(D.clear(),(V==null?void 0:V.type)==="touchend"&&F.current){F.current(),F.current=null,D.start(0,()=>{O(V,U)});return}F.current=null,I(W=>W.length>0?W.slice(1):W),j.current=U},[D]);return reactExports.useImperativeHandle(T,()=>({pulsate:H,start:B,stop:O}),[H,B,O]),jsxRuntimeExports.jsx(TouchRippleRoot,{className:clsx(touchRippleClasses.root,C.root,_),ref:N,...P,children:jsxRuntimeExports.jsx(TransitionGroup,{component:null,exit:!0,children:R})})});function getButtonBaseUtilityClass(o){return generateUtilityClass("MuiButtonBase",o)}const buttonBaseClasses=generateUtilityClasses("MuiButtonBase",["root","disabled","focusVisible"]),useUtilityClasses$K=o=>{const{disabled:u,focusVisible:T,focusVisibleClassName:S,classes:E}=o,_=composeClasses({root:["root",u&&"disabled",T&&"focusVisible"]},getButtonBaseUtilityClass,E);return T&&S&&(_.root+=` ${S}`),_},ButtonBaseRoot=styled("button",{name:"MuiButtonBase",slot:"Root"})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${buttonBaseClasses.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),ButtonBase=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiButtonBase"}),{action:E,centerRipple:C=!1,children:_,className:P,component:R="button",disabled:I=!1,disableRipple:L=!1,disableTouchRipple:j=!1,focusRipple:M=!1,focusVisibleClassName:D,LinkComponent:F="a",onBlur:N,onClick:G,onContextMenu:B,onDragLeave:H,onFocus:O,onFocusVisible:V,onKeyDown:U,onKeyUp:W,onMouseDown:K,onMouseLeave:Y,onMouseUp:ee,onTouchEnd:oe,onTouchMove:se,onTouchStart:Q,tabIndex:ie=0,TouchRippleProps:ae,touchRippleRef:re,type:J,...te}=S,Z=reactExports.useRef(null),X=useLazyRipple(),de=useForkRef(X.ref,re),[he,ne]=reactExports.useState(!1);I&&he&&ne(!1),reactExports.useImperativeHandle(E,()=>({focusVisible:()=>{ne(!0),Z.current.focus()}}),[]);const ue=X.shouldMount&&!L&&!I;reactExports.useEffect(()=>{he&&M&&!L&&X.pulsate()},[L,M,he,X]);const ce=useRippleHandler(X,"start",K,j),fe=useRippleHandler(X,"stop",B,j),ve=useRippleHandler(X,"stop",H,j),Te=useRippleHandler(X,"stop",ee,j),Se=useRippleHandler(X,"stop",ze=>{he&&ze.preventDefault(),Y&&Y(ze)},j),ke=useRippleHandler(X,"start",Q,j),we=useRippleHandler(X,"stop",oe,j),Le=useRippleHandler(X,"stop",se,j),pe=useRippleHandler(X,"stop",ze=>{isFocusVisible(ze.target)||ne(!1),N&&N(ze)},!1),Me=useEventCallback(ze=>{Z.current||(Z.current=ze.currentTarget),isFocusVisible(ze.target)&&(ne(!0),V&&V(ze)),O&&O(ze)}),Pe=()=>{const ze=Z.current;return R&&R!=="button"&&!(ze.tagName==="A"&&ze.href)},Ue=useEventCallback(ze=>{M&&!ze.repeat&&he&&ze.key===" "&&X.stop(ze,()=>{X.start(ze)}),ze.target===ze.currentTarget&&Pe()&&ze.key===" "&&ze.preventDefault(),U&&U(ze),ze.target===ze.currentTarget&&Pe()&&ze.key==="Enter"&&!I&&(ze.preventDefault(),G&&G(ze))}),qe=useEventCallback(ze=>{M&&ze.key===" "&&he&&!ze.defaultPrevented&&X.stop(ze,()=>{X.pulsate(ze)}),W&&W(ze),G&&ze.target===ze.currentTarget&&Pe()&&ze.key===" "&&!ze.defaultPrevented&&G(ze)});let Ie=R;Ie==="button"&&(te.href||te.to)&&(Ie=F);const Xe={};Ie==="button"?(Xe.type=J===void 0?"button":J,Xe.disabled=I):(!te.href&&!te.to&&(Xe.role="button"),I&&(Xe["aria-disabled"]=I));const et=useForkRef(T,Z),tt={...S,centerRipple:C,component:R,disabled:I,disableRipple:L,disableTouchRipple:j,focusRipple:M,tabIndex:ie,focu
169sVisible:he},Ye=useUtilityClasses$K(tt);return jsxRuntimeExports.jsxs(ButtonBaseRoot,{as:Ie,className:clsx(Ye.root,P),ownerState:tt,onBlur:pe,onClick:G,onContextMenu:fe,onFocus:Me,onKeyDown:Ue,onKeyUp:qe,onMouseDown:ce,onMouseLeave:Se,onMouseUp:Te,onDragLeave:ve,onTouchEnd:we,onTouchMove:Le,onTouchStart:ke,ref:et,tabIndex:I?-1:ie,type:J,...Xe,...te,children:[_,ue?jsxRuntimeExports.jsx(TouchRipple,{ref:de,center:C,...ae}):null]})});function useRippleHandler(o,u,T,S=!1){return useEventCallback(E=>(T&&T(E),S||o[u](E),!0))}function hasCorrectMainProperty(o){return typeof o.main=="string"}function checkSimplePaletteColorValues(o,u=[]){if(!hasCorrectMainProperty(o))return!1;for(const T of u)if(!o.hasOwnProperty(T)||typeof o[T]!="string")return!1;return!0}function createSimplePaletteValueFilter(o=[]){return([,u])=>u&&checkSimplePaletteColorValues(u,o)}function getAlertUtilityClass(o){return generateUtilityClass("MuiAlert",o)}const alertClasses=generateUtilityClasses("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);function getCircularProgressUtilityClass(o){return generateUtilityClass("MuiCircularProgress",o)}generateUtilityClasses("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","track","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);const SIZE=44,circularRotateKeyframe=keyframes$1` 170 0% { 171 transform: rotate(0deg); 172 } 173 174 100% { 175 transform: rotate(360deg); 176 } 177`,circularDashKeyframe=keyframes$1` 178 0% { 179 stroke-dasharray: 1px, 200px; 180 stroke-dashoffset: 0; 181 } 182 183 50% { 184 stroke-dasharray: 100px, 200px; 185 stroke-dashoffset: -15px; 186 } 187 188 100% { 189 stroke-dasharray: 1px, 200px; 190 stroke-dashoffset: -126px; 191 } 192`,rotateAnimation=typeof circularRotateKeyframe!="string"?css` 193 animation: ${circularRotateKeyframe} 1.4s linear infinite; 194 `:null,dashAnimation=typeof circularDashKeyframe!="string"?css` 195 animation: ${circularDashKeyframe} 1.4s ease-in-out infinite; 196 `:null,useUtilityClasses$J=o=>{const{classes:u,variant:T,color:S,disableShrink:E}=o,C={root:["root",T,`color${capitalize(S)}`],svg:["svg"],track:["track"],circle:["circle",`circle${capitalize(T)}`,E&&"circleDisableShrink"]};return composeClasses(C,getCircularProgressUtilityClass,u)},CircularProgressRoot=styled("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.variant],u[`color${capitalize(T.color)}`]]}})(memoTheme(({theme:o})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:o.transitions.create("transform")}},{props:{variant:"indeterminate"},style:rotateAnimation||{animation:`${circularRotateKeyframe} 1.4s linear infinite`}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([u])=>({props:{color:u},style:{color:(o.vars||o).palette[u].main}}))]}))),CircularProgressSVG=styled("svg",{name:"MuiCircularProgress",slot:"Svg"})({display:"block"}),CircularProgressCircle=styled("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.circle,u[`circle${capitalize(T.variant)}`],T.disableShrink&&u.circleDisableShrink]}})(memoTheme(({theme:o})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:o.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:u})=>u.variant==="indeterminate"&&!u.disableShrink,style:dashAnimation||{animation:`${circularDashKeyframe} 1.4s ease-in-out infinite`}}]}))),CircularProgressTrack=styled("circle",{name:"MuiCircularProgress",slot:"Track"})(memoTheme(({theme:o})=>({stroke:"currentColor",opacity:(o.vars||o).palette.action.activatedOpacity}))),CircularProgress=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiCircularProgress"}
196),{className:E,color:C="primary",disableShrink:_=!1,enableTrackSlot:P=!1,size:R=40,style:I,thickness:L=3.6,value:j=0,variant:M="indeterminate",...D}=S,F={...S,color:C,disableShrink:_,size:R,thickness:L,value:j,variant:M,enableTrackSlot:P},N=useUtilityClasses$J(F),G={},B={},H={};if(M==="determinate"){const O=2*Math.PI*((SIZE-L)/2);G.strokeDasharray=O.toFixed(3),H["aria-valuenow"]=Math.round(j),G.strokeDashoffset=`${((100-j)/100*O).toFixed(3)}px`,B.transform="rotate(-90deg)"}return jsxRuntimeExports.jsx(CircularProgressRoot,{className:clsx(N.root,E),style:{width:R,height:R,...B,...I},ownerState:F,ref:T,role:"progressbar",...H,...D,children:jsxRuntimeExports.jsxs(CircularProgressSVG,{className:N.svg,ownerState:F,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:[P?jsxRuntimeExports.jsx(CircularProgressTrack,{className:N.track,ownerState:F,cx:SIZE,cy:SIZE,r:(SIZE-L)/2,fill:"none",strokeWidth:L,"aria-hidden":"true"}):null,jsxRuntimeExports.jsx(CircularProgressCircle,{className:N.circle,style:G,ownerState:F,cx:SIZE,cy:SIZE,r:(SIZE-L)/2,fill:"none",strokeWidth:L})]})})});function getIconButtonUtilityClass(o){return generateUtilityClass("MuiIconButton",o)}const iconButtonClasses=generateUtilityClasses("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge","loading","loadingIndicator","loadingWrapper"]),useUtilityClasses$I=o=>{const{classes:u,disabled:T,color:S,edge:E,size:C,loading:_}=o,P={root:["root",_&&"loading",T&&"disabled",S!=="default"&&`color${capitalize(S)}`,E&&`edge${capitalize(E)}`,`size${capitalize(C)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]};return composeClasses(P,getIconButtonUtilityClass,u)},IconButtonRoot=styled(ButtonBase,{name:"MuiIconButton",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.loading&&u.loading,T.color!=="default"&&u[`color${capitalize(T.color)}`],T.edge&&u[`edge${capitalize(T.edge)}`],u[`size${capitalize(T.size)}`]]}})(memoTheme(({theme:o})=>({textAlign:"center",flex:"0 0 auto",fontSize:o.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(o.vars||o).palette.action.active,transition:o.transitions.create("background-color",{duration:o.transitions.duration.shortest}),variants:[{props:u=>!u.disableRipple,style:{"--IconButton-hoverBg":o.alpha((o.vars||o).palette.action.active,(o.vars||o).palette.action.hoverOpacity),"&:hover":{backgroundColor:"var(--IconButton-hoverBg)","@media (hover: none)":{backgroundColor:"transparent"}}}},{props:{edge:"start"},style:{marginLeft:-12}},{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:{edge:"end"},style:{marginRight:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}}]})),memoTheme(({theme:o})=>({variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([u])=>({props:{color:u},style:{color:(o.vars||o).palette[u].main}})),...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([u])=>({props:{color:u},style:{"--IconButton-hoverBg":o.alpha((o.vars||o).palette[u].main,(o.vars||o).palette.action.hoverOpacity)}})),{props:{size:"small"},style:{padding:5,fontSize:o.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:o.typography.pxToRem(28)}}],[`&.${iconButtonClasses.disabled}`]:{backgroundColor:"transparent",color:(o.vars||o).palette.action.disabled},[`&.${iconButtonClasses.loading}`]:{color:"transparent"}}))),IconButtonLoadingIndicator=styled("span",{name:"MuiIconButton",slot:"LoadingIndicator"})(({theme:o})=>({display:"none",position:"absolute",visibility:"visible",top:"50%",left:"50%",transform:"translate(-50%, -50%)",color:(o.vars||o).palette.action.disabled,variants:[{props:{loading:!0},style:{display:"flex"}}]})),IconButton=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiIconButton"}),{edge:E=!1,children:C,className:_,color:P="default",disabled:R=!1,disableFocusRipple:I=!1,size:L="medium",id:j,loading:M=null,loadingIndicator:D,...F}
196=S,N=useId(j),G=D??jsxRuntimeExports.jsx(CircularProgress,{"aria-labelledby":N,color:"inherit",size:16}),B={...S,edge:E,color:P,disabled:R,disableFocusRipple:I,loading:M,loadingIndicator:G,size:L},H=useUtilityClasses$I(B);return jsxRuntimeExports.jsxs(IconButtonRoot,{id:M?N:j,className:clsx(H.root,_),centerRipple:!0,focusRipple:!I,disabled:R||M,ref:T,...F,ownerState:B,children:[typeof M=="boolean"&&jsxRuntimeExports.jsx("span",{className:H.loadingWrapper,style:{display:"contents"},children:jsxRuntimeExports.jsx(IconButtonLoadingIndicator,{className:H.loadingIndicator,ownerState:B,children:M&&G})}),C]})}),SuccessOutlinedIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"})),ReportProblemOutlinedIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"})),ErrorOutlineIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),InfoOutlinedIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"})),ClearIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),useUtilityClasses$H=o=>{const{variant:u,color:T,severity:S,classes:E}=o,C={root:["root",`color${capitalize(T||S)}`,`${u}${capitalize(T||S)}`,`${u}`],icon:["icon"],message:["message"],action:["action"]};return composeClasses(C,getAlertUtilityClass,E)},AlertRoot=styled(Paper,{name:"MuiAlert",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.variant],u[`${T.variant}${capitalize(T.color||T.severity)}`]]}})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?o.darken:o.lighten,T=o.palette.mode==="light"?o.lighten:o.darken;return{...o.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["light"])).map(([S])=>({props:{colorSeverity:S,variant:"standard"},style:{color:o.vars?o.vars.palette.Alert[`${S}Color`]:u(o.palette[S].light,.6),backgroundColor:o.vars?o.vars.palette.Alert[`${S}StandardBg`]:T(o.palette[S].light,.9),[`& .${alertClasses.icon}`]:o.vars?{color:o.vars.palette.Alert[`${S}IconColor`]}:{color:o.palette[S].main}}})),...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["light"])).map(([S])=>({props:{colorSeverity:S,variant:"outlined"},style:{color:o.vars?o.vars.palette.Alert[`${S}Color`]:u(o.palette[S].light,.6),border:`1px solid ${(o.vars||o).palette[S].light}`,[`& .${alertClasses.icon}`]:o.vars?{color:o.vars.palette.Alert[`${S}IconColor`]}:{color:o.palette[S].main}}})),...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([S])=>({props:{colorSeverity:S,variant:"filled"},style:{fontWeight:o.typography.fontWeightMedium,...o.vars?{color:o.vars.palette.Alert[`${S}FilledColor`],backgroundColor:o.vars.palette.Alert[`${S}FilledBg`]}:{backgroundColor:o.palette.mode==="dark"?o.palette[S].dark:o.palette[S].main,color:o.palette.getContrastText(o.palette[S].main)}}}))]}})),AlertIcon=styled("div",{name:"MuiAlert",slot:"Icon"})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),AlertMessage=styled("div",{name:"MuiAlert",slot:"Message"})({padding:"8px 0",minWidth:0,overflow:"auto"}),AlertAction=styled("div",{name:"MuiAlert",slot:"Action"})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),defaultIconMapping={success:jsxRuntimeExports.jsx(SuccessOutlinedIcon,{fontSize:"inherit"}),warning:jsxRuntimeExports.jsx(ReportProblemOutlinedIcon,{fontSize:"inherit"}),error:jsxRuntimeExports.jsx(ErrorOutlineIcon,{fontSize:"inherit"}),info:jsxRuntimeExports.jsx(InfoOutlinedIcon,{fontSize:"inherit"})},Alert=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiAlert"}),{action:E,children:C,className:_,closeText:P="Close",color:R,c
196omponents:I={},componentsProps:L={},icon:j,iconMapping:M=defaultIconMapping,onClose:D,role:F="alert",severity:N="success",slotProps:G={},slots:B={},variant:H="standard",...O}=S,V={...S,color:R,severity:N,variant:H,colorSeverity:R||N},U=useUtilityClasses$H(V),W={slots:{closeButton:I.CloseButton,closeIcon:I.CloseIcon,...B},slotProps:{...L,...G}},[K,Y]=useSlot("root",{ref:T,shouldForwardComponentProp:!0,className:clsx(U.root,_),elementType:AlertRoot,externalForwardedProps:{...W,...O},ownerState:V,additionalProps:{role:F,elevation:0}}),[ee,oe]=useSlot("icon",{className:U.icon,elementType:AlertIcon,externalForwardedProps:W,ownerState:V}),[se,Q]=useSlot("message",{className:U.message,elementType:AlertMessage,externalForwardedProps:W,ownerState:V}),[ie,ae]=useSlot("action",{className:U.action,elementType:AlertAction,externalForwardedProps:W,ownerState:V}),[re,J]=useSlot("closeButton",{elementType:IconButton,externalForwardedProps:W,ownerState:V}),[te,Z]=useSlot("closeIcon",{elementType:ClearIcon,externalForwardedProps:W,ownerState:V});return jsxRuntimeExports.jsxs(K,{...Y,children:[j!==!1?jsxRuntimeExports.jsx(ee,{...oe,children:j||M[N]||defaultIconMapping[N]}):null,jsxRuntimeExports.jsx(se,{...Q,children:C}),E!=null?jsxRuntimeExports.jsx(ie,{...ae,children:E}):null,E==null&&D?jsxRuntimeExports.jsx(ie,{...ae,children:jsxRuntimeExports.jsx(re,{size:"small","aria-label":P,title:P,color:"inherit",onClick:D,...J,children:jsxRuntimeExports.jsx(te,{fontSize:"small",...Z})})}):null]})});function getTypographyUtilityClass(o){return generateUtilityClass("MuiTypography",o)}const typographyClasses=generateUtilityClasses("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]),v6Colors$1={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},extendSxProp=internal_createExtendSxProp(),useUtilityClasses$G=o=>{const{align:u,gutterBottom:T,noWrap:S,paragraph:E,variant:C,classes:_}=o,P={root:["root",C,o.align!=="inherit"&&`align${capitalize(u)}`,T&&"gutterBottom",S&&"noWrap",E&&"paragraph"]};return composeClasses(P,getTypographyUtilityClass,_)},TypographyRoot=styled("span",{name:"MuiTypography",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.variant&&u[T.variant],T.align!=="inherit"&&u[`align${capitalize(T.align)}`],T.noWrap&&u.noWrap,T.gutterBottom&&u.gutterBottom,T.paragraph&&u.paragraph]}})(memoTheme(({theme:o})=>{var u;return{margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(o.typography).filter(([T,S])=>T!=="inherit"&&S&&typeof S=="object").map(([T,S])=>({props:{variant:T},style:S})),...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([T])=>({props:{color:T},style:{color:(o.vars||o).palette[T].main}})),...Object.entries(((u=o.palette)==null?void 0:u.text)||{}).filter(([,T])=>typeof T=="string").map(([T])=>({props:{color:`text${capitalize(T)}`},style:{color:(o.vars||o).palette.text[T]}})),{props:({ownerState:T})=>T.align!=="inherit",style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:T})=>T.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:T})=>T.gutterBottom,style:{marginBottom:"0.35em"}},{props:({ownerState:T})=>T.paragraph,style:{marginBottom:16}}]}})),defaultVariantMapping={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Typography=reactExports.forwardRef(function(u,T){const{color:S,...E}=useDefaultProps({props:u,name:"MuiTypography"}),C=!v6Colors$1[S],_=extendSxProp({...E,...C&&{color:S}}),{align:P="inherit",className:R,component:I,gutterBottom:L=!1,noWrap:j=!1,paragraph:M=!1,variant:D="body1",variantMapping:F=defaultVariantMapping,...N}=_,G={..._,align:P,color:S,className:R,component:I,gutterBottom:L,noWrap:j,paragraph:M,variant:D,variantMapping:F},B=I||(M?"p":F[D]||defaultVariantMapping[D])||"span",H=useUtilityClasses$G(G);return jsxRuntimeExports.jsx(TypographyRoot,{as:B,ref:T,className:clsx(H.root,R),...N,ownerState:G,style:{...P!=="inherit"&&{"--Typography-textAlign":P},...N.style}})});function useSlotProps(o){var j;const{elementType:u,externalSlotProps:T,ownerState:S,skipResolvingSlotProps:E=!1,...C}=o,_=E?{}:resolveComponentProps(T,S),{props:P,internalRef:R}=mergeSlotProps({...C,externalSlotProps:_}),I=useForkRef(R,_==null?void 0:_.ref,(j=o.additionalProps)==null?void 0:j.ref);return appendOwnerState(u,{...P,ref:I},S)}function getReactElementRef(o){var u;return parseInt(reactExports.version,10)>=19?((u=o==null?void 0:o.props)==null?void 0:u.ref)||null:(o==null?void 0:o.ref)||null}function getContainer$1(o){return typeof o=="function"?o():o}const Portal=reactExports.forwardRef(function(u,T){const{children:S,container:E,disablePortal:C=!1}=u,[_,P]=reactExports.useState(null),R=useForkRef(reactExports.isValidElement(S)?getReactElementRef(S):null,T);
196if(useEnhancedEffect(()=>{C||P(getContainer$1(E)||document.body)},[E,C]),useEnhancedEffect(()=>{if(_&&!C)return setRef(T,_),()=>{setRef(T,null)}},[T,_,C]),C){if(reactExports.isValidElement(S)){const I={ref:R};return reactExports.cloneElement(S,I)}return S}return _&&reactDomExports.createPortal(S,_)}),CancelIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}));function getChipUtilityClass(o){return generateUtilityClass("MuiChip",o)}const chipClasses=generateUtilityClasses("MuiChip",["root","sizeSmall","sizeMedium","colorDefault","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),useUtilityClasses$F=o=>{const{classes:u,disabled:T,size:S,color:E,iconColor:C,onDelete:_,clickable:P,variant:R}=o,I={root:["root",R,T&&"disabled",`size${capitalize(S)}`,`color${capitalize(E)}`,P&&"clickable",P&&`clickableColor${capitalize(E)}`,_&&"deletable",_&&`deletableColor${capitalize(E)}`,`${R}${capitalize(E)}`],label:["label",`label${capitalize(S)}`],avatar:["avatar",`avatar${capitalize(S)}`,`avatarColor${capitalize(E)}`],icon:["icon",`icon${capitalize(S)}`,`iconColor${capitalize(C)}`],deleteIcon:["deleteIcon",`deleteIcon${capitalize(S)}`,`deleteIconColor${capitalize(E)}`,`deleteIcon${capitalize(R)}Color${capitalize(E)}`]};return composeClasses(I,getChipUtilityClass,u)},ChipRoot=styled("div",{name:"MuiChip",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o,{color:S,iconColor:E,clickable:C,onDelete:_,size:P,variant:R}=T;return[{[`& .${chipClasses.avatar}`]:u.avatar},{[`& .${chipClasses.avatar}`]:u[`avatar${capitalize(P)}`]},{[`& .${chipClasses.avatar}`]:u[`avatarColor${capitalize(S)}`]},{[`& .${chipClasses.icon}`]:u.icon},{[`& .${chipClasses.icon}`]:u[`icon${capitalize(P)}`]},{[`& .${chipClasses.icon}`]:u[`iconColor${capitalize(E)}`]},{[`& .${chipClasses.deleteIcon}`]:u.deleteIcon},{[`& .${chipClasses.deleteIcon}`]:u[`deleteIcon${capitalize(P)}`]},{[`& .${chipClasses.deleteIcon}`]:u[`deleteIconColor${capitalize(S)}`]},{[`& .${chipClasses.deleteIcon}`]:u[`deleteIcon${capitalize(R)}Color${capitalize(S)}`]},u.root,u[`size${capitalize(P)}`],u[`color${capitalize(S)}`],C&&u.clickable,C&&S!=="default"&&u[`clickableColor${capitalize(S)})`],_&&u.deletable,_&&S!=="default"&&u[`deletableColor${capitalize(S)}`],u[R],u[`${R}${capitalize(S)}`]]}})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?o.palette.grey[700]:o.palette.grey[300];return{maxWidth:"100%",fontFamily:o.typography.fontFamily,fontSize:o.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,lineHeight:1.5,color:(o.vars||o).palette.text.primary,backgroundColor:(o.vars||o).palette.action.selected,borderRadius:32/2,whiteSpace:"nowrap",transition:o.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${chipClasses.disabled}`]:{opacity:(o.vars||o).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${chipClasses.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:o.vars?o.vars.palette.Chip.defaultAvatarColor:u,fontSize:o.typography.pxToRem(12)},[`& .${chipClasses.avatarColorPrimary}`]:{color:(o.vars||o).palette.primary.contrastText,backgroundColor:(o.vars||o).palette.primary.dark},[`& .${chipClasses.avatarColorSecondary}
196`]:{color:(o.vars||o).palette.secondary.contrastText,backgroundColor:(o.vars||o).palette.secondary.dark},[`& .${chipClasses.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:o.typography.pxToRem(10)},[`& .${chipClasses.icon}`]:{marginLeft:5,marginRight:-6},[`& .${chipClasses.deleteIcon}`]:{WebkitTapHighlightColor:"transparent",color:o.alpha((o.vars||o).palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:o.alpha((o.vars||o).palette.text.primary,.4)}},variants:[{props:{size:"small"},style:{height:24,[`& .${chipClasses.icon}`]:{fontSize:18,marginLeft:4,marginRight:-4},[`& .${chipClasses.deleteIcon}`]:{fontSize:16,marginRight:4,marginLeft:-4}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["contrastText"])).map(([T])=>({props:{color:T},style:{backgroundColor:(o.vars||o).palette[T].main,color:(o.vars||o).palette[T].contrastText,[`& .${chipClasses.deleteIcon}`]:{color:o.alpha((o.vars||o).palette[T].contrastText,.7),"&:hover, &:active":{color:(o.vars||o).palette[T].contrastText}}}})),{props:T=>T.iconColor===T.color,style:{[`& .${chipClasses.icon}`]:{color:o.vars?o.vars.palette.Chip.defaultIconColor:u}}},{props:T=>T.iconColor===T.color&&T.color!=="default",style:{[`& .${chipClasses.icon}`]:{color:"inherit"}}},{props:{onDelete:!0},style:{[`&.${chipClasses.focusVisible}`]:{backgroundColor:o.alpha((o.vars||o).palette.action.selected,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.focusOpacity}`)}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([T])=>({props:{color:T,onDelete:!0},style:{[`&.${chipClasses.focusVisible}`]:{background:(o.vars||o).palette[T].dark}}})),{props:{clickable:!0},style:{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:o.alpha((o.vars||o).palette.action.selected,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.hoverOpacity}`)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:o.alpha((o.vars||o).palette.action.selected,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.focusOpacity}`)},"&:active":{boxShadow:(o.vars||o).shadows[1]}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([T])=>({props:{color:T,clickable:!0},style:{[`&:hover, &.${chipClasses.focusVisible}`]:{backgroundColor:(o.vars||o).palette[T].dark}}})),{props:{variant:"outlined"},style:{backgroundColor:"transparent",border:o.vars?`1px solid ${o.vars.palette.Chip.defaultBorder}`:`1px solid ${o.palette.mode==="light"?o.palette.grey[400]:o.palette.grey[700]}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:(o.vars||o).palette.action.hover},[`&.${chipClasses.focusVisible}`]:{backgroundColor:(o.vars||o).palette.action.focus},[`& .${chipClasses.avatar}`]:{marginLeft:4},[`& .${chipClasses.avatarSmall}`]:{marginLeft:2},[`& .${chipClasses.icon}`]:{marginLeft:4},[`& .${chipClasses.iconSmall}`]:{marginLeft:2},[`& .${chipClasses.deleteIcon}`]:{marginRight:5},[`& .${chipClasses.deleteIconSmall}`]:{marginRight:3}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([T])=>({props:{variant:"outlined",color:T},style:{color:(o.vars||o).palette[T].main,border:`1px solid ${o.alpha((o.vars||o).palette[T].main,.7)}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:o.alpha((o.vars||o).palette[T].main,(o.vars||o).palette.action.hoverOpacity)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:o.alpha((o.vars||o).palette[T].main,(o.vars||o).palette.action.focusOpacity)},[`& .${chipClasses.deleteIcon}`]:{color:o.alpha((o.vars||o).palette[T].main,.7),"&:hover, &:active":{color:(o.vars||o).palette[T].main}}}}))]}})),ChipLabel=styled("span",{name:"MuiChip",slot:"Label",overridesResolver:(o,u)=>{const{ownerState:T}=o,{size:S}=T;return[u.label,u[`label${capitalize(S)}`]]}})({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap",variants:[{props:{variant:"outlined"},style:{paddingLeft:11,paddingRight:11}},{props:{size:"small"},style:{paddingLeft:8,paddingRight:8}},{props:{size:"small",variant:"outlined"},style:{paddingLeft:7,paddingRight:7}}]});function isDeleteKeyboardEvent(o){return o.key==="Backspace"||o.key==="Delete"}const Chip=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiChip"}
196),{avatar:E,className:C,clickable:_,color:P="default",component:R,deleteIcon:I,disabled:L=!1,icon:j,label:M,onClick:D,onDelete:F,onKeyDown:N,onKeyUp:G,size:B="medium",variant:H="filled",tabIndex:O,skipFocusWhenDisabled:V=!1,slots:U={},slotProps:W={},...K}=S,Y=reactExports.useRef(null),ee=useForkRef(Y,T),oe=ve=>{ve.stopPropagation(),F&&F(ve)},se=ve=>{ve.currentTarget===ve.target&&isDeleteKeyboardEvent(ve)&&ve.preventDefault(),N&&N(ve)},Q=ve=>{ve.currentTarget===ve.target&&F&&isDeleteKeyboardEvent(ve)&&F(ve),G&&G(ve)},ie=_!==!1&&D?!0:_,ae=ie||F?ButtonBase:R||"div",re={...S,component:ae,disabled:L,size:B,color:P,iconColor:reactExports.isValidElement(j)&&j.props.color||P,onDelete:!!F,clickable:ie,variant:H},J=useUtilityClasses$F(re),te=ae===ButtonBase?{component:R||"div",focusVisibleClassName:J.focusVisible,...F&&{disableRipple:!0}}:{};let Z=null;F&&(Z=I&&reactExports.isValidElement(I)?reactExports.cloneElement(I,{className:clsx(I.props.className,J.deleteIcon),onClick:oe}):jsxRuntimeExports.jsx(CancelIcon,{className:J.deleteIcon,onClick:oe}));let X=null;E&&reactExports.isValidElement(E)&&(X=reactExports.cloneElement(E,{className:clsx(J.avatar,E.props.className)}));let de=null;j&&reactExports.isValidElement(j)&&(de=reactExports.cloneElement(j,{className:clsx(J.icon,j.props.className)}));const he={slots:U,slotProps:W},[ne,ue]=useSlot("root",{elementType:ChipRoot,externalForwardedProps:{...he,...K},ownerState:re,shouldForwardComponentProp:!0,ref:ee,className:clsx(J.root,C),additionalProps:{disabled:ie&&L?!0:void 0,tabIndex:V&&L?-1:O,...te},getSlotProps:ve=>({...ve,onClick:Te=>{var Se;(Se=ve.onClick)==null||Se.call(ve,Te),D==null||D(Te)},onKeyDown:Te=>{var Se;(Se=ve.onKeyDown)==null||Se.call(ve,Te),se(Te)},onKeyUp:Te=>{var Se;(Se=ve.onKeyUp)==null||Se.call(ve,Te),Q(Te)}})}),[ce,fe]=useSlot("label",{elementType:ChipLabel,externalForwardedProps:he,ownerState:re,className:J.label});return jsxRuntimeExports.jsxs(ne,{as:ae,...ue,children:[X||de,jsxRuntimeExports.jsx(ce,{...fe,children:M}),Z]})});function getStyleValue(o){return parseInt(o,10)||0}const styles$3={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function isObjectEmpty(o){for(const u in o)return!1;return!0}function isEmpty$1(o){return isObjectEmpty(o)||o.outerHeightStyle===0&&!o.overflowing}const TextareaAutosize=reactExports.forwardRef(function(u,T){const{onChange:S,maxRows:E,minRows:C=1,style:_,value:P,...R}=u,{current:I}=reactExports.useRef(P!=null),L=reactExports.useRef(null),j=useForkRef(T,L),M=reactExports.useRef(null),D=reactExports.useRef(null),F=reactExports.useCallback(()=>{const O=L.current,V=D.current;if(!O||!V)return;const W=ownerWindow(O).getComputedStyle(O);if(W.width==="0px")return{outerHeightStyle:0,overflowing:!1};V.style.width=W.width,V.value=O.value||u.placeholder||"x",V.value.slice(-1)===` 197`&&(V.value+=" ");const K=W.boxSizing,Y=getStyleValue(W.paddingBottom)+getStyleValue(W.paddingTop),ee=getStyleValue(W.borderBottomWidth)+getStyleValue(W.borderTopWidth),oe=V.scrollHeight;V.value="x";const se=V.scrollHeight;let Q=oe;C&&(Q=Math.max(Number(C)*se,Q)),E&&(Q=Math.min(Number(E)*se,Q)),Q=Math.max(Q,se);const ie=Q+(K==="border-box"?Y+ee:0),ae=Math.abs(Q-oe)<=1;return{outerHeightStyle:ie,overflowing:ae}},[E,C,u.placeholder]),N=useEventCallback(()=>{const O=L.current,V=F();if(!O||!V||isEmpty$1(V))return!1;const U=V.outerHeightStyle;return M.current!=null&&M.current!==U}),G=reactExports.useCallback(()=>{const O=L.current,V=F();if(!O||!V||isEmpty$1(V))return;const U=V.outerHeightStyle;M.current!==U&&(M.current=U,O.style.height=`${U}px`),O.style.overflow=V.overflowing?"hidden":""},[F]),B=reactExports.useRef(-1);useEnhancedEffect(()=>{const O=debounce(G),V=L==null?void 0:L.current;if(!V)return;const U=ownerWindow(V);U.addEventListener("resize",O);let W;return typeof ResizeObserver<"u"&&(W=new ResizeObserver(()=>{N()&&(W.unobserve(V),cancelAnimationFrame(B.current),G(),B.current=requestAnimationFrame(()=>{W.observe(V)}))}),W.observe(V)),()=>{O.clear(),cancelAnimationFrame(B.current),U.removeEventListener("resize",O),W&&W.disconnect()}},[F,G,N]),useEnhancedEffect(()=>{G()});const H=O=>{I||G();const V=O.target,U=V.value.length,W=V.value.endsWith(` 198`),K=V.selectionStart===U;W&&K&&V.setSelectionRange(U,U),S&&S(O)};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("textarea",{value:P,onChange:H,ref:j,rows:C,style:_,...R}
198),jsxRuntimeExports.jsx("textarea",{"aria-hidden":!0,className:u.className,readOnly:!0,ref:D,tabIndex:-1,style:{...styles$3.shadow,..._,paddingTop:0,paddingBottom:0}})]})});function formControlState({props:o,states:u,muiFormControl:T}){return u.reduce((S,E)=>(S[E]=o[E],T&&typeof o[E]>"u"&&(S[E]=T[E]),S),{})}const FormControlContext=reactExports.createContext(void 0);function useFormControl(){return reactExports.useContext(FormControlContext)}function hasValue(o){return o!=null&&!(Array.isArray(o)&&o.length===0)}function isFilled(o,u=!1){return o&&(hasValue(o.value)&&o.value!==""||u&&hasValue(o.defaultValue)&&o.defaultValue!=="")}function isAdornedStart(o){return o.startAdornment}function getInputBaseUtilityClass(o){return generateUtilityClass("MuiInputBase",o)}const inputBaseClasses=generateUtilityClasses("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]);var _InputGlobalStyles;const rootOverridesResolver=(o,u)=>{const{ownerState:T}=o;return[u.root,T.formControl&&u.formControl,T.startAdornment&&u.adornedStart,T.endAdornment&&u.adornedEnd,T.error&&u.error,T.size==="small"&&u.sizeSmall,T.multiline&&u.multiline,T.color&&u[`color${capitalize(T.color)}`],T.fullWidth&&u.fullWidth,T.hiddenLabel&&u.hiddenLabel]},inputOverridesResolver=(o,u)=>{const{ownerState:T}=o;return[u.input,T.size==="small"&&u.inputSizeSmall,T.multiline&&u.inputMultiline,T.type==="search"&&u.inputTypeSearch,T.startAdornment&&u.inputAdornedStart,T.endAdornment&&u.inputAdornedEnd,T.hiddenLabel&&u.inputHiddenLabel]},useUtilityClasses$E=o=>{const{classes:u,color:T,disabled:S,error:E,endAdornment:C,focused:_,formControl:P,fullWidth:R,hiddenLabel:I,multiline:L,readOnly:j,size:M,startAdornment:D,type:F}=o,N={root:["root",`color${capitalize(T)}`,S&&"disabled",E&&"error",R&&"fullWidth",_&&"focused",P&&"formControl",M&&M!=="medium"&&`size${capitalize(M)}`,L&&"multiline",D&&"adornedStart",C&&"adornedEnd",I&&"hiddenLabel",j&&"readOnly"],input:["input",S&&"disabled",F==="search"&&"inputTypeSearch",L&&"inputMultiline",M==="small"&&"inputSizeSmall",I&&"inputHiddenLabel",D&&"inputAdornedStart",C&&"inputAdornedEnd",j&&"readOnly"]};return composeClasses(N,getInputBaseUtilityClass,u)},InputBaseRoot=styled("div",{name:"MuiInputBase",slot:"Root",overridesResolver:rootOverridesResolver})(memoTheme(({theme:o})=>({...o.typography.body1,color:(o.vars||o).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${inputBaseClasses.disabled}`]:{color:(o.vars||o).palette.text.disabled,cursor:"default"},variants:[{props:({ownerState:u})=>u.multiline,style:{padding:"4px 0 5px"}},{props:({ownerState:u,size:T})=>u.multiline&&T==="small",style:{paddingTop:1}},{props:({ownerState:u})=>u.fullWidth,style:{width:"100%"}}]}))),InputBaseInput=styled("input",{name:"MuiInputBase",slot:"Input",overridesResolver:inputOverridesResolver})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light",T={color:"currentColor",...o.vars?{opacity:o.vars.opacity.inputPlaceholder}:{opacity:u?.42:.5},transition:o.transitions.create("opacity",{duration:o.transitions.duration.shorter})},S={opacity:"0 !important"},E=o.vars?{opacity:o.vars.opacity.inputPlaceholder}:{opacity:u?.42:.5};return{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%","&::-webkit-input-placeholder":T,"&::-moz-placeholder":T,"&::-ms-input-placeholder":T,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]:{"&::-webkit-input-placeholder":S,"&::-moz-placeholder":S,"&::-ms-input-placeholder":S,"&:focus::-webkit-input-placeholder":E,"&:focus::-moz-placeholder":E,"&:focus::-ms-input-placeholder":E},[`&.${inputBaseClasses.disabled}`]:{opacity:1,WebkitTextFillColor:(o.vars||o).palette.text.disabled},variants:[{props:({ownerState:C})=>!C.disableInjectingGlobalStyles,style:{animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}}},{props:{size:"small"},style:{paddingTop:1}},{props:({ownerState:C})=>C.multiline,style:{height:"auto",resize:"none",padding:0,paddingTop:0}},{props:{type:"search"},style:{MozAppearance:"textfield"}}]}})),InputGlobalStyles=globalCss({"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}),InputBase=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiInputBase"}),{"aria-describedby":E,autoComplete:C,autoFocus:_,className:P,color:R,c
198omponents:I={},componentsProps:L={},defaultValue:j,disabled:M,disableInjectingGlobalStyles:D,endAdornment:F,error:N,fullWidth:G=!1,id:B,inputComponent:H="input",inputProps:O={},inputRef:V,margin:U,maxRows:W,minRows:K,multiline:Y=!1,name:ee,onBlur:oe,onChange:se,onClick:Q,onFocus:ie,onKeyDown:ae,onKeyUp:re,placeholder:J,readOnly:te,renderSuffix:Z,rows:X,size:de,slotProps:he={},slots:ne={},startAdornment:ue,type:ce="text",value:fe,...ve}=S,Te=O.value!=null?O.value:fe,{current:Se}=reactExports.useRef(Te!=null),ke=reactExports.useRef(),we=reactExports.useCallback(Be=>{},[]),Le=useForkRef(ke,V,O.ref,we),[pe,Me]=reactExports.useState(!1),Pe=useFormControl(),Ue=formControlState({props:S,muiFormControl:Pe,states:["color","disabled","error","hiddenLabel","size","required","filled"]});Ue.focused=Pe?Pe.focused:pe,reactExports.useEffect(()=>{!Pe&&M&&pe&&(Me(!1),oe&&oe())},[Pe,M,pe,oe]);const qe=Pe&&Pe.onFilled,Ie=Pe&&Pe.onEmpty,Xe=reactExports.useCallback(Be=>{isFilled(Be)?qe&&qe():Ie&&Ie()},[qe,Ie]);useEnhancedEffect(()=>{Se&&Xe({value:Te})},[Te,Xe,Se]);const et=Be=>{ie&&ie(Be),O.onFocus&&O.onFocus(Be),Pe&&Pe.onFocus?Pe.onFocus(Be):Me(!0)},tt=Be=>{oe&&oe(Be),O.onBlur&&O.onBlur(Be),Pe&&Pe.onBlur?Pe.onBlur(Be):Me(!1)},Ye=(Be,...Qe)=>{if(!Se){const Ge=Be.target||ke.current;if(Ge==null)throw new Error(formatMuiErrorMessage(1));Xe({value:Ge.value})}O.onChange&&O.onChange(Be,...Qe),se&&se(Be,...Qe)};reactExports.useEffect(()=>{Xe(ke.current)},[]);const ze=Be=>{ke.current&&Be.currentTarget===Be.target&&ke.current.focus(),Q&&Q(Be)};let Ze=H,He=O;Y&&Ze==="input"&&(X?He={type:void 0,minRows:X,maxRows:X,...He}:He={type:void 0,maxRows:W,minRows:K,...He},Ze=TextareaAutosize);const rt=Be=>{Xe(Be.animationName==="mui-auto-fill-cancel"?ke.current:{value:"x"})};reactExports.useEffect(()=>{Pe&&Pe.setAdornedStart(!!ue)},[Pe,ue]);const it={...S,color:Ue.color||"primary",disabled:Ue.disabled,endAdornment:F,error:Ue.error,focused:Ue.focused,formControl:Pe,fullWidth:G,hiddenLabel:Ue.hiddenLabel,multiline:Y,size:Ue.size,startAdornment:ue,type:ce},st=useUtilityClasses$E(it),at=ne.root||I.Root||InputBaseRoot,ot=he.root||L.root||{},je=ne.input||I.Input||InputBaseInput;return He={...He,...he.input??L.input},jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[!D&&typeof InputGlobalStyles=="function"&&(_InputGlobalStyles||(_InputGlobalStyles=jsxRuntimeExports.jsx(InputGlobalStyles,{}))),jsxRuntimeExports.jsxs(at,{...ot,ref:T,onClick:ze,...ve,...!isHostComponent(at)&&{ownerState:{...it,...ot.ownerState}},className:clsx(st.root,ot.className,P,te&&"MuiInputBase-readOnly"),children:[ue,jsxRuntimeExports.jsx(FormControlContext.Provider,{value:null,children:jsxRuntimeExports.jsx(je,{"aria-invalid":Ue.error,"aria-describedby":E,autoComplete:C,autoFocus:_,defaultValue:j,disabled:Ue.disabled,id:B,onAnimationStart:rt,name:ee,placeholder:J,readOnly:te,required:Ue.required,rows:X,value:Te,onKeyDown:ae,onKeyUp:re,type:ce,...He,...!isHostComponent(je)&&{as:Ze,ownerState:{...it,...He.ownerState}},ref:Le,className:clsx(st.input,He.className,te&&"MuiInputBase-readOnly"),onBlur:tt,onChange:Ye,onFocus:et})}),F,Z?Z({...Ue,startAdornment:ue}):null]})]})});function getInputUtilityClass(o){return generateUtilityClass("MuiInput",o)}const inputClasses={...inputBaseClasses,...generateUtilityClasses("MuiInput",["root","underline","input"])};function getOutlinedInputUtilityClass(o){return generateUtilityClass("MuiOutlinedInput",o)}const outlinedInputClasses={...inputBaseClasses,...generateUtilityClasses("MuiOutlinedInput",["root","notchedOutline","input"])};function getFilledInputUtilityClass(o){return generateUtilityClass("MuiFilledInput",o)}const filledInputClasses={...inputBaseClasses,...generateUtilityClasses("MuiFilledInput",["root","underline","input","adornedStart","adornedEnd","sizeSmall","multiline","hiddenLabel"])},ArrowDropDownIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M7 10l5 5 5-5z"})),styles$2={entering:{opacity:1},entered:{opacity:1}},Fade=reactExports.forwardRef(function(u,T){const S=useTheme(),E={enter:S.transitions.duration.enteringScreen,exit:S.transitions.duration.leavingScreen},{addEndListener:C,appear:_=!0,children:P,easing:R,in:I,onEnter:L,onEntered:j,onEntering:M,onExit:D,onExited:F,onExiting:N,style:G,timeout:B=E,TransitionComponent:H=Transition,...O}=u,V=reactExports.useRef(null),U=useForkRef(V,getReactElementRef(P),T),W=ae=>re=>{if(ae){const J=V.current;re===void 0?ae(J):ae(J,re)}},K=W(M),Y=W((ae,re)=>{reflow(ae);const J=getTransitionProps({style:G,timeout:B,easing:R},{mode:"enter"});ae.style.webkitTransition=S.transitions.create("opacity",J),ae.style.transition=S.transitions.create("opacity",J),L&&L(ae,re)}),ee=W(j),oe=W(N),se=W(ae=>{const re=getTransitionProps({style:G,timeout:B,easing:R},{mode:"exit"});ae.style.webkitTransition=S.transitions.create("opacity",re),ae.style.transition=S.transitions.create("opacity",re),D&&D(ae)}),Q=W(F),ie=ae=>{C&&C(V.current,ae)};return jsxRuntimeExports.jsx(H,{appear:_,in:I,nodeRef:V,onEnter:Y,onEntered:ee,onEntering:K,onExit:se,onExited:Q,onExiting:oe,addEndListener:ie,timeout:B,...O,children:(ae,{ownerState:re,...J})=>reactExports.cloneElement(P,{style:{opacity:0,visibility:ae==="exited"&&!I?"hidden":void 0,...styles$2[ae],...G,...P.props.style},ref:U,...J})})});function getBackdropUtilityClass(o){return generateUtilityClass("MuiBackdrop",o)}generateUtilityClasses("MuiBackdrop",["root","invisible"]);const useUtilityClasses$D=o=>{const{classes:u,invisible:T}=o;return composeClasses({root:["root",T&&"invisible"]},getBackdropUtilityClass,u)},BackdropRoot=styled("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.invisible&&u.invisible]}})({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent",variants:[{props:{invisible:!0},style:{backgroundColor:"transparent"}}]}),Backdrop=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiBackdrop"}),{children:E,className:C,component:_="div",invisible:P=!1,open:R,components:I={},componentsProps:L={},slotProps:j={},slots:M={},TransitionComponent:D,transitionDuration:F,...N}=S,G={...S,component:_,invisible:P},B=useUtilityClasses$D(G),H={transition:D,root:I.Root,...M},O={...L,...j},V={component:_,slots:H,slotProps:O},[U,W]=useSlot("root",{elementType:BackdropRoot,externalForwardedProps:V,className:clsx(B.root,C),ownerState:G}),[K,Y]=useSlot("transition",{elementType:Fade,externalForwardedProps:V,ownerState:G});return jsxRuntimeExports.jsx(K,{in:R,timeout:F,...N,...Y,children:jsxRuntimeExports.jsx(U,{"aria-hidden":!0,...W,classes:B,ref:T,children:E})})}),boxClasses=generateUtilityClasses("MuiBox",["root"]),defaultTheme=createTheme(),Box=createBox$1({themeId:THEME_ID,defaultTheme,defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});function getButtonUtilityClass(o){return generateUtilityClass("MuiButton",o)}
198const buttonClasses=generateUtilityClasses("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge","loading","loadingWrapper","loadingIconPlaceholder","loadingIndicator","loadingPositionCenter","loadingPositionStart","loadingPositionEnd"]),ButtonGroupContext=reactExports.createContext({}),ButtonGroupButtonContext=reactExports.createContext(void 0),useUtilityClasses$C=o=>{const{color:u,disableElevation:T,fullWidth:S,size:E,variant:C,loading:_,loadingPosition:P,classes:R}=o,I={root:["root",_&&"loading",C,`${C}${capitalize(u)}`,`size${capitalize(E)}`,`${C}Size${capitalize(E)}`,`color${capitalize(u)}`,T&&"disableElevation",S&&"fullWidth",_&&`loadingPosition${capitalize(P)}`],startIcon:["icon","startIcon",`iconSize${capitalize(E)}`],endIcon:["icon","endIcon",`iconSize${capitalize(E)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},L=composeClasses(I,getButtonUtilityClass,R);return{...R,...L}},commonIconStyles=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],ButtonRoot=styled(ButtonBase,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiButton",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.variant],u[`${T.variant}${capitalize(T.color)}`],u[`size${capitalize(T.size)}`],u[`${T.variant}Size${capitalize(T.size)}`],T.color==="inherit"&&u.colorInherit,T.disableElevation&&u.disableElevation,T.fullWidth&&u.fullWidth,T.loading&&u.loading]}})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?o.palette.grey[300]:o.palette.grey[800],T=o.palette.mode==="light"?o.palette.grey.A100:o.palette.grey[700];return{...o.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(o.vars||o).shape.borderRadius,transition:o.transitions.create(["background-color","box-shadow","border-color","color"],{duration:o.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${buttonClasses.disabled}`]:{color:(o.vars||o).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(o.vars||o).shadows[2],"&:hover":{boxShadow:(o.vars||o).shadows[4],"@media (hover: none)":{boxShadow:(o.vars||o).shadows[2]}},"&:active":{boxShadow:(o.vars||o).shadows[8]},[`&.${buttonClasses.focusVisible}`]:{boxShadow:(o.vars||o).shadows[6]},[`&.${buttonClasses.disabled}`]:{color:(o.vars||o).palette.action.disabled,boxShadow:(o.vars||o).shadows[0],backgroundColor:(o.vars||o).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${buttonClasses.disabled}`]:{border:`1px solid ${(o.vars||o).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([S])=>({props:{color:S},style:{"--variant-textColor":(o.vars||o).palette[S].main,"--variant-outlinedColor":(o.vars||o).palette[S].main,"--variant-outlinedBorder":o.alpha((o.vars||o).palette[S].main,.5),"--variant-containedColor":(o.vars||o).palette[S].contrastText,"--variant-containedBg":(o.vars||o).palette[S].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(o.vars||o).palette[S].dark,"--variant-textBg":o.alpha((o.vars||o).palette[S].main,(o.vars||o).palette.action.hoverOpacity),"--variant-outlinedBorder":(o.vars||o).palette[S].main,"--variant-outlinedBg":o.alpha((o.vars||o).palette[S].main,(o.vars||o).palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":o.vars?o.vars.palette.Button.inheritContainedBg:u,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":o.vars?o.vars.palette.Button.inheritContainedHoverBg:T,"--variant-textBg":o.alpha((o.vars||o).palette.text.primary,(o.vars||o).palette.action.hoverOpacity),"--variant-outlinedBg":o.alpha((o.vars||o).palette.text.primary,(o.vars||o).palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:o.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:o.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:o.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:o.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:o.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:o.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"}
198,[`&.${buttonClasses.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${buttonClasses.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:o.transitions.create(["background-color","box-shadow","border-color"],{duration:o.transitions.duration.short}),[`&.${buttonClasses.loading}`]:{color:"transparent"}}}]}})),ButtonStartIcon=styled("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.startIcon,T.loading&&u.startIconLoadingStart,u[`iconSize${capitalize(T.size)}`]]}})(({theme:o})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:o.transitions.create(["opacity"],{duration:o.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...commonIconStyles]})),ButtonEndIcon=styled("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.endIcon,T.loading&&u.endIconLoadingEnd,u[`iconSize${capitalize(T.size)}`]]}})(({theme:o})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:o.transitions.create(["opacity"],{duration:o.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...commonIconStyles]})),ButtonLoadingIndicator=styled("span",{name:"MuiButton",slot:"LoadingIndicator"})(({theme:o})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},style:{display:"flex"}},{props:{loadingPosition:"start"},style:{left:14}},{props:{loadingPosition:"start",size:"small"},style:{left:10}},{props:{variant:"text",loadingPosition:"start"},style:{left:6}},{props:{loadingPosition:"center"},style:{left:"50%",transform:"translate(-50%)",color:(o.vars||o).palette.action.disabled}},{props:{loadingPosition:"end"},style:{right:14}},{props:{loadingPosition:"end",size:"small"},style:{right:10}},{props:{variant:"text",loadingPosition:"end"},style:{right:6}},{props:{loadingPosition:"start",fullWidth:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),ButtonLoadingIconPlaceholder=styled("span",{name:"MuiButton",slot:"LoadingIconPlaceholder"})({display:"inline-block",width:"1em",height:"1em"}),Button=reactExports.forwardRef(function(u,T){const S=reactExports.useContext(ButtonGroupContext),E=reactExports.useContext(ButtonGroupButtonContext),C=resolveProps(S,u),_=useDefaultProps({props:C,name:"MuiButton"}),{children:P,color:R="primary",component:I="button",className:L,disabled:j=!1,disableElevation:M=!1,disableFocusRipple:D=!1,endIcon:F,focusVisibleClassName:N,fullWidth:G=!1,id:B,loading:H=null,loadingIndicator:O,loadingPosition:V="center",size:U="medium",startIcon:W,type:K,variant:Y="text",...ee}=_,oe=useId(B),se=O??jsxRuntimeExports.jsx(CircularProgress,{"aria-labelledby":oe,color:"inherit",size:16}),Q={..._,color:R,component:I,disabled:j,disableElevation:M,disableFocusRipple:D,fullWidth:G,loading:H,loadingIndicator:se,loadingPosition:V,size:U,type:K,variant:Y},ie=useUtilityClasses$C(Q),ae=(W||H&&V==="start")&&jsxRuntimeExports.jsx(ButtonStartIcon,{className:ie.startIcon,ownerState:Q,children:W||jsxRuntimeExports.jsx(ButtonLoadingIconPlaceholder,{className:ie.loadingIconPlaceholder,ownerState:Q})}),re=(F||H&&V==="end")&&jsxRuntimeExports.jsx(ButtonEndIcon,{className:ie.endIcon,ownerState:Q,children:F||jsxRuntimeExports.jsx(ButtonLoadingIconPlaceholder,{className:ie.loadingIconPlaceholder,ownerState:Q})}),J=E||"",te=typeof H=="boolean"?jsxRuntimeExports.jsx("span",{className:ie.loadingWrapper,style:{display:"contents"},children:H&&jsxRuntimeExports.jsx(ButtonLoadingIndicator,{className:ie.loadingIndicator,ownerState:Q,children:se})}):null;return jsxRuntimeExports.jsxs(ButtonRoot,{ownerState:Q,className:clsx(S.className,ie.root,L,J),component:I,disabled:j||H,focusRipple:!D,focusVisibleClassName:clsx(ie.focusVisible,N),ref:T,type:K,id:H?oe:B,...ee,classes:ie,children:[ae,V!=="end"&&te,P,V==="end"&&te,re]})});function getScrollbarSize(o=window){const u=o.document.documentElement.clientWidth;return o.innerWidth-u}function isOverflowing(o){const u=ownerDocument(o);return u.body===o?ownerWindow(o).innerWidth>u.documentElement.clientWidth:o.scrollHeight>o.clientHeight}function ariaHidden(o,u){u?o.setAttribute("aria-hidden","true"):o.removeAttribute("aria-hidden")}function getPaddingRight(o){return parseInt(ownerWindow(o).getComputedStyle(o).paddingRight,10)||0}function isAriaHiddenForbiddenOnElement(o){const T=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(o.tagName),S=o.tagName==="INPUT"&&o.getAttribute("type")==="hidden";return T||S}function ariaHiddenSiblings(o,u,T,S,E){const C=[u,T,...S];[].forEach.call(o.children,_=>{const P=!C.includes(_),R=!isAriaHiddenForbiddenOnElement(_);P&&R&&ariaHidden(_,E)})}function findIndexOf(o,u){let T=-1;return o.some((S,E)=>u(S)?(T=E,!0):!1),T}function handleContainer(o,u){const T=[],S=o.container;if(!u.disableScrollLock){if(isOverflowing(S)){const _=getScrollbarSize(ownerWindow(S));T.push({value:S.style.paddingRight,property:"padding-right",el:S}
198),S.style.paddingRight=`${getPaddingRight(S)+_}px`;const P=ownerDocument(S).querySelectorAll(".mui-fixed");[].forEach.call(P,R=>{T.push({value:R.style.paddingRight,property:"padding-right",el:R}),R.style.paddingRight=`${getPaddingRight(R)+_}px`})}let C;if(S.parentNode instanceof DocumentFragment)C=ownerDocument(S).body;else{const _=S.parentElement,P=ownerWindow(S);C=(_==null?void 0:_.nodeName)==="HTML"&&P.getComputedStyle(_).overflowY==="scroll"?_:S}T.push({value:C.style.overflow,property:"overflow",el:C},{value:C.style.overflowX,property:"overflow-x",el:C},{value:C.style.overflowY,property:"overflow-y",el:C}),C.style.overflow="hidden"}return()=>{T.forEach(({value:C,el:_,property:P})=>{C?_.style.setProperty(P,C):_.style.removeProperty(P)})}}function getHiddenSiblings(o){const u=[];return[].forEach.call(o.children,T=>{T.getAttribute("aria-hidden")==="true"&&u.push(T)}),u}class ModalManager{constructor(){this.modals=[],this.containers=[]}add(u,T){let S=this.modals.indexOf(u);if(S!==-1)return S;S=this.modals.length,this.modals.push(u),u.modalRef&&ariaHidden(u.modalRef,!1);const E=getHiddenSiblings(T);ariaHiddenSiblings(T,u.mount,u.modalRef,E,!0);const C=findIndexOf(this.containers,_=>_.container===T);return C!==-1?(this.containers[C].modals.push(u),S):(this.containers.push({modals:[u],container:T,restore:null,hiddenSiblings:E}),S)}mount(u,T){const S=findIndexOf(this.containers,C=>C.modals.includes(u)),E=this.containers[S];E.restore||(E.restore=handleContainer(E,T))}remove(u,T=!0){const S=this.modals.indexOf(u);if(S===-1)return S;const E=findIndexOf(this.containers,_=>_.modals.includes(u)),C=this.containers[E];if(C.modals.splice(C.modals.indexOf(u),1),this.modals.splice(S,1),C.modals.length===0)C.restore&&C.restore(),u.modalRef&&ariaHidden(u.modalRef,T),ariaHiddenSiblings(C.container,u.mount,u.modalRef,C.hiddenSiblings,!1),this.containers.splice(E,1);else{const _=C.modals[C.modals.length-1];_.modalRef&&ariaHidden(_.modalRef,!1)}return S}isTopModal(u){return this.modals.length>0&&this.modals[this.modals.length-1]===u}}const candidatesSelector=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function getTabIndex(o){const u=parseInt(o.getAttribute("tabindex")||"",10);return Number.isNaN(u)?o.contentEditable==="true"||(o.nodeName==="AUDIO"||o.nodeName==="VIDEO"||o.nodeName==="DETAILS")&&o.getAttribute("tabindex")===null?0:o.tabIndex:u}function isNonTabbableRadio(o){if(o.tagName!=="INPUT"||o.type!=="radio"||!o.name)return!1;const u=S=>o.ownerDocument.querySelector(`input[type="radio"]${S}`);let T=u(`[name="${o.name}"]:checked`);return T||(T=u(`[name="${o.name}"]`)),T!==o}function isNodeMatchingSelectorFocusable(o){return!(o.disabled||o.tagName==="INPUT"&&o.type==="hidden"||isNonTabbableRadio(o))}function defaultGetTabbable(o){const u=[],T=[];return Array.from(o.querySelectorAll(candidatesSelector)).forEach((S,E)=>{const C=getTabIndex(S);C===-1||!isNodeMatchingSelectorFocusable(S)||(C===0?u.push(S):T.push({documentOrder:E,tabIndex:C,node:S}))}),T.sort((S,E)=>S.tabIndex===E.tabIndex?S.documentOrder-E.documentOrder:S.tabIndex-E.tabIndex).map(S=>S.node).concat(u)}function defaultIsEnabled(){return!0}function FocusTrap(o){const{children:u,disableAutoFocus:T=!1,disableEnforceFocus:S=!1,disableRestoreFocus:E=!1,getTabbable:C=defaultGetTabbable,isEnabled:_=defaultIsEnabled,open:P}=o,R=reactExports.useRef(!1),I=reactExports.useRef(null),L=reactExports.useRef(null),j=reactExports.useRef(null),M=reactExports.useRef(null),D=reactExports.useRef(!1),F=reactExports.useRef(null),N=useForkRef(getReactElementRef(u),F),G=reactExports.useRef(null);reactExports.useEffect(()=>{!P||!F.current||(D.current=!T)},[T,P]),reactExports.useEffect(()=>{if(!P||!F.current)return;const O=ownerDocument(F.current);return F.current.contains(O.activeElement)||(F.current.hasAttribute("tabIndex")||F.current.setAttribute("tabIndex","-1"),D.current&&F.current.focus()),()=>{E||(j.current&&j.current.focus&&(R.current=!0,j.current.focus()),j.current=null)}},[P]),reactExports.useEffect(()=>{if(!P||!F.current)return;const O=ownerDocument(F.current),V=K=>{G.current=K,!(S||!_()||K.key!=="Tab")&&O.activeElement===F.current&&K.shiftKey&&(R.current=!0,L.current&&L.current.focus())},U=()=>{var ee,oe;const K=F.current;if(K===null)return;if(!O.hasFocus()||!_()||R.current){R.current=!1;return}if(K.contains(O.activeElement)||S&&O.activeElement!==I.current&&O.activeElement!==L.current)return;if(O.activeElement!==M.current)M.current=null;else if(M.current!==null)return;if(!D.current)return;let Y=[];if((O.activeElement===I.current||O.activeElement===L.current)&&(Y=C(F.current)),Y.length>0){const se=!!((ee=G.current)!=null&&ee.shiftKey&&((oe=G.current)==null?void 0:oe.key)==="Tab"),Q=Y[0],ie=Y[Y.length-1];
198typeof Q!="string"&&typeof ie!="string"&&(se?ie.focus():Q.focus())}else K.focus()};O.addEventListener("focusin",U),O.addEventListener("keydown",V,!0);const W=setInterval(()=>{O.activeElement&&O.activeElement.tagName==="BODY"&&U()},50);return()=>{clearInterval(W),O.removeEventListener("focusin",U),O.removeEventListener("keydown",V,!0)}},[T,S,E,_,P,C]);const B=O=>{j.current===null&&(j.current=O.relatedTarget),D.current=!0,M.current=O.target;const V=u.props.onFocus;V&&V(O)},H=O=>{j.current===null&&(j.current=O.relatedTarget),D.current=!0};return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{tabIndex:P?0:-1,onFocus:H,ref:I,"data-testid":"sentinelStart"}),reactExports.cloneElement(u,{ref:N,onFocus:B}),jsxRuntimeExports.jsx("div",{tabIndex:P?0:-1,onFocus:H,ref:L,"data-testid":"sentinelEnd"})]})}function getContainer(o){return typeof o=="function"?o():o}function getHasTransition(o){return o?o.props.hasOwnProperty("in"):!1}const noop$2=()=>{},manager$2=new ModalManager;function useModal(o){const{container:u,disableEscapeKeyDown:T=!1,disableScrollLock:S=!1,closeAfterTransition:E=!1,onTransitionEnter:C,onTransitionExited:_,children:P,onClose:R,open:I,rootRef:L}=o,j=reactExports.useRef({}),M=reactExports.useRef(null),D=reactExports.useRef(null),F=useForkRef(D,L),[N,G]=reactExports.useState(!I),B=getHasTransition(P);let H=!0;(o["aria-hidden"]==="false"||o["aria-hidden"]===!1)&&(H=!1);const O=()=>ownerDocument(M.current),V=()=>(j.current.modalRef=D.current,j.current.mount=M.current,j.current),U=()=>{manager$2.mount(V(),{disableScrollLock:S}),D.current&&(D.current.scrollTop=0)},W=useEventCallback(()=>{const re=getContainer(u)||O().body;manager$2.add(V(),re),D.current&&U()}),K=()=>manager$2.isTopModal(V()),Y=useEventCallback(re=>{M.current=re,re&&(I&&K()?U():D.current&&ariaHidden(D.current,H))}),ee=reactExports.useCallback(()=>{manager$2.remove(V(),H)},[H]);reactExports.useEffect(()=>()=>{ee()},[ee]),reactExports.useEffect(()=>{I?W():(!B||!E)&&ee()},[I,ee,B,E,W]);const oe=re=>J=>{var te;(te=re.onKeyDown)==null||te.call(re,J),!(J.key!=="Escape"||J.which===229||!K())&&(T||(J.stopPropagation(),R&&R(J,"escapeKeyDown")))},se=re=>J=>{var te;(te=re.onClick)==null||te.call(re,J),J.target===J.currentTarget&&R&&R(J,"backdropClick")};return{getRootProps:(re={})=>{const J=extractEventHandlers(o);delete J.onTransitionEnter,delete J.onTransitionExited;const te={...J,...re};return{role:"presentation",...te,onKeyDown:oe(te),ref:F}},getBackdropProps:(re={})=>{const J=re;return{"aria-hidden":!0,...J,onClick:se(J),open:I}},getTransitionProps:()=>{const re=()=>{G(!1),C&&C()},J=()=>{G(!0),_&&_(),E&&ee()};return{onEnter:createChainedFunction(re,(P==null?void 0:P.props.onEnter)??noop$2),onExited:createChainedFunction(J,(P==null?void 0:P.props.onExited)??noop$2)}},rootRef:F,portalRef:Y,isTopModal:K,exited:N,hasTransition:B}}function getModalUtilityClass(o){return generateUtilityClass("MuiModal",o)}generateUtilityClasses("MuiModal",["root","hidden","backdrop"]);const useUtilityClasses$B=o=>{const{open:u,exited:T,classes:S}=o;return composeClasses({root:["root",!u&&T&&"hidden"],backdrop:["backdrop"]},getModalUtilityClass,S)},ModalRoot=styled("div",{name:"MuiModal",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,!T.open&&T.exited&&u.hidden]}})(memoTheme(({theme:o})=>({position:"fixed",zIndex:(o.vars||o).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:u})=>!u.open&&u.exited,style:{visibility:"hidden"}}]}))),ModalBackdrop=styled(Backdrop,{name:"MuiModal",slot:"Backdrop"})({zIndex:-1}),Modal=reactExports.forwardRef(function(u,T){const S=useDefaultProps({name:"MuiModal",props:u}),{BackdropComponent:E=ModalBackdrop,BackdropProps:C,classes:_,className:P,closeAfterTransition:R=!1,children:I,container:L,component:j,components:M={},componentsProps:D={},disableAutoFocus:F=!1,disableEnforceFocus:N=!1,disableEscapeKeyDown:G=!1,disablePortal:B=!1,disableRestoreFocus:H=!1,disableScrollLock:O=!1,hideBackdrop:V=!1,keepMounted:U=!1,onClose:W,onTransitionEnter:K,onTransitionExited:Y,open:ee,slotProps:oe={},slots:se={},theme:Q,...ie}
198=S,ae={...S,closeAfterTransition:R,disableAutoFocus:F,disableEnforceFocus:N,disableEscapeKeyDown:G,disablePortal:B,disableRestoreFocus:H,disableScrollLock:O,hideBackdrop:V,keepMounted:U},{getRootProps:re,getBackdropProps:J,getTransitionProps:te,portalRef:Z,isTopModal:X,exited:de,hasTransition:he}=useModal({...ae,rootRef:T}),ne={...ae,exited:de},ue=useUtilityClasses$B(ne),ce={};if(I.props.tabIndex===void 0&&(ce.tabIndex="-1"),he){const{onEnter:we,onExited:Le}=te();ce.onEnter=we,ce.onExited=Le}const fe={slots:{root:M.Root,backdrop:M.Backdrop,...se},slotProps:{...D,...oe}},[ve,Te]=useSlot("root",{ref:T,elementType:ModalRoot,externalForwardedProps:{...fe,...ie,component:j},getSlotProps:re,ownerState:ne,className:clsx(P,ue==null?void 0:ue.root,!ne.open&&ne.exited&&(ue==null?void 0:ue.hidden))}),[Se,ke]=useSlot("backdrop",{ref:C==null?void 0:C.ref,elementType:E,externalForwardedProps:fe,shouldForwardComponentProp:!0,additionalProps:C,getSlotProps:we=>J({...we,onClick:Le=>{we!=null&&we.onClick&&we.onClick(Le)}}),className:clsx(C==null?void 0:C.className,ue==null?void 0:ue.backdrop),ownerState:ne});return!U&&!ee&&(!he||de)?null:jsxRuntimeExports.jsx(Portal,{ref:Z,container:L,disablePortal:B,children:jsxRuntimeExports.jsxs(ve,{...Te,children:[!V&&E?jsxRuntimeExports.jsx(Se,{...ke}):null,jsxRuntimeExports.jsx(FocusTrap,{disableEnforceFocus:N,disableAutoFocus:F,disableRestoreFocus:H,isEnabled:X,open:ee,children:reactExports.cloneElement(I,ce)})]})})});function getDialogUtilityClass(o){return generateUtilityClass("MuiDialog",o)}const dialogClasses=generateUtilityClasses("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]),DialogContext=reactExports.createContext({}),DialogBackdrop=styled(Backdrop,{name:"MuiDialog",slot:"Backdrop",overrides:(o,u)=>u.backdrop})({zIndex:-1}),useUtilityClasses$A=o=>{const{classes:u,scroll:T,maxWidth:S,fullWidth:E,fullScreen:C}=o,_={root:["root"],container:["container",`scroll${capitalize(T)}`],paper:["paper",`paperScroll${capitalize(T)}`,`paperWidth${capitalize(String(S))}`,E&&"paperFullWidth",C&&"paperFullScreen"]};return composeClasses(_,getDialogUtilityClass,u)},DialogRoot=styled(Modal,{name:"MuiDialog",slot:"Root"})({"@media print":{position:"absolute !important"}}),DialogContainer=styled("div",{name:"MuiDialog",slot:"Container",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.container,u[`scroll${capitalize(T.scroll)}`]]}})({height:"100%","@media print":{height:"auto"},outline:0,variants:[{props:{scroll:"paper"},style:{display:"flex",justifyContent:"center",alignItems:"center"}},{props:{scroll:"body"},style:{overflowY:"auto",overflowX:"hidden",textAlign:"center","&::after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}}}]}),DialogPaper=styled(Paper,{name:"MuiDialog",slot:"Paper",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.paper,u[`scrollPaper${capitalize(T.scroll)}`],u[`paperWidth${capitalize(String(T.maxWidth))}`],T.fullWidth&&u.paperFullWidth,T.fullScreen&&u.paperFullScreen]}})(memoTheme(({theme:o})=>({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"},variants:[{props:{scroll:"paper"},style:{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"}},{props:{scroll:"body"},style:{display:"inline-block",verticalAlign:"middle",textAlign:"initial"}},{props:({ownerState:u})=>!u.maxWidth,style:{maxWidth:"calc(100% - 64px)"}},{props:{maxWidth:"xs"},style:{maxWidth:o.breakpoints.unit==="px"?Math.max(o.breakpoints.values.xs,444):`max(${o.breakpoints.values.xs}${o.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[o.breakpoints.down(Math.max(o.breakpoints.values.xs,444)+32*2)]:{maxWidth:"calc(100% - 64px)"}}}},...Object.keys(o.breakpoints.values).filter(u=>u!=="xs").map(u=>({props:{maxWidth:u},style:{maxWidth:`${o.breakpoints.values[u]}${o.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[o.breakpoints.down(o.breakpoints.values[u]+32*2)]:{maxWidth:"calc(100% - 64px)"}}}})),{props:({ownerState:u})=>u.fullWidth,style:{width:"calc(100% - 64px)"}},{props:({ownerState:u})=>u.fullScreen,style:{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:"100%"}}}]}))),Dialog=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiDialog"}),E=useTheme(),C={enter:E.transitions.duration.enteringScreen,exit:E.transitions.duration.leavingScreen},{"aria-describedby":_,"aria-labelledby":P,"aria-modal":R=!0,BackdropComponent:I,BackdropProps:L,children:j,className:M,disableEscapeKeyDown:D=!1,fullScreen:F=!1,fullWidth:N=!1,maxWidth:G="sm",onClick:B,onClose:H,open:O,PaperComponent:V=Paper,PaperProps:U={},scroll:W="paper",slots:K={},slotProps:Y={},TransitionComponent:ee=Fade,transitionDuration:oe=C,TransitionProps:se,...Q}=S,ie={...S,disableEscapeKeyDown:D,fullScreen:F,fullWidth:N,maxWidth:G,scroll:W}
198,ae=useUtilityClasses$A(ie),re=reactExports.useRef(),J=Me=>{re.current=Me.target===Me.currentTarget},te=Me=>{B&&B(Me),re.current&&(re.current=null,H&&H(Me,"backdropClick"))},Z=useId(P),X=reactExports.useMemo(()=>({titleId:Z}),[Z]),de={transition:ee,...K},he={transition:se,paper:U,backdrop:L,...Y},ne={slots:de,slotProps:he},[ue,ce]=useSlot("root",{elementType:DialogRoot,shouldForwardComponentProp:!0,externalForwardedProps:ne,ownerState:ie,className:clsx(ae.root,M),ref:T}),[fe,ve]=useSlot("backdrop",{elementType:DialogBackdrop,shouldForwardComponentProp:!0,externalForwardedProps:ne,ownerState:ie}),[Te,Se]=useSlot("paper",{elementType:DialogPaper,shouldForwardComponentProp:!0,externalForwardedProps:ne,ownerState:ie,className:clsx(ae.paper,U.className)}),[ke,we]=useSlot("container",{elementType:DialogContainer,externalForwardedProps:ne,ownerState:ie,className:ae.container}),[Le,pe]=useSlot("transition",{elementType:Fade,externalForwardedProps:ne,ownerState:ie,additionalProps:{appear:!0,in:O,timeout:oe,role:"presentation"}});return jsxRuntimeExports.jsx(ue,{closeAfterTransition:!0,slots:{backdrop:fe},slotProps:{backdrop:{transitionDuration:oe,as:I,...ve}},disableEscapeKeyDown:D,onClose:H,open:O,onClick:te,...ce,...Q,children:jsxRuntimeExports.jsx(Le,{...pe,children:jsxRuntimeExports.jsx(ke,{onMouseDown:J,...we,children:jsxRuntimeExports.jsx(Te,{as:V,elevation:24,role:"dialog","aria-describedby":_,"aria-labelledby":Z,"aria-modal":R,...Se,children:jsxRuntimeExports.jsx(DialogContext.Provider,{value:X,children:j})})})})})});function getDialogActionsUtilityClass(o){return generateUtilityClass("MuiDialogActions",o)}generateUtilityClasses("MuiDialogActions",["root","spacing"]);const useUtilityClasses$z=o=>{const{classes:u,disableSpacing:T}=o;return composeClasses({root:["root",!T&&"spacing"]},getDialogActionsUtilityClass,u)},DialogActionsRoot=styled("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,!T.disableSpacing&&u.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState:o})=>!o.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),DialogActions=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiDialogActions"}),{className:E,disableSpacing:C=!1,..._}=S,P={...S,disableSpacing:C},R=useUtilityClasses$z(P);return jsxRuntimeExports.jsx(DialogActionsRoot,{className:clsx(R.root,E),ownerState:P,ref:T,..._})});function getDialogContentUtilityClass(o){return generateUtilityClass("MuiDialogContent",o)}generateUtilityClasses("MuiDialogContent",["root","dividers"]);function getDialogTitleUtilityClass(o){return generateUtilityClass("MuiDialogTitle",o)}const dialogTitleClasses=generateUtilityClasses("MuiDialogTitle",["root"]),useUtilityClasses$y=o=>{const{classes:u,dividers:T}=o;return composeClasses({root:["root",T&&"dividers"]},getDialogContentUtilityClass,u)},DialogContentRoot=styled("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.dividers&&u.dividers]}})(memoTheme(({theme:o})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState:u})=>u.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(o.vars||o).palette.divider}`,borderBottom:`1px solid ${(o.vars||o).palette.divider}`}},{props:({ownerState:u})=>!u.dividers,style:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}}}]}))),DialogContent=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiDialogContent"}),{className:E,dividers:C=!1,..._}=S,P={...S,dividers:C},R=useUtilityClasses$y(P);return jsxRuntimeExports.jsx(DialogContentRoot,{className:clsx(R.root,E),ownerState:P,ref:T,..._})}),useUtilityClasses$x=o=>{const{classes:u}=o;return composeClasses({root:["root"]},getDialogTitleUtilityClass,u)},DialogTitleRoot=styled(Typography,{name:"MuiDialogTitle",slot:"Root"})({padding:"16px 24px",flex:"0 0 auto"}),DialogTitle=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiDialogTitle"}),{className:E,id:C,..._}=S,P=S,R=useUtilityClasses$x(P),{titleId:I=C}=reactExports.useContext(DialogContext);return jsxRuntimeExports.jsx(DialogTitleRoot,{component:"h2",className:clsx(R.root,E),ownerState:P,ref:T,variant:"h6",id:C??I,..._})});function getDividerUtilityClass(o){return generateUtilityClass("MuiDivider",o)}const dividerClasses=generateUtilityClasses("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);function getTranslateValue(o,u,T){const S=u.getBoundingClientRect(),E=T&&T.getBoundingClientRect(),C=ownerWindow(u);let _;if(u.fakeTransform)_=u.fakeTransform;else{const I=C.getComputedStyle(u);_=I.getPropertyValue("-webkit-transform")||I.getPropertyValue("transform")}let P=0,R=0;if(_&&_!=="none"&&typeof _=="string"){const I=_.split("(")[1].split(")")[0].split(",");P=parseInt(I[4],10),R=parseInt(I[5],10)}return o==="left"?E?`translateX(${E.right+P-S.left}px)`:`translateX(${C.innerWidth+P-S.left}px)`:o==="right"?E?`translateX(-${S.right-E.left-P}px)`:`translateX(-${S.left+S.width-P}px)`:o==="up"?E?`translateY(${E.bottom+R-S.top}px)`:`translateY(${C.innerHeight+R-S.top}px)`:E?`translateY(-${S.top-E.top+S.height-R}px)`:`translateY(-${S.top+S.height-R}px)`}
198function resolveContainer(o){return typeof o=="function"?o():o}function setTranslateValue(o,u,T){const S=resolveContainer(T),E=getTranslateValue(o,u,S);E&&(u.style.webkitTransform=E,u.style.transform=E)}const Slide=reactExports.forwardRef(function(u,T){const S=useTheme(),E={enter:S.transitions.easing.easeOut,exit:S.transitions.easing.sharp},C={enter:S.transitions.duration.enteringScreen,exit:S.transitions.duration.leavingScreen},{addEndListener:_,appear:P=!0,children:R,container:I,direction:L="down",easing:j=E,in:M,onEnter:D,onEntered:F,onEntering:N,onExit:G,onExited:B,onExiting:H,style:O,timeout:V=C,TransitionComponent:U=Transition,...W}=u,K=reactExports.useRef(null),Y=useForkRef(getReactElementRef(R),K,T),ee=Z=>X=>{Z&&(X===void 0?Z(K.current):Z(K.current,X))},oe=ee((Z,X)=>{setTranslateValue(L,Z,I),reflow(Z),D&&D(Z,X)}),se=ee((Z,X)=>{const de=getTransitionProps({timeout:V,style:O,easing:j},{mode:"enter"});Z.style.webkitTransition=S.transitions.create("-webkit-transform",{...de}),Z.style.transition=S.transitions.create("transform",{...de}),Z.style.webkitTransform="none",Z.style.transform="none",N&&N(Z,X)}),Q=ee(F),ie=ee(H),ae=ee(Z=>{const X=getTransitionProps({timeout:V,style:O,easing:j},{mode:"exit"});Z.style.webkitTransition=S.transitions.create("-webkit-transform",X),Z.style.transition=S.transitions.create("transform",X),setTranslateValue(L,Z,I),G&&G(Z)}),re=ee(Z=>{Z.style.webkitTransition="",Z.style.transition="",B&&B(Z)}),J=Z=>{_&&_(K.current,Z)},te=reactExports.useCallback(()=>{K.current&&setTranslateValue(L,K.current,I)},[L,I]);return reactExports.useEffect(()=>{if(M||L==="down"||L==="right")return;const Z=debounce(()=>{K.current&&setTranslateValue(L,K.current,I)}),X=ownerWindow(K.current);return X.addEventListener("resize",Z),()=>{Z.clear(),X.removeEventListener("resize",Z)}},[L,M,I]),reactExports.useEffect(()=>{M||te()},[M,te]),jsxRuntimeExports.jsx(U,{nodeRef:K,onEnter:oe,onEntered:Q,onEntering:se,onExit:ae,onExited:re,onExiting:ie,addEndListener:J,appear:P,in:M,timeout:V,...W,children:(Z,{ownerState:X,...de})=>reactExports.cloneElement(R,{ref:Y,style:{visibility:Z==="exited"&&!M?"hidden":void 0,...O,...R.props.style},...de})})});function getDrawerUtilityClass(o){return generateUtilityClass("MuiDrawer",o)}generateUtilityClasses("MuiDrawer",["root","docked","paper","anchorLeft","anchorRight","anchorTop","anchorBottom","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedRight","paperAnchorDockedTop","paperAnchorDockedBottom","modal"]);const overridesResolver$3=(o,u)=>{const{ownerState:T}=o;return[u.root,(T.variant==="permanent"||T.variant==="persistent")&&u.docked,u.modal]},useUtilityClasses$w=o=>{const{classes:u,anchor:T,variant:S}=o,E={root:["root",`anchor${capitalize(T)}`],docked:[(S==="permanent"||S==="persistent")&&"docked"],modal:["modal"],paper:["paper",`paperAnchor${capitalize(T)}`,S!=="temporary"&&`paperAnchorDocked${capitalize(T)}`]};return composeClasses(E,getDrawerUtilityClass,u)},DrawerRoot=styled(Modal,{name:"MuiDrawer",slot:"Root",overridesResolver:overridesResolver$3})(memoTheme(({theme:o})=>({zIndex:(o.vars||o).zIndex.drawer}))),DrawerDockedRoot=styled("div",{shouldForwardProp:rootShouldForwardProp,name:"MuiDrawer",slot:"Docked",skipVariantsResolver:!1,overridesResolver:overridesResolver$3})({flex:"0 0 auto"}),DrawerPaper=styled(Paper,{name:"MuiDrawer",slot:"Paper",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.paper,u[`paperAnchor${capitalize(T.anchor)}`],T.variant!=="temporary"&&u[`paperAnchorDocked${capitalize(T.anchor)}`]]}})(memoTheme(({theme:o})=>({overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:(o.vars||o).zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0,variants:[{props:{anchor:"left"},style:{left:0}},{props:{anchor:"top"},style:{top:0,left:0,right:0,height:"auto",maxHeight:"100%"}},{props:{anchor:"right"},style:{right:0}},{props:{anchor:"bottom"},style:{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"}},{props:({ownerState:u})=>u.anchor==="left"&&u.variant!=="temporary",style:{borderRight:`1px solid ${(o.vars||o).palette.divider}`}},{props:({ownerState:u})=>u.anchor==="top"&&u.variant!=="temporary",style:{borderBottom:`1px solid ${(o.vars||o).palette.divider}`}},{props:({ownerState:u})=>u.anchor==="right"&&u.variant!=="temporary",style:{borderLeft:`1px solid ${(o.vars||o).palette.divider}`}},{props:({ownerState:u})=>u.anchor==="bottom"&&u.variant!=="temporary",style:{borderTop:`1px solid ${(o.vars||o).palette.divider}`}}]}
198))),oppositeDirection={left:"right",right:"left",top:"down",bottom:"up"};function isHorizontal(o){return["left","right"].includes(o)}function getAnchor({direction:o},u){return o==="rtl"&&isHorizontal(u)?oppositeDirection[u]:u}const Drawer=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiDrawer"}),E=useTheme(),C=useRtl(),_={enter:E.transitions.duration.enteringScreen,exit:E.transitions.duration.leavingScreen},{anchor:P="left",BackdropProps:R,children:I,className:L,elevation:j=16,hideBackdrop:M=!1,ModalProps:{BackdropProps:D,...F}={},onClose:N,open:G=!1,PaperProps:B={},SlideProps:H,TransitionComponent:O,transitionDuration:V=_,variant:U="temporary",slots:W={},slotProps:K={},...Y}=S,ee=reactExports.useRef(!1);reactExports.useEffect(()=>{ee.current=!0},[]);const oe=getAnchor({direction:C?"rtl":"ltr"},P),Q={...S,anchor:P,elevation:j,open:G,variant:U,...Y},ie=useUtilityClasses$w(Q),ae={slots:{transition:O,...W},slotProps:{paper:B,transition:H,...K,backdrop:mergeSlotProps$1(K.backdrop||{...R,...D},{transitionDuration:V})}},[re,J]=useSlot("root",{ref:T,elementType:DrawerRoot,className:clsx(ie.root,ie.modal,L),shouldForwardComponentProp:!0,ownerState:Q,externalForwardedProps:{...ae,...Y,...F},additionalProps:{open:G,onClose:N,hideBackdrop:M,slots:{backdrop:ae.slots.backdrop},slotProps:{backdrop:ae.slotProps.backdrop}}}),[te,Z]=useSlot("paper",{elementType:DrawerPaper,shouldForwardComponentProp:!0,className:clsx(ie.paper,B.className),ownerState:Q,externalForwardedProps:ae,additionalProps:{elevation:U==="temporary"?j:0,square:!0,...U==="temporary"&&{role:"dialog","aria-modal":"true"}}}),[X,de]=useSlot("docked",{elementType:DrawerDockedRoot,ref:T,className:clsx(ie.root,ie.docked,L),ownerState:Q,externalForwardedProps:ae,additionalProps:Y}),[he,ne]=useSlot("transition",{elementType:Slide,ownerState:Q,externalForwardedProps:ae,additionalProps:{in:G,direction:oppositeDirection[oe],timeout:V,appear:ee.current}}),ue=jsxRuntimeExports.jsx(te,{...Z,children:I});if(U==="permanent")return jsxRuntimeExports.jsx(X,{...de,children:ue});const ce=jsxRuntimeExports.jsx(he,{...ne,children:ue});return U==="persistent"?jsxRuntimeExports.jsx(X,{...de,children:ce}):jsxRuntimeExports.jsx(re,{...J,children:ce})});function getFabUtilityClass(o){return generateUtilityClass("MuiFab",o)}const fabClasses=generateUtilityClasses("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"]),useUtilityClasses$v=o=>{const{color:u,variant:T,classes:S,size:E}=o,C={root:["root",T,`size${capitalize(E)}`,u==="inherit"?"colorInherit":u]},_=composeClasses(C,getFabUtilityClass,S);return{...S,..._}},FabRoot=styled(ButtonBase,{name:"MuiFab",slot:"Root",shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.variant],u[`size${capitalize(T.size)}`],T.color==="inherit"&&u.colorInherit,u[capitalize(T.size)],u[T.color]]}})(memoTheme(({theme:o})=>{var u,T;return{...o.typography.button,minHeight:36,transition:o.transitions.create(["background-color","box-shadow","border-color"],{duration:o.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(o.vars||o).zIndex.fab,boxShadow:(o.vars||o).shadows[6],"&:active":{boxShadow:(o.vars||o).shadows[12]},color:o.vars?o.vars.palette.grey[900]:(T=(u=o.palette).getContrastText)==null?void 0:T.call(u,o.palette.grey[300]),backgroundColor:(o.vars||o).palette.grey[300],"&:hover":{backgroundColor:(o.vars||o).palette.grey.A100,"@media (hover: none)":{backgroundColor:(o.vars||o).palette.grey[300]},textDecoration:"none"},[`&.${fabClasses.focusVisible}`]:{boxShadow:(o.vars||o).shadows[6]},variants:[{props:{size:"small"},style:{width:40,height:40}},{props:{size:"medium"},style:{width:48,height:48}},{props:{variant:"extended"},style:{borderRadius:48/2,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}},{props:{variant:"extended",size:"small"},style:{width:"auto",padding:"0 8px",borderRadius:34/2,minWidth:34,he
198ight:34}},{props:{variant:"extended",size:"medium"},style:{width:"auto",padding:"0 16px",borderRadius:40/2,minWidth:40,height:40}},{props:{color:"inherit"},style:{color:"inherit"}}]}}),memoTheme(({theme:o})=>({variants:[...Object.entries(o.palette).filter(createSimplePaletteValueFilter(["dark","contrastText"])).map(([u])=>({props:{color:u},style:{color:(o.vars||o).palette[u].contrastText,backgroundColor:(o.vars||o).palette[u].main,"&:hover":{backgroundColor:(o.vars||o).palette[u].dark,"@media (hover: none)":{backgroundColor:(o.vars||o).palette[u].main}}}}))]})),memoTheme(({theme:o})=>({[`&.${fabClasses.disabled}`]:{color:(o.vars||o).palette.action.disabled,boxShadow:(o.vars||o).shadows[0],backgroundColor:(o.vars||o).palette.action.disabledBackground}}))),Fab=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiFab"}),{children:E,className:C,color:_="default",component:P="button",disabled:R=!1,disableFocusRipple:I=!1,focusVisibleClassName:L,size:j="large",variant:M="circular",...D}=S,F={...S,color:_,component:P,disabled:R,disableFocusRipple:I,size:j,variant:M},N=useUtilityClasses$v(F);return jsxRuntimeExports.jsx(FabRoot,{className:clsx(N.root,C),component:P,disabled:R,focusRipple:!I,focusVisibleClassName:clsx(N.focusVisible,L),ownerState:F,ref:T,...D,classes:N,children:E})}),useUtilityClasses$u=o=>{const{classes:u,disableUnderline:T,startAdornment:S,endAdornment:E,size:C,hiddenLabel:_,multiline:P}=o,R={root:["root",!T&&"underline",S&&"adornedStart",E&&"adornedEnd",C==="small"&&`size${capitalize(C)}`,_&&"hiddenLabel",P&&"multiline"],input:["input"]},I=composeClasses(R,getFilledInputUtilityClass,u);return{...u,...I}},FilledInputRoot=styled(InputBaseRoot,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiFilledInput",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[...rootOverridesResolver(o,u),!T.disableUnderline&&u.underline]}})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light",T=u?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",S=u?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",E=u?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",C=u?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return{position:"relative",backgroundColor:o.vars?o.vars.palette.FilledInput.bg:S,borderTopLeftRadius:(o.vars||o).shape.borderRadius,borderTopRightRadius:(o.vars||o).shape.borderRadius,transition:o.transitions.create("background-color",{duration:o.transitions.duration.shorter,easing:o.transitions.easing.easeOut}),"&:hover":{backgroundColor:o.vars?o.vars.palette.FilledInput.hoverBg:E,"@media (hover: none)":{backgroundColor:o.vars?o.vars.palette.FilledInput.bg:S}},[`&.${filledInputClasses.focused}`]:{backgroundColor:o.vars?o.vars.palette.FilledInput.bg:S},[`&.${filledInputClasses.disabled}`]:{backgroundColor:o.vars?o.vars.palette.FilledInput.disabledBg:C},variants:[{props:({ownerState:_})=>!_.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:o.transitions.create("transform",{duration:o.transitions.duration.shorter,easing:o.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${filledInputClasses.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${filledInputClasses.error}`]:{"&::before, &::after":{borderBottomColor:(o.vars||o).palette.error.main}},"&::before":{borderBottom:`1px solid ${o.vars?o.alpha(o.vars.palette.common.onBackground,o.vars.opacity.inputUnderline):T}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:o.transitions.create("border-bottom-color",{duration:o.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]:{borderBottom:`1px solid ${(o.vars||o).palette.text.primary}`},[`&.${filledInputClasses.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([_])=>{var P;return{props:{disableUnderline:!1,color:_},style:{"&::after":{borderBottom:`2px solid ${(P=(o.vars||o).palette[_])==null?void 0:P.main}`}}}}),{props:({ownerState:_})=>_.startAdornment,style:{paddingLeft:12}},{props:({ownerState:_})=>_.endAdornment,style:{paddingRight:12}},{props:({ownerState:_})=>_.multiline,style:{padding:"25px 12px 8px"}},{props:({ownerState:_,size:P})=>_.multiline&&P==="small",style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:_})=>_.multiline&&_.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:_})=>_.multiline&&_.hiddenLabel&&_.size==="small",style:{paddingTop:8,paddingBottom:9}}]}})),FilledInputInput=styled(InputBaseInput,{name:"MuiFilledInput",slot:"Input",overridesResolver:inputOverridesResolver})(memoTheme(({theme:o})=>({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12,...!o.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:o.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:o.palette.mode==="light"?null:"#fff",caretColor:o.palette.mode==="light"?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},...o.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[o.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},variants:[{props:{size:"small"},style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:u})=>u.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:u})=>u.startAdornment,style:{paddingLeft:0}},{props:({ownerState:u})=>u.endAdornment,style:{paddingRight:0}},{props:({ownerState:u})=>u.hiddenLabel&&u.size==="small",style:{paddingTop:8,paddingBottom:9}},{props:({ownerState:u})=>u.multiline,style:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0}}]}))),FilledInput=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiFilledInput"}),{disableUnderline:E=!1,components:C={},componentsProps:_,fullWidth:P=!1,hiddenLabel:R,inputComponent:I="input",multiline:L=!1,slotProps:j,slots:M={},type:D="text",...F}=S,N={...S,disableUnderline:E,fullWidth:P,inputComponent:I,multiline:L,type:D},G=useUtilityClasses$u(S),B={root:{ownerState:N}
198,input:{ownerState:N}},H=j??_?deepmerge(B,j??_):B,O=M.root??C.Root??FilledInputRoot,V=M.input??C.Input??FilledInputInput;return jsxRuntimeExports.jsx(InputBase,{slots:{root:O,input:V},slotProps:H,fullWidth:P,inputComponent:I,multiline:L,ref:T,type:D,...F,classes:G})});FilledInput.muiName="Input";function getFormControlUtilityClasses(o){return generateUtilityClass("MuiFormControl",o)}generateUtilityClasses("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const useUtilityClasses$t=o=>{const{classes:u,margin:T,fullWidth:S}=o,E={root:["root",T!=="none"&&`margin${capitalize(T)}`,S&&"fullWidth"]};return composeClasses(E,getFormControlUtilityClasses,u)},FormControlRoot=styled("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[`margin${capitalize(T.margin)}`],T.fullWidth&&u.fullWidth]}})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),FormControl=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiFormControl"}),{children:E,className:C,color:_="primary",component:P="div",disabled:R=!1,error:I=!1,focused:L,fullWidth:j=!1,hiddenLabel:M=!1,margin:D="none",required:F=!1,size:N="medium",variant:G="outlined",...B}=S,H={...S,color:_,component:P,disabled:R,error:I,fullWidth:j,hiddenLabel:M,margin:D,required:F,size:N,variant:G},O=useUtilityClasses$t(H),[V,U]=reactExports.useState(()=>{let re=!1;return E&&reactExports.Children.forEach(E,J=>{if(!isMuiElement(J,["Input","Select"]))return;const te=isMuiElement(J,["Select"])?J.props.input:J;te&&isAdornedStart(te.props)&&(re=!0)}),re}),[W,K]=reactExports.useState(()=>{let re=!1;return E&&reactExports.Children.forEach(E,J=>{isMuiElement(J,["Input","Select"])&&(isFilled(J.props,!0)||isFilled(J.props.inputProps,!0))&&(re=!0)}),re}),[Y,ee]=reactExports.useState(!1);R&&Y&&ee(!1);const oe=L!==void 0&&!R?L:Y;let se;reactExports.useRef(!1);const Q=reactExports.useCallback(()=>{K(!0)},[]),ie=reactExports.useCallback(()=>{K(!1)},[]),ae=reactExports.useMemo(()=>({adornedStart:V,setAdornedStart:U,color:_,disabled:R,error:I,filled:W,focused:oe,fullWidth:j,hiddenLabel:M,size:N,onBlur:()=>{ee(!1)},onFocus:()=>{ee(!0)},onEmpty:ie,onFilled:Q,registerEffect:se,required:F,variant:G}),[V,_,R,I,W,oe,j,M,se,ie,Q,F,N,G]);return jsxRuntimeExports.jsx(FormControlContext.Provider,{value:ae,children:jsxRuntimeExports.jsx(FormControlRoot,{as:P,ownerState:H,className:clsx(O.root,C),ref:T,...B,children:E})})});function getFormHelperTextUtilityClasses(o){return generateUtilityClass("MuiFormHelperText",o)}const formHelperTextClasses=generateUtilityClasses("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var _span$2;const useUtilityClasses$s=o=>{const{classes:u,contained:T,size:S,disabled:E,error:C,filled:_,focused:P,required:R}=o,I={root:["root",E&&"disabled",C&&"error",S&&`size${capitalize(S)}`,T&&"contained",P&&"focused",_&&"filled",R&&"required"]};return composeClasses(I,getFormHelperTextUtilityClasses,u)},FormHelperTextRoot=styled("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.size&&u[`size${capitalize(T.size)}`],T.contained&&u.contained,T.filled&&u.filled]}})(memoTheme(({theme:o})=>({color:(o.vars||o).palette.text.secondary,...o.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${formHelperTextClasses.disabled}`]:{color:(o.vars||o).palette.text.disabled},[`&.${formHelperTextClasses.error}`]:{color:(o.vars||o).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:u})=>u.contained,style:{marginLeft:14,marginRight:14}}]}))),FormHelperText=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiFormHelperText"}),{children:E,className:C,component:_="p",disabled:P,error:R,filled:I,focused:L,margin:j,required:M,variant:D,...F}
198=S,N=useFormControl(),G=formControlState({props:S,muiFormControl:N,states:["variant","size","disabled","error","filled","focused","required"]}),B={...S,component:_,contained:G.variant==="filled"||G.variant==="outlined",variant:G.variant,size:G.size,disabled:G.disabled,error:G.error,filled:G.filled,focused:G.focused,required:G.required};delete B.ownerState;const H=useUtilityClasses$s(B);return jsxRuntimeExports.jsx(FormHelperTextRoot,{as:_,className:clsx(H.root,C),ref:T,...F,ownerState:B,children:E===" "?_span$2||(_span$2=jsxRuntimeExports.jsx("span",{className:"notranslate","aria-hidden":!0,children:"â"})):E})});function getFormLabelUtilityClasses(o){return generateUtilityClass("MuiFormLabel",o)}const formLabelClasses=generateUtilityClasses("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),useUtilityClasses$r=o=>{const{classes:u,color:T,focused:S,disabled:E,error:C,filled:_,required:P}=o,R={root:["root",`color${capitalize(T)}`,E&&"disabled",C&&"error",_&&"filled",S&&"focused",P&&"required"],asterisk:["asterisk",C&&"error"]};return composeClasses(R,getFormLabelUtilityClasses,u)},FormLabelRoot=styled("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.color==="secondary"&&u.colorSecondary,T.filled&&u.filled]}})(memoTheme(({theme:o})=>({color:(o.vars||o).palette.text.secondary,...o.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([u])=>({props:{color:u},style:{[`&.${formLabelClasses.focused}`]:{color:(o.vars||o).palette[u].main}}})),{props:{},style:{[`&.${formLabelClasses.disabled}`]:{color:(o.vars||o).palette.text.disabled},[`&.${formLabelClasses.error}`]:{color:(o.vars||o).palette.error.main}}}]}))),AsteriskComponent=styled("span",{name:"MuiFormLabel",slot:"Asterisk"})(memoTheme(({theme:o})=>({[`&.${formLabelClasses.error}`]:{color:(o.vars||o).palette.error.main}}))),FormLabel=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiFormLabel"}),{children:E,className:C,color:_,component:P="label",disabled:R,error:I,filled:L,focused:j,required:M,...D}=S,F=useFormControl(),N=formControlState({props:S,muiFormControl:F,states:["color","required","focused","disabled","error","filled"]}),G={...S,color:N.color||"primary",component:P,disabled:N.disabled,error:N.error,filled:N.filled,focused:N.focused,required:N.required},B=useUtilityClasses$r(G);return jsxRuntimeExports.jsxs(FormLabelRoot,{as:P,ownerState:G,className:clsx(B.root,C),ref:T,...D,children:[E,N.required&&jsxRuntimeExports.jsxs(AsteriskComponent,{ownerState:G,"aria-hidden":!0,className:B.asterisk,children:["â","*"]})]})});function getScale(o){return`scale(${o}, ${o**2})`}const styles$1={entering:{opacity:1,transform:getScale(1)},entered:{opacity:1,transform:"none"}},isWebKit154=typeof navigator<"u"&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Grow=reactExports.forwardRef(function(u,T){const{addEndListener:S,appear:E=!0,children:C,easing:_,in:P,onEnter:R,onEntered:I,onEntering:L,onExit:j,onExited:M,onExiting:D,style:F,timeout:N="auto",TransitionComponent:G=Transition,...B}=u,H=useTimeout(),O=reactExports.useRef(),V=useTheme(),U=reactExports.useRef(null),W=useForkRef(U,getReactElementRef(C),T),K=re=>J=>{if(re){const te=U.current;J===void 0?re(te):re(te,J)}},Y=K(L),ee=K((re,J)=>{reflow(re);const{duration:te,delay:Z,easing:X}=getTransitionProps({style:F,timeout:N,easing:_},{mode:"enter"});let de;N==="auto"?(de=V.transitions.getAutoHeightDuration(re.clientHeight),O.current=de):de=te,re.style.transition=[V.transitions.create("opacity",{duration:de,delay:Z}),V.transitions.create("transform",{duration:isWebKit154?de:de*.666,delay:Z,easing:X})].join(","),R&&R(re,J)}),oe=K(I),se=K(D),Q=K(re=>{const{duration:J,delay:te,easing:Z}=getTransitionProps({style:F,timeout:N,easing:_},{mode:"exit"});let X;N==="auto"?(X=V.transitions.getAutoHeightDuration(re.clientHeight),O.current=X):X=J,re.style.transition=[V.transitions.create("opacity",{duration:X,delay:te}),V.transitions.create("transform",{duration:isWebKit154?X:X*.666,delay:isWebKit154?te:te||X*.333,easing:Z}
198)].join(","),re.style.opacity=0,re.style.transform=getScale(.75),j&&j(re)}),ie=K(M),ae=re=>{N==="auto"&&H.start(O.current||0,re),S&&S(U.current,re)};return jsxRuntimeExports.jsx(G,{appear:E,in:P,nodeRef:U,onEnter:ee,onEntered:oe,onEntering:Y,onExit:Q,onExited:ie,onExiting:se,addEndListener:ae,timeout:N==="auto"?null:N,...B,children:(re,{ownerState:J,...te})=>reactExports.cloneElement(C,{style:{opacity:0,transform:getScale(.75),visibility:re==="exited"&&!P?"hidden":void 0,...styles$1[re],...F,...C.props.style},ref:W,...te})})});Grow&&(Grow.muiSupportAuto=!0);const useUtilityClasses$q=o=>{const{classes:u,disableUnderline:T}=o,E=composeClasses({root:["root",!T&&"underline"],input:["input"]},getInputUtilityClass,u);return{...u,...E}},InputRoot=styled(InputBaseRoot,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiInput",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[...rootOverridesResolver(o,u),!T.disableUnderline&&u.underline]}})(memoTheme(({theme:o})=>{let T=o.palette.mode==="light"?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return o.vars&&(T=o.alpha(o.vars.palette.common.onBackground,o.vars.opacity.inputUnderline)),{position:"relative",variants:[{props:({ownerState:S})=>S.formControl,style:{"label + &":{marginTop:16}}},{props:({ownerState:S})=>!S.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:o.transitions.create("transform",{duration:o.transitions.duration.shorter,easing:o.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${inputClasses.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${inputClasses.error}`]:{"&::before, &::after":{borderBottomColor:(o.vars||o).palette.error.main}},"&::before":{borderBottom:`1px solid ${T}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:o.transitions.create("border-bottom-color",{duration:o.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]:{borderBottom:`2px solid ${(o.vars||o).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${T}`}},[`&.${inputClasses.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([S])=>({props:{color:S,disableUnderline:!1},style:{"&::after":{borderBottom:`2px solid ${(o.vars||o).palette[S].main}`}}}))]}})),InputInput=styled(InputBaseInput,{name:"MuiInput",slot:"Input",overridesResolver:inputOverridesResolver})({}),Input=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiInput"}),{disableUnderline:E=!1,components:C={},componentsProps:_,fullWidth:P=!1,inputComponent:R="input",multiline:I=!1,slotProps:L,slots:j={},type:M="text",...D}=S,F=useUtilityClasses$q(S),G={root:{ownerState:{disableUnderline:E}}},B=L??_?deepmerge(L??_,G):G,H=j.root??C.Root??InputRoot,O=j.input??C.Input??InputInput;return jsxRuntimeExports.jsx(InputBase,{slots:{root:H,input:O},slotProps:B,fullWidth:P,inputComponent:R,multiline:I,ref:T,type:M,...D,classes:F})});Input.muiName="Input";function getInputLabelUtilityClasses(o){return generateUtilityClass("MuiInputLabel",o)}generateUtilityClasses("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const useUtilityClasses$p=o=>{const{classes:u,formControl:T,size:S,shrink:E,disableAnimation:C,variant:_,required:P}=o,R={root:["root",T&&"formControl",!C&&"animated",E&&"shrink",S&&S!=="medium"&&`size${capitalize(S)}`,_],asterisk:[P&&"asterisk"]},I=composeClasses(R,getInputLabelUtilityClasses,u);return{...u,...I}},InputLabelRoot=styled(FormLabel,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiInputLabel",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[{[`& .${formLabelClasses.asterisk}`]:u.asterisk},u.root,T.formControl&&u.formControl,T.size==="small"&&u.sizeSmall,T.shrink&&u.shrink,!T.disableAnimation&&u.animated,T.focused&&u.focused,u[T.variant]]}})(memoTheme(({theme:o})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:u})=>u.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:u})=>u.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:u})=>!u.disableAnimation,style:{transition:o.transitions.create(["color","transform","max-width"],{duration:o.transitions.duration.shorter,easing:o.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:u,ownerState:T})=>u==="filled"&&T.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7
198px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:u,ownerState:T,size:S})=>u==="filled"&&T.shrink&&S==="small",style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:u,ownerState:T})=>u==="outlined"&&T.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]}))),InputLabel=reactExports.forwardRef(function(u,T){const S=useDefaultProps({name:"MuiInputLabel",props:u}),{disableAnimation:E=!1,margin:C,shrink:_,variant:P,className:R,...I}=S,L=useFormControl();let j=_;typeof j>"u"&&L&&(j=L.filled||L.focused||L.adornedStart);const M=formControlState({props:S,muiFormControl:L,states:["size","variant","required","focused"]}),D={...S,disableAnimation:E,formControl:L,shrink:j,size:M.size,variant:M.variant,required:M.required,focused:M.focused},F=useUtilityClasses$p(D);return jsxRuntimeExports.jsx(InputLabelRoot,{"data-shrink":j,ref:T,className:clsx(F.root,R),...I,ownerState:D,classes:F})});function getLinkUtilityClass(o){return generateUtilityClass("MuiLink",o)}const linkClasses=generateUtilityClasses("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),getTextDecoration=({theme:o,ownerState:u})=>{const T=u.color;if("colorSpace"in o&&o.colorSpace){const C=getPath$1(o,`palette.${T}.main`)||getPath$1(o,`palette.${T}`)||u.color;return o.alpha(C,.4)}const S=getPath$1(o,`palette.${T}.main`,!1)||getPath$1(o,`palette.${T}`,!1)||u.color,E=getPath$1(o,`palette.${T}.mainChannel`)||getPath$1(o,`palette.${T}Channel`);return"vars"in o&&E?`rgba(${E} / 0.4)`:alpha$1(S,.4)},v6Colors={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},useUtilityClasses$o=o=>{const{classes:u,component:T,focusVisible:S,underline:E}=o,C={root:["root",`underline${capitalize(E)}`,T==="button"&&"button",S&&"focusVisible"]};return composeClasses(C,getLinkUtilityClass,u)},LinkRoot=styled(Typography,{name:"MuiLink",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[`underline${capitalize(T.underline)}`],T.component==="button"&&u.button]}})(memoTheme(({theme:o})=>({variants:[{props:{underline:"none"},style:{textDecoration:"none"}},{props:{underline:"hover"},style:{textDecoration:"none","&:hover":{textDecoration:"underline"}}},{props:{underline:"always"},style:{textDecoration:"underline","&:hover":{textDecorationColor:"inherit"}}},{props:({underline:u,ownerState:T})=>u==="always"&&T.color!=="inherit",style:{textDecorationColor:"var(--Link-underlineColor)"}},{props:({underline:u,ownerState:T})=>u==="always"&&T.color==="inherit",style:o.colorSpace?{textDecorationColor:o.alpha("currentColor",.4)}:null},...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([u])=>({props:{underline:"always",color:u},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette[u].main,.4)}})),{props:{underline:"always",color:"textPrimary"},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette.text.primary,.4)}},{props:{underline:"always",color:"textSecondary"},style:{"--Link-underlineColor":o.alpha((o.vars||o).palette.text.secondary,.4)}},{props:{underline:"always",color:"textDisabled"},style:{"--Link-underlineColor":(o.vars||o).palette.text.disabled}},{props:{component:"button"},style:{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},[`&.${linkClasses.focusVisible}`]:{outline:"auto"}}}]}))),Link=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiLink"}),E=useTheme(),{className:C,color:_="primary",component:P="a",onBlur:R,onFocus:I,TypographyClasses:L,underline:j="always",variant:M="inherit",sx:D,...F}=S,[N,G]=reactExports.useState(!1),B=U=>
198{isFocusVisible(U.target)||G(!1),R&&R(U)},H=U=>{isFocusVisible(U.target)&&G(!0),I&&I(U)},O={...S,color:_,component:P,focusVisible:N,underline:j,variant:M},V=useUtilityClasses$o(O);return jsxRuntimeExports.jsx(LinkRoot,{color:_,className:clsx(V.root,C),classes:L,component:P,onBlur:B,onFocus:H,ref:T,ownerState:O,variant:M,...F,sx:[...v6Colors[_]===void 0?[{color:_}]:[],...Array.isArray(D)?D:[D]],style:{...F.style,...j==="always"&&_!=="inherit"&&!v6Colors[_]&&{"--Link-underlineColor":getTextDecoration({theme:E,ownerState:O})}}})}),ListContext=reactExports.createContext({});function getListUtilityClass(o){return generateUtilityClass("MuiList",o)}generateUtilityClasses("MuiList",["root","padding","dense","subheader"]);const useUtilityClasses$n=o=>{const{classes:u,disablePadding:T,dense:S,subheader:E}=o;return composeClasses({root:["root",!T&&"padding",S&&"dense",E&&"subheader"]},getListUtilityClass,u)},ListRoot=styled("ul",{name:"MuiList",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,!T.disablePadding&&u.padding,T.dense&&u.dense,T.subheader&&u.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:o})=>!o.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:o})=>o.subheader,style:{paddingTop:0}}]}),List=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiList"}),{children:E,className:C,component:_="ul",dense:P=!1,disablePadding:R=!1,subheader:I,...L}=S,j=reactExports.useMemo(()=>({dense:P}),[P]),M={...S,component:_,dense:P,disablePadding:R},D=useUtilityClasses$n(M);return jsxRuntimeExports.jsx(ListContext.Provider,{value:j,children:jsxRuntimeExports.jsxs(ListRoot,{as:_,className:clsx(D.root,C),ref:T,ownerState:M,...L,children:[I,E]})})});function getListItemUtilityClass(o){return generateUtilityClass("MuiListItem",o)}generateUtilityClasses("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"]);function getListItemButtonUtilityClass(o){return generateUtilityClass("MuiListItemButton",o)}const listItemButtonClasses=generateUtilityClasses("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]),overridesResolver$2=(o,u)=>{const{ownerState:T}=o;return[u.root,T.dense&&u.dense,T.alignItems==="flex-start"&&u.alignItemsFlexStart,T.divider&&u.divider,!T.disableGutters&&u.gutters]},useUtilityClasses$m=o=>{const{alignItems:u,classes:T,dense:S,disabled:E,disableGutters:C,divider:_,selected:P}=o,I=composeClasses({root:["root",S&&"dense",!C&&"gutters",_&&"divider",E&&"disabled",u==="flex-start"&&"alignItemsFlexStart",P&&"selected"]},getListItemButtonUtilityClass,T);return{...T,...I}},ListItemButtonRoot=styled(ButtonBase,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiListItemButton",slot:"Root",overridesResolver:overridesResolver$2})(memoTheme(({theme:o})=>({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:o.transitions.create("background-color",{duration:o.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(o.vars||o).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${listItemButtonClasses.selected}`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,(o.vars||o).palette.action.selectedOpacity),[`&.${listItemButtonClasses.focusVisible}`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.focusOpacity}`)}},[`&.${listItemButtonClasses.selected}:hover`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:o.alpha((o.vars||o).palette.primary.main,(o.vars||o).palette.action.selectedOpacity)}},[`&.${listItemButtonClasses.focusVisible}`]:{backgroundColor:(o.vars||o).palette.action.focus}
198,[`&.${listItemButtonClasses.disabled}`]:{opacity:(o.vars||o).palette.action.disabledOpacity},variants:[{props:({ownerState:u})=>u.divider,style:{borderBottom:`1px solid ${(o.vars||o).palette.divider}`,backgroundClip:"padding-box"}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:u})=>!u.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:u})=>u.dense,style:{paddingTop:4,paddingBottom:4}}]}))),ListItemButton=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiListItemButton"}),{alignItems:E="center",autoFocus:C=!1,component:_="div",children:P,dense:R=!1,disableGutters:I=!1,divider:L=!1,focusVisibleClassName:j,selected:M=!1,className:D,...F}=S,N=reactExports.useContext(ListContext),G=reactExports.useMemo(()=>({dense:R||N.dense||!1,alignItems:E,disableGutters:I}),[E,N.dense,R,I]),B=reactExports.useRef(null);useEnhancedEffect(()=>{C&&B.current&&B.current.focus()},[C]);const H={...S,alignItems:E,dense:G.dense,disableGutters:I,divider:L,selected:M},O=useUtilityClasses$m(H),V=useForkRef(B,T);return jsxRuntimeExports.jsx(ListContext.Provider,{value:G,children:jsxRuntimeExports.jsx(ListItemButtonRoot,{ref:V,href:F.href||F.to,component:(F.href||F.to)&&_==="div"?"button":_,focusVisibleClassName:clsx(O.focusVisible,j),ownerState:H,className:clsx(O.root,D),...F,classes:O,children:P})})});function getListItemSecondaryActionClassesUtilityClass(o){return generateUtilityClass("MuiListItemSecondaryAction",o)}generateUtilityClasses("MuiListItemSecondaryAction",["root","disableGutters"]);const useUtilityClasses$l=o=>{const{disableGutters:u,classes:T}=o;return composeClasses({root:["root",u&&"disableGutters"]},getListItemSecondaryActionClassesUtilityClass,T)},ListItemSecondaryActionRoot=styled("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.disableGutters&&u.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:o})=>o.disableGutters,style:{right:0}}]}),ListItemSecondaryAction=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiListItemSecondaryAction"}),{className:E,...C}=S,_=reactExports.useContext(ListContext),P={...S,disableGutters:_.disableGutters},R=useUtilityClasses$l(P);return jsxRuntimeExports.jsx(ListItemSecondaryActionRoot,{className:clsx(R.root,E),ownerState:P,ref:T,...C})});ListItemSecondaryAction.muiName="ListItemSecondaryAction";const overridesResolver$1=(o,u)=>{const{ownerState:T}=o;return[u.root,T.dense&&u.dense,T.alignItems==="flex-start"&&u.alignItemsFlexStart,T.divider&&u.divider,!T.disableGutters&&u.gutters,!T.disablePadding&&u.padding,T.hasSecondaryAction&&u.secondaryAction]},useUtilityClasses$k=o=>{const{alignItems:u,classes:T,dense:S,disableGutters:E,disablePadding:C,divider:_,hasSecondaryAction:P}=o;return composeClasses({root:["root",S&&"dense",!E&&"gutters",!C&&"padding",_&&"divider",u==="flex-start"&&"alignItemsFlexStart",P&&"secondaryAction"],container:["container"]},getListItemUtilityClass,T)},ListItemRoot=styled("div",{name:"MuiListItem",slot:"Root",overridesResolver:overridesResolver$1})(memoTheme(({theme:o})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:u})=>!u.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:u})=>!u.disablePadding&&u.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:u})=>!u.disablePadding&&!u.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:u})=>!u.disablePadding&&!!u.secondaryAction,style:{paddingRight:48}},{props:({ownerState:u})=>!!u.secondaryAction,style:{[`& > .${listItemButtonClasses.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:u})=>u.divider,style:{borderBottom:`1px solid ${(o.vars||o).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:u})=>u.button,style:{transition:o.transitions.create("background-color",{duration:o.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(o.vars||o).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:u})=>u.hasSecondaryAction,style:{paddingRight:48}}]}))),ListItemContainer=styled("li",{name:"MuiListItem",slot:"Container"})({position:"relative"}),ListItem=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiListItem"}),{alignItems:E="center",children:C,className:_,component:P,components:R={},componentsProps:I={},ContainerComponent:L="li",ContainerProps:{className:j,...M}={},dense:D=!1,disableGutters:F=!1,disablePadding:N=!1,divider:G=!1,secondaryAction:B,slotProps:H={},slots:O={},...V}=S,U=reactExports.useContext(ListContext),W=reactExports.useMemo(()=>({dense:D||U.dense||!1,alignItems:E,disableGutters:F}),[E,U.dense,D,F]),K=reactExports.useRef(null),Y=reactExports.Children.toArray(C),ee=Y.length&&isMuiElement(Y[Y.length-1],["ListItemSecondaryAction"]),oe={...S,alignItems:E,dense:W.dense,disableGutters:F,disablePadding:N,divider:G,hasSecondaryAction:ee},se=useUtilityClasses$k(oe),Q=useForkRef(K,T),ie=O.root||R.Root||ListItemRoot,ae
198=H.root||I.root||{},re={className:clsx(se.root,ae.className,_),...V};let J=P||"li";return ee?(J=!re.component&&!P?"div":J,L==="li"&&(J==="li"?J="div":re.component==="li"&&(re.component="div")),jsxRuntimeExports.jsx(ListContext.Provider,{value:W,children:jsxRuntimeExports.jsxs(ListItemContainer,{as:L,className:clsx(se.container,j),ref:Q,ownerState:oe,...M,children:[jsxRuntimeExports.jsx(ie,{...ae,...!isHostComponent(ie)&&{as:J,ownerState:{...oe,...ae.ownerState}},...re,children:Y}),Y.pop()]})})):jsxRuntimeExports.jsx(ListContext.Provider,{value:W,children:jsxRuntimeExports.jsxs(ie,{...ae,as:J,ref:Q,...!isHostComponent(ie)&&{ownerState:{...oe,...ae.ownerState}},...re,children:[Y,B&&jsxRuntimeExports.jsx(ListItemSecondaryAction,{children:B})]})})});function getListItemIconUtilityClass(o){return generateUtilityClass("MuiListItemIcon",o)}const listItemIconClasses=generateUtilityClasses("MuiListItemIcon",["root","alignItemsFlexStart"]),useUtilityClasses$j=o=>{const{alignItems:u,classes:T}=o;return composeClasses({root:["root",u==="flex-start"&&"alignItemsFlexStart"]},getListItemIconUtilityClass,T)},ListItemIconRoot=styled("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.alignItems==="flex-start"&&u.alignItemsFlexStart]}})(memoTheme(({theme:o})=>({minWidth:56,color:(o.vars||o).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}))),ListItemIcon=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiListItemIcon"}),{className:E,...C}=S,_=reactExports.useContext(ListContext),P={...S,alignItems:_.alignItems},R=useUtilityClasses$j(P);return jsxRuntimeExports.jsx(ListItemIconRoot,{className:clsx(R.root,E),ownerState:P,ref:T,...C})});function getListItemTextUtilityClass(o){return generateUtilityClass("MuiListItemText",o)}const listItemTextClasses=generateUtilityClasses("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]),useUtilityClasses$i=o=>{const{classes:u,inset:T,primary:S,secondary:E,dense:C}=o;return composeClasses({root:["root",T&&"inset",C&&"dense",S&&E&&"multiline"],primary:["primary"],secondary:["secondary"]},getListItemTextUtilityClass,u)},ListItemTextRoot=styled("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[{[`& .${listItemTextClasses.primary}`]:u.primary},{[`& .${listItemTextClasses.secondary}`]:u.secondary},u.root,T.inset&&u.inset,T.primary&&T.secondary&&u.multiline,T.dense&&u.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${typographyClasses.root}:where(& .${listItemTextClasses.primary})`]:{display:"block"},[`.${typographyClasses.root}:where(& .${listItemTextClasses.secondary})`]:{display:"block"},variants:[{props:({ownerState:o})=>o.primary&&o.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:o})=>o.inset,style:{paddingLeft:56}}]}),ListItemText=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiListItemText"}),{children:E,className:C,disableTypography:_=!1,inset:P=!1,primary:R,primaryTypographyProps:I,secondary:L,secondaryTypographyProps:j,slots:M={},slotProps:D={},...F}=S,{dense:N}=reactExports.useContext(ListContext);let G=R??E,B=L;const H={...S,disableTypography:_,inset:P,primary:!!G,secondary:!!B,dense:N},O=useUtilityClasses$i(H),V={slots:M,slotProps:{primary:I,secondary:j,...D}},[U,W]=useSlot("root",{className:clsx(O.root,C),elementType:ListItemTextRoot,externalForwardedProps:{...V,...F},ownerState:H,ref:T}),[K,Y]=useSlot("primary",{className:O.primary,elementType:Typography,externalForwardedProps:V,ownerState:H}),[ee,oe]=useSlot("secondary",{className:O.secondary,elementType:Typography,externalForwardedProps:V,ownerState:H});return G!=null&&G.type!==Typography&&!_&&(G=jsxRuntimeExports.jsx(K,{variant:N?"body2":"body1",component:Y!=null&&Y.variant?void 0:"span",...Y,children:G})),B!=null&&B.type!==Typography&&!_&&(B=jsxRuntimeExports.jsx(ee,{variant:"body2",color:"textSecondary",...oe,children:B})),jsxRuntimeExports.jsxs(U,{...W,children:[G,B]})});function nextItem(o,u,T){return o===u?o.firstChild:u&&u.nextElementSibling?u.nextElementSibling:T?null:o.firstChild}function previousItem(o,u,T){return o===u?T?o.firstChild:o.lastChild:u&&u.previousElementSibling?u.previousElementSibling:T?null:o.lastChild}function textCriteriaMatches(o,u){if(u===void 0)return!0;let T=o.innerText;return T===void 0&&(T=o.textContent),T=T.trim().toLowerCase(),T.length===0?!1:u.repeating?T[0]===u.keys[0]:T.startsWith(u.ke
198ys.join(""))}function moveFocus(o,u,T,S,E,C){let _=!1,P=E(o,u,u?T:!1);for(;P;){if(P===o.firstChild){if(_)return!1;_=!0}const R=S?!1:P.disabled||P.getAttribute("aria-disabled")==="true";if(!P.hasAttribute("tabindex")||!textCriteriaMatches(P,C)||R)P=E(o,P,T);else return P.focus(),!0}return!1}const MenuList=reactExports.forwardRef(function(u,T){const{actions:S,autoFocus:E=!1,autoFocusItem:C=!1,children:_,className:P,disabledItemsFocusable:R=!1,disableListWrap:I=!1,onKeyDown:L,variant:j="selectedMenu",...M}=u,D=reactExports.useRef(null),F=reactExports.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});useEnhancedEffect(()=>{E&&D.current.focus()},[E]),reactExports.useImperativeHandle(S,()=>({adjustStyleForScrollbar:(O,{direction:V})=>{const U=!D.current.style.width;if(O.clientHeight<D.current.clientHeight&&U){const W=`${getScrollbarSize(ownerWindow(O))}px`;D.current.style[V==="rtl"?"paddingLeft":"paddingRight"]=W,D.current.style.width=`calc(100% + ${W})`}return D.current}}),[]);const N=O=>{const V=D.current,U=O.key;if(O.ctrlKey||O.metaKey||O.altKey){L&&L(O);return}const K=ownerDocument(V).activeElement;if(U==="ArrowDown")O.preventDefault(),moveFocus(V,K,I,R,nextItem);else if(U==="ArrowUp")O.preventDefault(),moveFocus(V,K,I,R,previousItem);else if(U==="Home")O.preventDefault(),moveFocus(V,null,I,R,nextItem);else if(U==="End")O.preventDefault(),moveFocus(V,null,I,R,previousItem);else if(U.length===1){const Y=F.current,ee=U.toLowerCase(),oe=performance.now();Y.keys.length>0&&(oe-Y.lastTime>500?(Y.keys=[],Y.repeating=!0,Y.previousKeyMatched=!0):Y.repeating&&ee!==Y.keys[0]&&(Y.repeating=!1)),Y.lastTime=oe,Y.keys.push(ee);const se=K&&!Y.repeating&&textCriteriaMatches(K,Y);Y.previousKeyMatched&&(se||moveFocus(V,K,!1,R,nextItem,Y))?O.preventDefault():Y.previousKeyMatched=!1}L&&L(O)},G=useForkRef(D,T);let B=-1;reactExports.Children.forEach(_,(O,V)=>{if(!reactExports.isValidElement(O)){B===V&&(B+=1,B>=_.length&&(B=-1));return}O.props.disabled||(j==="selectedMenu"&&O.props.selected||B===-1)&&(B=V),B===V&&(O.props.disabled||O.props.muiSkipListHighlight||O.type.muiSkipListHighlight)&&(B+=1,B>=_.length&&(B=-1))});const H=reactExports.Children.map(_,(O,V)=>{if(V===B){const U={};return C&&(U.autoFocus=!0),O.props.tabIndex===void 0&&j==="selectedMenu"&&(U.tabIndex=0),reactExports.cloneElement(O,U)}return O});return jsxRuntimeExports.jsx(List,{role:"menu",ref:G,className:P,onKeyDown:N,tabIndex:E?0:-1,...M,children:H})});function getPopoverUtilityClass(o){return generateUtilityClass("MuiPopover",o)}generateUtilityClasses("MuiPopover",["root","paper"]);function getOffsetTop(o,u){let T=0;return typeof u=="number"?T=u:u==="center"?T=o.height/2:u==="bottom"&&(T=o.height),T}function getOffsetLeft(o,u){let T=0;return typeof u=="number"?T=u:u==="center"?T=o.width/2:u==="right"&&(T=o.width),T}function getTransformOriginValue(o){return[o.horizontal,o.vertical].map(u=>typeof u=="number"?`${u}px`:u).join(" ")}function resolveAnchorEl(o){return typeof o=="function"?o():o}const useUtilityClasses$h=o=>{const{classes:u}=o;return composeClasses({root:["root"],paper:["paper"]},getPopoverUtilityClass,u)},PopoverRoot=styled(Modal,{name:"MuiPopover",slot:"Root"})({}),PopoverPaper=styled(Paper,{name:"MuiPopover",slot:"Paper"})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),Popover=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiPopover"}),{action:E,anchorEl:C,anchorOrigin:_={vertical:"top",horizontal:"left"},anchorPosition:P,anchorReference:R="anchorEl",children:I,className:L,container:j,elevation:M=8,marginThreshold:D=16,open:F,PaperProps:N={},slots:G={},slotProps:B={},transformOrigin:H={vertical:"top",horizontal:"left"},TransitionComponent:O,transitionDuration:V="auto",TransitionProps:U={},disableScrollLock:W=!1,...K}=S,Y=reactExports.useRef(),ee={...S,anchorOrigin:_,anchorReference:R,elevation:M,marginThreshold:D,transformOrigin:H,TransitionComponent:O,transitionDuration:V,TransitionProps:U},oe=useUtilityClasses$h(ee),se=reactExports.useCallback(()=>
198{if(R==="anchorPosition")return P;const we=resolveAnchorEl(C),pe=(we&&we.nodeType===1?we:ownerDocument(Y.current).body).getBoundingClientRect();return{top:pe.top+getOffsetTop(pe,_.vertical),left:pe.left+getOffsetLeft(pe,_.horizontal)}},[C,_.horizontal,_.vertical,P,R]),Q=reactExports.useCallback(we=>({vertical:getOffsetTop(we,H.vertical),horizontal:getOffsetLeft(we,H.horizontal)}),[H.horizontal,H.vertical]),ie=reactExports.useCallback(we=>{const Le={width:we.offsetWidth,height:we.offsetHeight},pe=Q(Le);if(R==="none")return{top:null,left:null,transformOrigin:getTransformOriginValue(pe)};const Me=se();let Pe=Me.top-pe.vertical,Ue=Me.left-pe.horizontal;const qe=Pe+Le.height,Ie=Ue+Le.width,Xe=ownerWindow(resolveAnchorEl(C)),et=Xe.innerHeight-D,tt=Xe.innerWidth-D;if(D!==null&&Pe<D){const Ye=Pe-D;Pe-=Ye,pe.vertical+=Ye}else if(D!==null&&qe>et){const Ye=qe-et;Pe-=Ye,pe.vertical+=Ye}if(D!==null&&Ue<D){const Ye=Ue-D;Ue-=Ye,pe.horizontal+=Ye}else if(Ie>tt){const Ye=Ie-tt;Ue-=Ye,pe.horizontal+=Ye}return{top:`${Math.round(Pe)}px`,left:`${Math.round(Ue)}px`,transformOrigin:getTransformOriginValue(pe)}},[C,R,se,Q,D]),[ae,re]=reactExports.useState(F),J=reactExports.useCallback(()=>{const we=Y.current;if(!we)return;const Le=ie(we);Le.top!==null&&we.style.setProperty("top",Le.top),Le.left!==null&&(we.style.left=Le.left),we.style.transformOrigin=Le.transformOrigin,re(!0)},[ie]);reactExports.useEffect(()=>(W&&window.addEventListener("scroll",J),()=>window.removeEventListener("scroll",J)),[C,W,J]);const te=()=>{J()},Z=()=>{re(!1)};reactExports.useEffect(()=>{F&&J()}),reactExports.useImperativeHandle(E,()=>F?{updatePosition:()=>{J()}}:null,[F,J]),reactExports.useEffect(()=>{if(!F)return;const we=debounce(()=>{J()}),Le=ownerWindow(resolveAnchorEl(C));return Le.addEventListener("resize",we),()=>{we.clear(),Le.removeEventListener("resize",we)}},[C,F,J]);let X=V;const de={slots:{transition:O,...G},slotProps:{transition:U,paper:N,...B}},[he,ne]=useSlot("transition",{elementType:Grow,externalForwardedProps:de,ownerState:ee,getSlotProps:we=>({...we,onEntering:(Le,pe)=>{var Me;(Me=we.onEntering)==null||Me.call(we,Le,pe),te()},onExited:Le=>{var pe;(pe=we.onExited)==null||pe.call(we,Le),Z()}}),additionalProps:{appear:!0,in:F}});V==="auto"&&!he.muiSupportAuto&&(X=void 0);const ue=j||(C?ownerDocument(resolveAnchorEl(C)).body:void 0),[ce,{slots:fe,slotProps:ve,...Te}]=useSlot("root",{ref:T,elementType:PopoverRoot,externalForwardedProps:{...de,...K},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:G.backdrop},slotProps:{backdrop:mergeSlotProps$1(typeof B.backdrop=="function"?B.backdrop(ee):B.backdrop,{invisible:!0})},container:ue,open:F},ownerState:ee,className:clsx(oe.root,L)}),[Se,ke]=useSlot("paper",{ref:Y,className:oe.paper,elementType:PopoverPaper,externalForwardedProps:de,shouldForwardComponentProp:!0,additionalProps:{elevation:M,style:ae?void 0:{opacity:0}},ownerState:ee});return jsxRuntimeExports.jsx(ce,{...Te,...!isHostComponent(ce)&&{slots:fe,slotProps:ve,disableScrollLock:W},children:jsxRuntimeExports.jsx(he,{...ne,timeout:X,children:jsxRuntimeExports.jsx(Se,{...ke,children:I})})})});function getMenuUtilityClass(o){return generateUtilityClass("MuiMenu",o)}generateUtilityClasses("MuiMenu",["root","paper","list"]);const RTL_ORIGIN={vertical:"top",horizontal:"right"},LTR_ORIGIN={vertical:"top",horizontal:"left"},useUtilityClasses$g=o=>{const{classes:u}=o;return composeClasses({root:["root"],paper:["paper"],list:["list"]},getMenuUtilityClass,u)},MenuRoot=styled(Popover,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiMenu",slot:"Root"})({}),MenuPaper=styled(PopoverPaper,{name:"MuiMenu",slot:"Paper"})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),MenuMenuList=styled(MenuList,{name:"MuiMenu",slot:"List"})({outline:0}),Menu=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiMenu"}),{autoFocus:E=!0,children:C,className:_,disableAutoFocusItem:P=!1,MenuListProps:R={},onClose:I,open:L,PaperProps:j={},PopoverClasses:M,transitionDuration:D="auto",TransitionProps:{onEntering:F,...N}={},variant:G="selectedMenu",slots:B={},slotProps:H={},...O}
198=S,V=useRtl(),U={...S,autoFocus:E,disableAutoFocusItem:P,MenuListProps:R,onEntering:F,PaperProps:j,transitionDuration:D,TransitionProps:N,variant:G},W=useUtilityClasses$g(U),K=E&&!P&&L,Y=reactExports.useRef(null),ee=(X,de)=>{Y.current&&Y.current.adjustStyleForScrollbar(X,{direction:V?"rtl":"ltr"}),F&&F(X,de)},oe=X=>{X.key==="Tab"&&(X.preventDefault(),I&&I(X,"tabKeyDown"))};let se=-1;reactExports.Children.map(C,(X,de)=>{reactExports.isValidElement(X)&&(X.props.disabled||(G==="selectedMenu"&&X.props.selected||se===-1)&&(se=de))});const Q={slots:B,slotProps:{list:R,transition:N,paper:j,...H}},ie=useSlotProps({elementType:B.root,externalSlotProps:H.root,ownerState:U,className:[W.root,_]}),[ae,re]=useSlot("paper",{className:W.paper,elementType:MenuPaper,externalForwardedProps:Q,shouldForwardComponentProp:!0,ownerState:U}),[J,te]=useSlot("list",{className:clsx(W.list,R.className),elementType:MenuMenuList,shouldForwardComponentProp:!0,externalForwardedProps:Q,getSlotProps:X=>({...X,onKeyDown:de=>{var he;oe(de),(he=X.onKeyDown)==null||he.call(X,de)}}),ownerState:U}),Z=typeof Q.slotProps.transition=="function"?Q.slotProps.transition(U):Q.slotProps.transition;return jsxRuntimeExports.jsx(MenuRoot,{onClose:I,anchorOrigin:{vertical:"bottom",horizontal:V?"right":"left"},transformOrigin:V?RTL_ORIGIN:LTR_ORIGIN,slots:{root:B.root,paper:ae,backdrop:B.backdrop,...B.transition&&{transition:B.transition}},slotProps:{root:ie,paper:re,backdrop:typeof H.backdrop=="function"?H.backdrop(U):H.backdrop,transition:{...Z,onEntering:(...X)=>{var de;ee(...X),(de=Z==null?void 0:Z.onEntering)==null||de.call(Z,...X)}}},open:L,ref:T,transitionDuration:D,ownerState:U,...O,classes:M,children:jsxRuntimeExports.jsx(J,{actions:Y,autoFocus:E&&(se===-1||P),autoFocusItem:K,variant:G,...te,children:C})})});function getMenuItemUtilityClass(o){return generateUtilityClass("MuiMenuItem",o)}const menuItemClasses=generateUtilityClasses("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),overridesResolver=(o,u)=>{const{ownerState:T}=o;return[u.root,T.dense&&u.dense,T.divider&&u.divider,!T.disableGutters&&u.gutters]},useUtilityClasses$f=o=>{const{disabled:u,dense:T,divider:S,disableGutters:E,selected:C,classes:_}=o,R=composeClasses({root:["root",T&&"dense",u&&"disabled",!E&&"gutters",S&&"divider",C&&"selected"]},getMenuItemUtilityClass,_);return{..._,...R}},MenuItemRoot=styled(ButtonBase,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiMenuItem",slot:"Root",overridesResolver})(memoTheme(({theme:o})=>({...o.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(o.vars||o).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${menuItemClasses.selected}`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,(o.vars||o).palette.action.selectedOpacity),[`&.${menuItemClasses.focusVisible}`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.focusOpacity}`)}},[`&.${menuItemClasses.selected}:hover`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:o.alpha((o.vars||o).palette.primary.main,(o.vars||o).palette.action.selectedOpacity)}},[`&.${menuItemClasses.focusVisible}`]:{backgroundColor:(o.vars||o).palette.action.focus},[`&.${menuItemClasses.disabled}`]:{opacity:(o.vars||o).palette.action.disabledOpacity},[`& + .${dividerClasses.root}`]:{marginTop:o.spacing(1),marginBottom:o.spacing(1)},[`& + .${dividerClasses.inset}`]:{marginLeft:52},[`& .${listItemTextClasses.root}`]:{marginTop:0,marginBottom:0},[`& .${listItemTextClasses.inset}`]:{paddingLeft:36},[`& .${listItemIconClasses.root}`]:{minWidth:36},variants:[{props:({ownerState:u})=>!u.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:u})=>u.divider,style:{borderBottom:`1px solid ${(o.vars||o).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:u})=>!u.dense,style:{[o.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:u})=>u.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...o.typography.body2,[`& .${listItemIconClasses.root} svg`]:{fontSize:"1.25rem"}}}]}))),MenuItem=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiMenuItem"}),{autoFocus:E=!1,component:C="li",dense:_=!1,divider:P=!1,disableGutters:R=!1,focusVisibleClassName:I,role:L="menuitem",tabIndex:j,className:M,...D}=S,F=reactExports.useContext(ListContext),N=reactExports.useMemo(()=>({dense:_||F.dense||!1,disableGutters:R}),[F.dense,_,R]),G=reactExports.useRef(null);useEnhancedEffect(()=>{E&&G.current&&G.current.focus()},[E]);const B={...S,dense:N.dense,divider:P,disableGutters:R},H=useUtilityClasses$f(S),O=useForkRef(G,T);let V;return S.disabled||(V=j!==void 0?j:-1),jsxRuntimeExports.jsx(ListContext.Provider,{value:N,children:jsxRuntimeExports.jsx(MenuItemRoot,{ref:O,role:L,tabIndex:V,component:C,focusVisibleClassName:clsx(H.focusVisible,I),className:clsx(H.root,M),...D,ownerState:B,classes:H})})});function getNativeSelectUtilityClasses(o){return generateUtilityClass("MuiNativeSelect",o)}const nativeSelectClasses=generateUtilityClasses("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),useUtilityClasses$e=o=>{const{classes:u,variant:T,disabled:S,multiple:E,open:C,error:_}=o,P={select:["select",T,S&&"disabled",E&&"multiple",_&&"error"],icon:["icon",`icon${capitalize(T)}`,C&&"iconOpen",S&&"disabled"]};return composeClasses(P,getNativeSelectUtilityClasses,u)},StyledSelectSelect=styled("select",{name:"MuiNativeSelect"})(({theme:o})=>({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":{borderRadius:0},[`&.${nativeSelectClasses.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(o.vars||o).palette.background.paper},variants:[{props:({ownerState:u})=>u.variant!=="filled"&&u.variant!=="outlined",style:{"&&&":{paddingRight:24,minWidth:16}}},{props:{variant:"filled"},style:{"&&&":{paddingRight:32}}},{props:{variant:"outlined"},style:{borderRadius:(o.vars||o).shape.borderRadius,"&:focus":{borderRadius:(o.vars||o).shape.borderRadius},"&&&":{paddingRight:32}}}]})),NativeSelectSelect=styled(StyledSelectSelect,{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:rootShouldForwardProp,overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.select,u[T.variant],T.error&&u.error,{[`&.${nativeSelectClasses.multiple}`]:u.multiple}]}})({}),StyledSelectIcon=styled("svg",{name:"MuiNativeSelect"})(({theme:o})=>({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(o.vars||o).palette.action.active,[`&.${nativeSelectClasses.disabled}`]:{color:(o.vars||o).palette.action.disabled},variants:[{props:({ownerState:u})=>u.open,style:{transform:"rotate(180deg)"}},{props:{variant:"filled"},style:{right:7}},{props:{variant:"outlined"},style:{right:7}}]})),NativeSelectIcon=styled(StyledSelectIcon,{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.icon,T.variant&&u[`icon${capitalize(T.variant)}
198`],T.open&&u.iconOpen]}})({}),NativeSelectInput=reactExports.forwardRef(function(u,T){const{className:S,disabled:E,error:C,IconComponent:_,inputRef:P,variant:R="standard",...I}=u,L={...u,disabled:E,variant:R,error:C},j=useUtilityClasses$e(L);return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(NativeSelectSelect,{ownerState:L,className:clsx(j.select,S),disabled:E,ref:P||T,...I}),u.multiple?null:jsxRuntimeExports.jsx(NativeSelectIcon,{as:_,ownerState:L,className:j.icon})]})});var _span$1;const NotchedOutlineRoot$1=styled("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),NotchedOutlineLegend=styled("legend",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})(memoTheme(({theme:o})=>({float:"unset",width:"auto",overflow:"hidden",variants:[{props:({ownerState:u})=>!u.withLabel,style:{padding:0,lineHeight:"11px",transition:o.transitions.create("width",{duration:150,easing:o.transitions.easing.easeOut})}},{props:({ownerState:u})=>u.withLabel,style:{display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:o.transitions.create("max-width",{duration:50,easing:o.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}}},{props:({ownerState:u})=>u.withLabel&&u.notched,style:{maxWidth:"100%",transition:o.transitions.create("max-width",{duration:100,easing:o.transitions.easing.easeOut,delay:50})}}]})));function NotchedOutline(o){const{children:u,classes:T,className:S,label:E,notched:C,..._}=o,P=E!=null&&E!=="",R={...o,notched:C,withLabel:P};return jsxRuntimeExports.jsx(NotchedOutlineRoot$1,{"aria-hidden":!0,className:S,ownerState:R,..._,children:jsxRuntimeExports.jsx(NotchedOutlineLegend,{ownerState:R,children:P?jsxRuntimeExports.jsx("span",{children:E}):_span$1||(_span$1=jsxRuntimeExports.jsx("span",{className:"notranslate","aria-hidden":!0,children:"â"}))})})}const useUtilityClasses$d=o=>{const{classes:u}=o,S=composeClasses({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},getOutlinedInputUtilityClass,u);return{...u,...S}},OutlinedInputRoot=styled(InputBaseRoot,{shouldForwardProp:o=>rootShouldForwardProp(o)||o==="classes",name:"MuiOutlinedInput",slot:"Root",overridesResolver:rootOverridesResolver})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{position:"relative",borderRadius:(o.vars||o).shape.borderRadius,[`&:hover .${outlinedInputClasses.notchedOutline}`]:{borderColor:(o.vars||o).palette.text.primary},"@media (hover: none)":{[`&:hover .${outlinedInputClasses.notchedOutline}`]:{borderColor:o.vars?o.alpha(o.vars.palette.common.onBackground,.23):u}},[`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]:{borderWidth:2},variants:[...Object.entries(o.palette).filter(createSimplePaletteValueFilter()).map(([T])=>({props:{color:T},style:{[`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]:{borderColor:(o.vars||o).palette[T].main}}})),{props:{},style:{[`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]:{borderColor:(o.vars||o).palette.error.main},[`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]:{borderColor:(o.vars||o).palette.action.disabled}}},{props:({ownerState:T})=>T.startAdornment,style:{paddingLeft:14}},{props:({ownerState:T})=>T.endAdornment,style:{paddingRight:14}},{props:({ownerState:T})=>T.multiline,style:{padding:"16.5px 14px"}},{props:({ownerState:T,size:S})=>T.multiline&&S==="small",style:{padding:"8.5px 14px"}}]}})),NotchedOutlineRoot=styled(NotchedOutline,{name:"MuiOutlinedInput",slot:"NotchedOutline"})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:o.vars?o.alpha(o.vars.palette.common.onBackgroun
198d,.23):u}})),OutlinedInputInput=styled(InputBaseInput,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:inputOverridesResolver})(memoTheme(({theme:o})=>({padding:"16.5px 14px",...!o.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:o.palette.mode==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:o.palette.mode==="light"?null:"#fff",caretColor:o.palette.mode==="light"?null:"#fff",borderRadius:"inherit"}},...o.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[o.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},variants:[{props:{size:"small"},style:{padding:"8.5px 14px"}},{props:({ownerState:u})=>u.multiline,style:{padding:0}},{props:({ownerState:u})=>u.startAdornment,style:{paddingLeft:0}},{props:({ownerState:u})=>u.endAdornment,style:{paddingRight:0}}]}))),OutlinedInput=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiOutlinedInput"}),{components:E={},fullWidth:C=!1,inputComponent:_="input",label:P,multiline:R=!1,notched:I,slots:L={},slotProps:j={},type:M="text",...D}=S,F=useUtilityClasses$d(S),N=useFormControl(),G=formControlState({props:S,muiFormControl:N,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),B={...S,color:G.color||"primary",disabled:G.disabled,error:G.error,focused:G.focused,formControl:N,fullWidth:C,hiddenLabel:G.hiddenLabel,multiline:R,size:G.size,type:M},H=L.root??E.Root??OutlinedInputRoot,O=L.input??E.Input??OutlinedInputInput,[V,U]=useSlot("notchedOutline",{elementType:NotchedOutlineRoot,className:F.notchedOutline,shouldForwardComponentProp:!0,ownerState:B,externalForwardedProps:{slots:L,slotProps:j},additionalProps:{label:P!=null&&P!==""&&G.required?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[P,"â","*"]}):P}});return jsxRuntimeExports.jsx(InputBase,{slots:{root:H,input:O},slotProps:j,renderSuffix:W=>jsxRuntimeExports.jsx(V,{...U,notched:typeof I<"u"?I:!!(W.startAdornment||W.filled||W.focused)}),fullWidth:C,inputComponent:_,multiline:R,ref:T,type:M,...D,classes:{...F,notchedOutline:null}})});OutlinedInput.muiName="Input";function getSelectUtilityClasses(o){return generateUtilityClass("MuiSelect",o)}const selectClasses=generateUtilityClasses("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var _span;const SelectSelect=styled(StyledSelectSelect,{name:"MuiSelect",slot:"Select",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[{[`&.${selectClasses.select}`]:u.select},{[`&.${selectClasses.select}`]:u[T.variant]},{[`&.${selectClasses.error}`]:u.error},{[`&.${selectClasses.multiple}`]:u.multiple}]}})({[`&.${selectClasses.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),SelectIcon=styled(StyledSelectIcon,{name:"MuiSelect",slot:"Icon",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.icon,T.variant&&u[`icon${capitalize(T.variant)}`],T.open&&u.iconOpen]}})({}),SelectNativeInput=styled("input",{shouldForwardProp:o=>slotShouldForwardProp(o)&&o!=="classes",name:"MuiSelect",slot:"NativeInput"})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function areEqualValues(o,u){return typeof u=="object"&&u!==null?o===u:String(o)===String(u)}function isEmpty(o){return o==null||typeof o=="string"&&!o.trim()}const useUtilityClasses$c=o=>{const{classes:u,variant:T,disabled:S,multiple:E,open:C,error:_}=o,P={select:["select",T,S&&"disabled",E&&"multiple",_&&"error"],icon:["icon",`icon${capitalize(T)}`,C&&"iconOpen",S&&"disabled"],nativeInput:["nativeInput"]};return composeClasses(P,getSelectUtilityClasses,u)},SelectInput=reactExports.forwardRef(function(u,T){var mt,xt,vt,yt;const{"aria-describedby":S,"aria-label":E,autoFocus:C,autoWidth:_,children:P,className:R,defaultOpen:I,defaultValue:L,disabled:j,displayEmpty:M,error:D=!1,IconComponent:F,inputRef:N,labelId:G,MenuProps:B={}
198,multiple:H,name:O,onBlur:V,onChange:U,onClose:W,onFocus:K,onOpen:Y,open:ee,readOnly:oe,renderValue:se,required:Q,SelectDisplayProps:ie={},tabIndex:ae,type:re,value:J,variant:te="standard",...Z}=u,[X,de]=useControlled({controlled:J,default:L,name:"Select"}),[he,ne]=useControlled({controlled:ee,default:I,name:"Select"}),ue=reactExports.useRef(null),ce=reactExports.useRef(null),[fe,ve]=reactExports.useState(null),{current:Te}=reactExports.useRef(ee!=null),[Se,ke]=reactExports.useState(),we=useForkRef(T,N),Le=reactExports.useCallback(Je=>{ce.current=Je,Je&&ve(Je)},[]),pe=fe==null?void 0:fe.parentNode;reactExports.useImperativeHandle(we,()=>({focus:()=>{ce.current.focus()},node:ue.current,value:X}),[X]),reactExports.useEffect(()=>{I&&he&&fe&&!Te&&(ke(_?null:pe.clientWidth),ce.current.focus())},[fe,_]),reactExports.useEffect(()=>{C&&ce.current.focus()},[C]),reactExports.useEffect(()=>{if(!G)return;const Je=ownerDocument(ce.current).getElementById(G);if(Je){const De=()=>{getSelection().isCollapsed&&ce.current.focus()};return Je.addEventListener("click",De),()=>{Je.removeEventListener("click",De)}}},[G]);const Me=(Je,De)=>{Je?Y&&Y(De):W&&W(De),Te||(ke(_?null:pe.clientWidth),ne(Je))},Pe=Je=>{Je.button===0&&(Je.preventDefault(),ce.current.focus(),Me(!0,Je))},Ue=Je=>{Me(!1,Je)},qe=reactExports.Children.toArray(P),Ie=Je=>{const De=qe.find($e=>$e.props.value===Je.target.value);De!==void 0&&(de(De.props.value),U&&U(Je,De))},Xe=Je=>De=>{let $e;if(De.currentTarget.hasAttribute("tabindex")){if(H){$e=Array.isArray(X)?X.slice():[];const ht=X.indexOf(Je.props.value);ht===-1?$e.push(Je.props.value):$e.splice(ht,1)}else $e=Je.props.value;if(Je.props.onClick&&Je.props.onClick(De),X!==$e&&(de($e),U)){const ht=De.nativeEvent||De,ut=new ht.constructor(ht.type,ht);Object.defineProperty(ut,"target",{writable:!0,value:{value:$e,name:O}}),U(ut,Je)}H||Me(!1,De)}},et=Je=>{oe||[" ","ArrowUp","ArrowDown","Enter"].includes(Je.key)&&(Je.preventDefault(),Me(!0,Je))},tt=fe!==null&&he,Ye=Je=>{!tt&&V&&(Object.defineProperty(Je,"target",{writable:!0,value:{value:X,name:O}}),V(Je))};delete Z["aria-invalid"];let ze,Ze;const He=[];let rt=!1;(isFilled({value:X})||M)&&(se?ze=se(X):rt=!0);const it=qe.map(Je=>{if(!reactExports.isValidElement(Je))return null;let De;if(H){if(!Array.isArray(X))throw new Error(formatMuiErrorMessage(2));De=X.some($e=>areEqualValues($e,Je.props.value)),De&&rt&&He.push(Je.props.children)}else De=areEqualValues(X,Je.props.value),De&&rt&&(Ze=Je.props.children);return reactExports.cloneElement(Je,{"aria-selected":De?"true":"false",onClick:Xe(Je),onKeyUp:$e=>{$e.key===" "&&$e.preventDefault(),Je.props.onKeyUp&&Je.props.onKeyUp($e)},role:"option",selected:De,value:void 0,"data-value":Je.props.value})});rt&&(H?He.length===0?ze=null:ze=He.reduce((Je,De,$e)=>(Je.push(De),$e<He.length-1&&Je.push(", "),Je),[]):ze=Ze);let st=Se;!_&&Te&&fe&&(st=pe.clientWidth);let at;typeof ae<"u"?at=ae:at=j?null:0;const ot=ie.id||(O?`mui-component-select-${O}`:void 0),je={...u,variant:te,value:X,open:tt,error:D},Be=useUtilityClasses$c(je),Qe={...B.PaperProps,...typeof((mt=B.slotProps)==null?void 0:mt.paper)=="function"?B.slotProps.paper(je):(xt=B.slotProps)==null?void 0:xt.paper},Ge={...B.MenuListProps,...typeof((vt=B.slotProps)==null?void 0:vt.list)=="function"?B.slotProps.list(je):(yt=B.slotProps)==null?void 0:yt.list},We=useId();return jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[jsxRuntimeExports.jsx(SelectSelect,{as:"div",ref:Le,tabIndex:at,role:"combobox","aria-controls":tt?We:void 0,"aria-disabled":j?"true":void 0,"aria-expanded":tt?"true":"false","aria-haspopup":"listbox","aria-label":E,"aria-labelledby":[G,ot].filter(Boolean).join(" ")||void 0,"aria-describedby":S,"aria-required":Q?"true":void 0,"aria-invalid":D?"true":void 0,onKeyDown:et,onMouseDown:j||oe?null:Pe,onBlur:Ye,onFocus:K,...ie,ownerState:je,className:clsx(ie.className,Be.select,R),id:ot,children:isEmpty(ze)?_span||(_span=jsxRuntimeExports.jsx("span",{className:"notranslate","aria-hidden":!0,children:"â"})):ze}),jsxRuntimeExports.jsx(SelectNativeInput,{"aria-invalid":D,value:Array.isArray(X)?X.join(","):X,name:O,ref:ue,"aria-hidden":!0,onChange:Ie,tabIndex:-1,disabled:j,className:Be.nativeInput,autoFocus:C,required:Q,...Z,ownerState:je}),jsxRuntimeExports.jsx(SelectIcon,{as:F,className:Be.icon,ownerState:je}),jsxRuntimeExports.jsx(Menu,{id:`menu-${O||""}`,anchorEl:pe,open:tt,onClose:Ue,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},...B,slotProps:{...B.slotProps,list:{"aria-labelledby":G,role:"listbox","aria-multiselectable":H?"true":void 0,disableListWrap:!0,id:We,...Ge},paper:{...Qe,style:{minWidth:st,...Qe!=null?Qe.style:null}}},children:it})]})}),useUtilityClasses$b=o=>{const{classes:u}=o,S=composeClasses({root:["root"]},getSelectUtilityClasses,u);return{...u,...S}},styledRootConfig={name:"MuiSelect",slot:"Root",shouldForwardProp:o=>rootShouldForwardProp(o)&&o!=="variant"},StyledInput=styled(Input,styledRootConfig)(""),StyledOutlinedInput=styled(OutlinedInput,styledRootConfig)(""),StyledFilledInput=styled(
198FilledInput,styledRootConfig)(""),Select=reactExports.forwardRef(function(u,T){const S=useDefaultProps({name:"MuiSelect",props:u}),{autoWidth:E=!1,children:C,classes:_={},className:P,defaultOpen:R=!1,displayEmpty:I=!1,IconComponent:L=ArrowDropDownIcon,id:j,input:M,inputProps:D,label:F,labelId:N,MenuProps:G,multiple:B=!1,native:H=!1,onClose:O,onOpen:V,open:U,renderValue:W,SelectDisplayProps:K,variant:Y="outlined",...ee}=S,oe=H?NativeSelectInput:SelectInput,se=useFormControl(),Q=formControlState({props:S,muiFormControl:se,states:["variant","error"]}),ie=Q.variant||Y,ae={...S,variant:ie,classes:_},re=useUtilityClasses$b(ae),{root:J,...te}=re,Z=M||{standard:jsxRuntimeExports.jsx(StyledInput,{ownerState:ae}),outlined:jsxRuntimeExports.jsx(StyledOutlinedInput,{label:F,ownerState:ae}),filled:jsxRuntimeExports.jsx(StyledFilledInput,{ownerState:ae})}[ie],X=useForkRef(T,getReactElementRef(Z));return jsxRuntimeExports.jsx(reactExports.Fragment,{children:reactExports.cloneElement(Z,{inputComponent:oe,inputProps:{children:C,error:Q.error,IconComponent:L,variant:ie,type:void 0,multiple:B,...H?{id:j}:{autoWidth:E,defaultOpen:R,displayEmpty:I,labelId:N,MenuProps:G,onClose:O,onOpen:V,open:U,renderValue:W,SelectDisplayProps:{id:j,...K}},...D,classes:D?deepmerge(te,D.classes):te,...M?M.props.inputProps:{}},...(B&&H||I)&&ie==="outlined"?{notched:!0}:{},ref:X,className:clsx(Z.props.className,P,re.root),...!M&&{variant:ie},...ee})})});Select.muiName="Select";const styles={entering:{transform:"none"},entered:{transform:"none"}},Zoom=reactExports.forwardRef(function(u,T){const S=useTheme(),E={enter:S.transitions.duration.enteringScreen,exit:S.transitions.duration.leavingScreen},{addEndListener:C,appear:_=!0,children:P,easing:R,in:I,onEnter:L,onEntered:j,onEntering:M,onExit:D,onExited:F,onExiting:N,style:G,timeout:B=E,TransitionComponent:H=Transition,...O}=u,V=reactExports.useRef(null),U=useForkRef(V,getReactElementRef(P),T),W=ae=>re=>{if(ae){const J=V.current;re===void 0?ae(J):ae(J,re)}},K=W(M),Y=W((ae,re)=>{reflow(ae);const J=getTransitionProps({style:G,timeout:B,easing:R},{mode:"enter"});ae.style.webkitTransition=S.transitions.create("transform",J),ae.style.transition=S.transitions.create("transform",J),L&&L(ae,re)}),ee=W(j),oe=W(N),se=W(ae=>{const re=getTransitionProps({style:G,timeout:B,easing:R},{mode:"exit"});ae.style.webkitTransition=S.transitions.create("transform",re),ae.style.transition=S.transitions.create("transform",re),D&&D(ae)}),Q=W(F),ie=ae=>{C&&C(V.current,ae)};return jsxRuntimeExports.jsx(H,{appear:_,in:I,nodeRef:V,onEnter:Y,onEntered:ee,onEntering:K,onExit:se,onExited:Q,onExiting:oe,addEndListener:ie,timeout:B,...O,children:(ae,{ownerState:re,...J})=>reactExports.cloneElement(P,{style:{transform:"scale(0)",visibility:ae==="exited"&&!I?"hidden":void 0,...styles[ae],...G,...P.props.style},ref:U,...J})})}),StepperContext=reactExports.createContext({}),StepContext=reactExports.createContext({});function getStepUtilityClass(o){return generateUtilityClass("MuiStep",o)}generateUtilityClasses("MuiStep",["root","horizontal","vertical","alternativeLabel","completed"]);const useUtilityClasses$a=o=>{const{classes:u,orientation:T,alternativeLabel:S,completed:E}=o;return composeClasses({root:["root",T,S&&"alternativeLabel",E&&"completed"]},getStepUtilityClass,u)},StepRoot=styled("div",{name:"MuiStep",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.orientation],T.alternativeLabel&&u.alternativeLabel,T.completed&&u.completed]}})({variants:[{props:{orientation:"horizontal"},style:{paddingLeft:8,paddingRight:8}},{props:{alternativeLabel:!0},style:{flex:1,position:"relative"}}]}),Step=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiStep"}),{active:E,children:C,className:_,component:P="div",completed:R,disabled:I,expanded:L=!1,index:j,last:M,...D}=S,{activeStep:F,connector:N,alternativeLabel:G,orientation:B,nonLinear:H}=reactExports.useContext(StepperContext);let[O=!1,V=!1,U=!1]=[E,R,I];F===j?O=E!==void 0?E:!0:!H&&F>j?V=R!==void 0?R:!0:!H&&F<j&&(U=I!==void 0?I:!0);const W=reactExports.useMemo(()=>({index:j,last:M,expanded:L,icon:j+1,active:O,completed:V,disabled:U}),[j,M,L,O,V,U]),K={...S,active:O,orientation:B,alternativeLabel:G,completed:V,disabled:U,expanded:L,component:P},Y=useUtilityClasses$a(K),ee=jsxRuntimeExports.jsxs(StepRoot,{as:P,className:clsx(Y.root,_),ref:T,ownerState:K,...D,children:[N&&G&&j!==0?N:null,C]});return jsxRuntimeExports.jsx(StepContext.Provider,{value:W,children:N&&!G&&j!==0?jsxRuntimeExports.jsxs(reactExports.Fragment,{children:[N,ee]}):ee})}),CheckCircle$1=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"})),Warning=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M1 21h22L12 2
1981 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}));function getStepIconUtilityClass(o){return generateUtilityClass("MuiStepIcon",o)}const stepIconClasses=generateUtilityClasses("MuiStepIcon",["root","active","completed","error","text"]);var _circle;const useUtilityClasses$9=o=>{const{classes:u,active:T,completed:S,error:E}=o;return composeClasses({root:["root",T&&"active",S&&"completed",E&&"error"],text:["text"]},getStepIconUtilityClass,u)},StepIconRoot=styled(SvgIcon,{name:"MuiStepIcon",slot:"Root"})(memoTheme(({theme:o})=>({display:"block",transition:o.transitions.create("color",{duration:o.transitions.duration.shortest}),color:(o.vars||o).palette.text.disabled,[`&.${stepIconClasses.completed}`]:{color:(o.vars||o).palette.primary.main},[`&.${stepIconClasses.active}`]:{color:(o.vars||o).palette.primary.main},[`&.${stepIconClasses.error}`]:{color:(o.vars||o).palette.error.main}}))),StepIconText=styled("text",{name:"MuiStepIcon",slot:"Text"})(memoTheme(({theme:o})=>({fill:(o.vars||o).palette.primary.contrastText,fontSize:o.typography.caption.fontSize,fontFamily:o.typography.fontFamily}))),StepIcon=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiStepIcon"}),{active:E=!1,className:C,completed:_=!1,error:P=!1,icon:R,...I}=S,L={...S,active:E,completed:_,error:P},j=useUtilityClasses$9(L);if(typeof R=="number"||typeof R=="string"){const M=clsx(C,j.root);return P?jsxRuntimeExports.jsx(StepIconRoot,{as:Warning,className:M,ref:T,ownerState:L,...I}):_?jsxRuntimeExports.jsx(StepIconRoot,{as:CheckCircle$1,className:M,ref:T,ownerState:L,...I}):jsxRuntimeExports.jsxs(StepIconRoot,{className:M,ref:T,ownerState:L,...I,children:[_circle||(_circle=jsxRuntimeExports.jsx("circle",{cx:"12",cy:"12",r:"12"})),jsxRuntimeExports.jsx(StepIconText,{className:j.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:L,children:R})]})}return R});function getStepLabelUtilityClass(o){return generateUtilityClass("MuiStepLabel",o)}const stepLabelClasses=generateUtilityClasses("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"]),useUtilityClasses$8=o=>{const{classes:u,orientation:T,active:S,completed:E,error:C,disabled:_,alternativeLabel:P}=o;return composeClasses({root:["root",T,C&&"error",_&&"disabled",P&&"alternativeLabel"],label:["label",S&&"active",E&&"completed",C&&"error",_&&"disabled",P&&"alternativeLabel"],iconContainer:["iconContainer",S&&"active",E&&"completed",C&&"error",_&&"disabled",P&&"alternativeLabel"],labelContainer:["labelContainer",P&&"alternativeLabel"]},getStepLabelUtilityClass,u)},StepLabelRoot=styled("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.orientation]]}})({display:"flex",alignItems:"center",[`&.${stepLabelClasses.alternativeLabel}`]:{flexDirection:"column"},[`&.${stepLabelClasses.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),StepLabelLabel=styled("span",{name:"MuiStepLabel",slot:"Label"})(memoTheme(({theme:o})=>({...o.typography.body2,display:"block",transition:o.transitions.create("color",{duration:o.transitions.duration.shortest}),[`&.${stepLabelClasses.active}`]:{color:(o.vars||o).palette.text.primary,fontWeight:500},[`&.${stepLabelClasses.completed}`]:{color:(o.vars||o).palette.text.primary,fontWeight:500},[`&.${stepLabelClasses.alternativeLabel}`]:{marginTop:16},[`&.${stepLabelClasses.error}`]:{color:(o.vars||o).palette.error.main}}))),StepLabelIconContainer=styled("span",{name:"MuiStepLabel",slot:"IconContainer"})({flexShrink:0,display:"flex",paddingRight:8,[`&.${stepLabelClasses.alternativeLabel}`]:{paddingRight:0}}),StepLabelLabelContainer=styled("span",{name:"MuiStepLabel",slot:"LabelContainer"})(memoTheme(({theme:o})=>({width:"100%",color:(o.vars||o).palette.text.secondary,[`&.${stepLabelClasses.alternativeLabel}`]:{textAlign:"center"}}))),StepLabel=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiStepLabel"}),{children:E,className:C,componentsProps:_={},error:P=!1,icon:R,optional:I,slots:L={},slotProps:j={},StepIconComponent:M,StepIconProps:D,...F}=S,{alternativeLabel:N,orientation:G}=reactExports.useContext(StepperContext),{active:B,disabled:H,completed:O,icon:V}=reactExports.useContext(StepContext),U=R||V;let W=M;U&&!W&&(W=StepIcon);const K={...S,active:B,alternativeLabel:N,completed:O,disabled:H,error:P,orientation:G},Y=useUtilityClasses$8(K),ee={slots:L,slotProps:{stepIcon:D,..._,...j}},[oe,se]=useSlot("root",{elementType:StepLabelRoot,externalForwardedProps:{...ee,...F},ownerState:K,ref:T,className:clsx(Y.root,C)}),[Q,ie]=useSlot("label",{elementType:StepLabelLabel,externalForwardedProps:ee,ownerState:K}),[ae,re]=useSlot("stepIcon",{elementType:W,externalForwardedProps:ee,ownerState:K});return jsxRuntimeExports.jsxs(oe,{...se,children:[U||ae?jsxRuntimeExports.jsx(StepLabelIconContainer,{className:Y.iconContainer,ownerState:K,children:jsxRuntimeExports.jsx(ae,{completed:O,active:B,error:P,icon:U,...re})}):null,jsxRuntimeExports.jsxs(StepLabelLabelContainer,{className:Y.labelContainer,ownerState:K,children:[E?jsxRuntimeExports.jsx(Q,{...ie,className:clsx(Y.label,ie==null?void 0:ie.className),children:E}):null,I]})]})});StepLabel.muiName="StepLabel";function getStepConnectorUtilityClass(o){return generateUtilityClass("MuiStepConnector",o)}generateUtilityClasses("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"]);const useUtilityClasses$7=o=>{const{classes:u,orientation:T,alternativeLabel:S,active:E,completed:C,disabled:_}=o,P={root:["root",T,S&&"alternativeLabel",E&&"active",C&&"completed",_&&"disabled"],line:["line",`line${capitalize(T)}`]};return composeClasses(P,getStepConnectorUtilityClass,u)},StepConnectorRoot=styled("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.orientation],T.alternativeLabel&&u.alternativeLabel,T.completed&&u.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),StepConnectorLine=styled("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.line,u[`line${capitalize(T.orientation)}`]]}})(memoTheme(({theme:o})=>{const u=o.palette.mode==="light"?o.palette.grey[400]:o.palette.grey[600];return{display:"block",borderColor:o.vars?o.vars.palette.StepConnector.border:u,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}})),StepConnector=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiStepConnector"}),{className:E,...C}=S,{alternativeLabel:_,orientation:P="horizontal"}=reactExports.useContext(StepperContext),{active:R,disabled:I,completed:L}=reactExports.useContext(StepContext),j={...S,alternativeLabel:_,orientation:P,active:R,completed:L,disabled:I},M=useUtilityClasses$7(j);return jsxRuntimeExports.jsx(StepConnectorRoot,{className:clsx(M.root,E),ref:T,ownerState:j,...C,children:jsxRuntimeExports.jsx(StepConnectorLine,{className:M.line,ownerState:j})})});function getStepperUtilityClass(o){return generateUtilityClass("MuiStepper",o)}generateUtilityClasses("MuiStepper",["root","horizontal","vertical","nonLinear","alternativeLabel"]);const useUtilityClasses$6=o=>{const{orientation:u,nonLinear:T,alternativeLabel:S,classes:E}=o;return composeClasses({root:["root",u,T&&"nonLinear",S&&"alternativeLabel"]},getStepperUtilityClass,E)},StepperRoot=styled("div",{name:"MuiStepper",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.orientation],T.alternativeLabel&&u.alternativeLabel,T.nonLinear&&u.nonLinear]}})({display:"flex",variants:[{props:{orientation:"horizontal"},style:{flexDirection:"row",alignItems:"center"}},{props:{orientation:"vertical"},style:{flexDirection:"column"}},{props:{alternativeLabel:!0},style:{alignItems:"flex-start"}}]}),defaultConnector=jsxRuntimeExports.jsx(StepConnector,{}),Stepper=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiStepper"}),{activeStep:E=0,alternativeLabel:C=!1,children:_,className:P,component:R="div",connector:I=defaultConnector,nonLinear:L=!1,orientation:j="horizontal",...M}=S,D={...S,nonLinear:L,alternativeLabel:C,orientation:j,component:R},F=useUtilityClasses$6(D),N=reactExports.Children.toArray(_).filter(
198Boolean),G=N.map((H,O)=>reactExports.cloneElement(H,{index:O,last:O+1===N.length,...H.props})),B=reactExports.useMemo(()=>({activeStep:E,alternativeLabel:C,connector:I,nonLinear:L,orientation:j}),[E,C,I,L,j]);return jsxRuntimeExports.jsx(StepperContext.Provider,{value:B,children:jsxRuntimeExports.jsx(StepperRoot,{as:R,ownerState:D,className:clsx(F.root,P),ref:T,...M,children:G})})}),TableContext=reactExports.createContext();function getTableUtilityClass(o){return generateUtilityClass("MuiTable",o)}generateUtilityClasses("MuiTable",["root","stickyHeader"]);const useUtilityClasses$5=o=>{const{classes:u,stickyHeader:T}=o;return composeClasses({root:["root",T&&"stickyHeader"]},getTableUtilityClass,u)},TableRoot=styled("table",{name:"MuiTable",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.stickyHeader&&u.stickyHeader]}})(memoTheme(({theme:o})=>({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":{...o.typography.body2,padding:o.spacing(2),color:(o.vars||o).palette.text.secondary,textAlign:"left",captionSide:"bottom"},variants:[{props:({ownerState:u})=>u.stickyHeader,style:{borderCollapse:"separate"}}]}))),defaultComponent$3="table",Table=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTable"}),{className:E,component:C=defaultComponent$3,padding:_="normal",size:P="medium",stickyHeader:R=!1,...I}=S,L={...S,component:C,padding:_,size:P,stickyHeader:R},j=useUtilityClasses$5(L),M=reactExports.useMemo(()=>({padding:_,size:P,stickyHeader:R}),[_,P,R]);return jsxRuntimeExports.jsx(TableContext.Provider,{value:M,children:jsxRuntimeExports.jsx(TableRoot,{as:C,role:C===defaultComponent$3?null:"table",ref:T,className:clsx(j.root,E),ownerState:L,...I})})}),Tablelvl2Context=reactExports.createContext();function getTableBodyUtilityClass(o){return generateUtilityClass("MuiTableBody",o)}generateUtilityClasses("MuiTableBody",["root"]);const useUtilityClasses$4=o=>{const{classes:u}=o;return composeClasses({root:["root"]},getTableBodyUtilityClass,u)},TableBodyRoot=styled("tbody",{name:"MuiTableBody",slot:"Root"})({display:"table-row-group"}),tablelvl2$1={variant:"body"},defaultComponent$2="tbody",TableBody=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTableBody"}),{className:E,component:C=defaultComponent$2,..._}=S,P={...S,component:C},R=useUtilityClasses$4(P);return jsxRuntimeExports.jsx(Tablelvl2Context.Provider,{value:tablelvl2$1,children:jsxRuntimeExports.jsx(TableBodyRoot,{className:clsx(R.root,E),as:C,ref:T,role:C===defaultComponent$2?null:"rowgroup",ownerState:P,..._})})});function getTableCellUtilityClass(o){return generateUtilityClass("MuiTableCell",o)}const tableCellClasses=generateUtilityClasses("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"]),useUtilityClasses$3=o=>{const{classes:u,variant:T,align:S,padding:E,size:C,stickyHeader:_}=o,P={root:["root",T,_&&"stickyHeader",S!=="inherit"&&`align${capitalize(S)}`,E!=="normal"&&`padding${capitalize(E)}`,`size${capitalize(C)}`]};return composeClasses(P,getTableCellUtilityClass,u)},TableCellRoot=styled("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,u[T.variant],u[`size${capitalize(T.size)}`],T.padding!=="normal"&&u[`padding${capitalize(T.padding)}`],T.align!=="inherit"&&u[`align${capitalize(T.align)}`],T.stickyHeader&&u.stickyHeader]}})(memoTheme(({theme:o})=>({...o.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:o.vars?`1px solid ${o.vars.palette.TableCell.border}`:`1px solid 199 ${o.palette.mode==="light"?o.lighten(o.alpha(o.palette.divider,1),.88):o.darken(o.alpha(o.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(o.vars||o).palette.text.primary,lineHeight:o.typography.pxToRem(24),fontWeight:o.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(o.vars||o).palette.text.primary}},{props:{variant:"footer"},style:{color:(o.vars||o).palette.text.secondary,lineHeight:o.typography.pxToRem(21),fontSize:o.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${tableCellClasses.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:u})=>u.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(o.vars||o).palette.background.default}}]}))),TableCell=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTableCell"}),{align:E="inherit",className:C,component:_,padding:P,scope:R,size:I,sortDirection:L,variant:j,...M}=S,D=reactExports.useContext(TableContext),F=reactExports.useContext(Tablelvl2Context),N=F&&F.variant==="head";let G;_?G=_:G=N?"th":"td";let B=R;G==="td"?B=void 0:!B&&N&&(B="col");const H=j||F&&F.variant,O={...S,align:E,component:G,padding:P||(D&&D.padding?D.padding:"normal"),size:I||(D&&D.size?D.size:"medium"),sortDirection:L,stickyHeader:H==="head"&&D&&D.stickyHeader,variant:H},V=useUtilityClasses$3(O);let U=null;return L&&(U=L==="asc"?"ascending":"descending"),jsxRuntimeExports.jsx(TableCellRoot,{as:G,ref:T,className:clsx(V.root,C),"aria-sort":U,scope:B,ownerState:O,...M})});function getTableHeadUtilityClass(o){return generateUtilityClass("MuiTableHead",o)}generateUtilityClasses("MuiTableHead",["root"]);const useUtilityClasses$2=o=>{const{classes:u}=o;return composeClasses({root:["root"]},getTableHeadUtilityClass,u)},TableHeadRoot=styled("thead",{name:"MuiTableHead",slot:"Root"})({display:"table-header-group"}),tablelvl2={variant:"head"},defaultComponent$1="thead",TableHead=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTableHead"}
199),{className:E,component:C=defaultComponent$1,..._}=S,P={...S,component:C},R=useUtilityClasses$2(P);return jsxRuntimeExports.jsx(Tablelvl2Context.Provider,{value:tablelvl2,children:jsxRuntimeExports.jsx(TableHeadRoot,{as:C,className:clsx(R.root,E),ref:T,role:C===defaultComponent$1?null:"rowgroup",ownerState:P,..._})})});function getTableRowUtilityClass(o){return generateUtilityClass("MuiTableRow",o)}const tableRowClasses=generateUtilityClasses("MuiTableRow",["root","selected","hover","head","footer"]),useUtilityClasses$1=o=>{const{classes:u,selected:T,hover:S,head:E,footer:C}=o;return composeClasses({root:["root",T&&"selected",S&&"hover",E&&"head",C&&"footer"]},getTableRowUtilityClass,u)},TableRowRoot=styled("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(o,u)=>{const{ownerState:T}=o;return[u.root,T.head&&u.head,T.footer&&u.footer]}})(memoTheme(({theme:o})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${tableRowClasses.hover}:hover`]:{backgroundColor:(o.vars||o).palette.action.hover},[`&.${tableRowClasses.selected}`]:{backgroundColor:o.alpha((o.vars||o).palette.primary.main,(o.vars||o).palette.action.selectedOpacity),"&:hover":{backgroundColor:o.alpha((o.vars||o).palette.primary.main,`${(o.vars||o).palette.action.selectedOpacity} + ${(o.vars||o).palette.action.hoverOpacity}`)}}}))),defaultComponent="tr",TableRow=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTableRow"}),{className:E,component:C=defaultComponent,hover:_=!1,selected:P=!1,...R}=S,I=reactExports.useContext(Tablelvl2Context),L={...S,component:C,hover:_,selected:P,head:I&&I.variant==="head",footer:I&&I.variant==="footer"},j=useUtilityClasses$1(L);return jsxRuntimeExports.jsx(TableRowRoot,{as:C,ref:T,className:clsx(j.root,E),role:C===defaultComponent?null:"row",ownerState:L,...R})});function getTextFieldUtilityClass(o){return generateUtilityClass("MuiTextField",o)}generateUtilityClasses("MuiTextField",["root"]);const variantComponent={standard:Input,filled:FilledInput,outlined:OutlinedInput},useUtilityClasses=o=>{const{classes:u}=o;return composeClasses({root:["root"]},getTextFieldUtilityClass,u)},TextFieldRoot=styled(FormControl,{name:"MuiTextField",slot:"Root"})({}),TextField=reactExports.forwardRef(function(u,T){const S=useDefaultProps({props:u,name:"MuiTextField"}),{autoComplete:E,autoFocus:C=!1,children:_,className:P,color:R="primary",defaultValue:I,disabled:L=!1,error:j=!1,FormHelperTextProps:M,fullWidth:D=!1,helperText:F,id:N,InputLabelProps:G,inputProps:B,InputProps:H,inputRef:O,label:V,maxRows:U,minRows:W,multiline:K=!1,name:Y,onBlur:ee,onChange:oe,onFocus:se,placeholder:Q,required:ie=!1,rows:ae,select:re=!1,SelectProps:J,slots:te={},slotProps:Z={},type:X,value:de,variant:he="outlined",...ne}=S,ue={...S,autoFocus:C,color:R,disabled:L,error:j,fullWidth:D,multiline:K,required:ie,select:re,variant:he},ce=useUtilityClasses(ue),fe=useId(N),ve=F&&fe?`${fe}-helper-text`:void 0,Te=V&&fe?`${fe}-label`:void 0,Se=variantComponent[he],ke={slots:te,slotProps:{input:H,inputLabel:G,htmlInput:B,formHelperText:M,select:J,...Z}},we={},Le=ke.slotProps.inputLabel;he==="outlined"&&(Le&&typeof Le.shrink<"u"&&(we.notched=Le.shrink),we.label=V),re&&((!J||!J.native)&&(we.id=void 0),we["aria-describedby"]=void 0);const[pe,Me]=useSlot("root",{elementType:TextFieldRoot,shouldForwardComponentProp:!0,externalForwardedProps:{...ke,...ne},ownerState:ue,className:clsx(ce.root,P),ref:T,additionalProps:{disabled:L,error:j,fullWidth:D,required:ie,color:R,variant:he}}),[Pe,Ue]=useSlot("input",{elementType:Se,externalForwardedProps:ke,additionalProps:we,ownerState:ue}),[qe,Ie]=useSlot("inputLabel",{elementType:InputLabel,externalForwardedProps:ke,ownerState:ue}),[Xe,et]=useSlot("htmlInput",{elementType:"input",externalForwardedProps:ke,ownerState:ue}),[tt,Ye]=useSlot("formHelperText",{elementType:FormHelperText,externalForwardedProps:ke,ownerState:ue}),[ze,Ze]=useSlot("select",{elementType:Select,externalForwardedProps:ke,ownerState:ue}),He=jsxRuntimeExports.jsx(Pe,{"aria-describedby":ve,autoComplete:E,autoFocus:C,defaultValue:I,fullWidth:D,multiline:K,name:Y,rows:ae,maxRows:U,minRows:W,type:X,value:de,id:fe,inputRef:O,onBlur:ee,onChange:oe,onFocus:se,placeholder:Q,inputProps:et,slots:{input:te.htmlInput?Xe:void 0},...Ue});return jsxRuntimeExports.jsxs(pe,{...Me,children:[V!=null&&V!==""&&jsxRuntimeExports.jsx(qe,{htmlFor:fe,id:Te,...Ie,children:V}),re?jsxRuntimeExports.jsx(ze,{"aria-describedby":ve,id:fe,labelId:Te,value:de,input:He,...Ze,children:_}):He,F&&jsxRuntimeExports.jsx(tt,{id:ve,...Ye,children:F})]})}),useMediaQuery=unstable_createUseMediaQuery({themeId:THEME_ID}),ADMIN_UID="7SrJShp1ImNVM6ZCVrXkl01XwKA3";function AdminRoute({children:o}){const{currentUser:u,loading:T}=useAuth();return T?jsxRuntimeExports.jsx(Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"100vh"},children:jsxRuntimeExports.jsx(CircularProgress,{})}):u?u.uid!==ADMIN_UID?jsxRuntimeExports.jsx(Navigate,{to:"/dashboard",replace:!0}):jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:o}):jsxRuntimeExports.jsx(Navigate,{to:"/login",replace:!0})}const LayoutGroupContext=reactExports.createContext({});function useConstant(o){const u=reactExports.useRef(null);return u.current===null&&(u.current=o()),u.current}const PresenceContext=reactExports.createContext(null),MotionConfigContext=reactExports.createContext({transformPagePoint:o=>o,isStatic:!1,reducedMotion:"never"});class PopChildMeasure extends reactExports.Component{getSnapshotBeforeUpdate(u){const T=this.props.childRef.current;if(T&&u.isPresent&&!this.props.isPresent){const S=this.props.sizeRef.current;S.height=T.offsetHeight||0,S.width=T.offsetWidth||0,S.top=T.offsetTop,S.left=T.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function PopChild({children:o,isPresent:u}){const T=reactExports.useId(),S=reactExports.useRef(null),E=reactExports.useRef({width:0,height:0,top:0,left:0}),{nonce:C}=reactExports.useContext(MotionConfigContext);return reactExports.useInsertionEffect(()=>{const{width:_,height:P,top:R,left:I}=E.current;if(u||!S.current||!_||!P)return;S.current.dataset.motionPopId=T;const L=document.createElement("style");return C&&(L.nonce=C),document.head.appendChild(L),L.sheet&&L.sheet.insertRule(` 200 [data-motion-pop-id="${T}"] { 201 position: absolute !important; 202 width: ${_}px !important; 203 height: ${P}px !important; 204 top: ${R}px !important; 205 left: ${I}px !important; 206 } 207 `),()=>{document.head.removeChild(L)}},[u]),jsxRuntimeExports.jsx(PopChildMeasure,{isPresent:u,childRef:S,sizeRef:E,children:reactExports.cloneElement(o,{ref:S})})}const PresenceChild=({children:o,initial:u,isPresent:T,onExitComplete:S,custom:E,presenceAffectsLayout:C,mode:_})=>{const P=useConstant(newChildrenMap),R=reactExports.useId(),I=reactExports.useCallback(j=>{P.set(j,!0);for(const M of P.values())if(!M)return;S&&S()},[P,S]),L=reactExports.useMemo(()=>({id:R,initial:u,isPresent:T,custom:E,onExitComplete:I,register:j=>(P.set(j,!1),()=>P.delete(j))}),C?[Math.random(),I]:[T,I]);return reactExports.useMemo(()=>{P.forEach((j,M)=>P.set(M,!1))},[T]),reactExports.useEffect(()=>{!T&&!P.size&&S&&S()},[T]),_==="popLayout"&&(o=jsxRuntimeExports.jsx(PopChild,{isPresent:T,children:o})),jsxRuntimeExports.jsx(PresenceContext.Provider,{value:L,children:o})};function newChildrenMap(){return new Map}function usePresence(o=!0){const u=reactExports.useContext(PresenceContext);if(u===null)return[!0,null];const{isPresent:T,onExitComplete:S,register:E}=u,C=reactExports.useId();reactExports.useEffect(()=>{o&&E(C)},[o]);const _=reactExports.useCallback(()=>o&&S&&S(C),[C,S,o]);return!T&&S?[!1,_]:[!0]}const getChildKey=o=>o.key||"";function onlyElements(o){const u=[];
vendor: 45,758 bytes, line 207
207return reactExports.Children.forEach(o,T=>{reactExports.isValidElement(T)&&u.push(T)}),u}const isBrowser=typeof window<"u",useIsomorphicLayoutEffect=isBrowser?reactExports.useLayoutEffect:reactExports.useEffect,AnimatePresence=({children:o,custom:u,initial:T=!0,onExitComplete:S,presenceAffectsLayout:E=!0,mode:C="sync",propagate:_=!1})=>{const[P,R]=usePresence(_),I=reactExports.useMemo(()=>onlyElements(o),[o]),L=_&&!P?[]:I.map(getChildKey),j=reactExports.useRef(!0),M=reactExports.useRef(I),D=useConstant(()=>new Map),[F,N]=reactExports.useState(I),[G,B]=reactExports.useState(I);useIsomorphicLayoutEffect(()=>{j.current=!1,M.current=I;for(let V=0;V<G.length;V++){const U=getChildKey(G[V]);L.includes(U)?D.delete(U):D.get(U)!==!0&&D.set(U,!1)}},[G,L.length,L.join("-")]);const H=[];if(I!==F){let V=[...I];for(let U=0;U<G.length;U++){const W=G[U],K=getChildKey(W);L.includes(K)||(V.splice(U,0,W),H.push(W))}C==="wait"&&H.length&&(V=H),B(onlyElements(V)),N(I);return}const{forceRender:O}=reactExports.useContext(LayoutGroupContext);return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:G.map(V=>{const U=getChildKey(V),W=_&&!P?!1:I===G||L.includes(U),K=()=>{if(D.has(U))D.set(U,!0);else return;let Y=!0;D.forEach(ee=>{ee||(Y=!1)}),Y&&(O==null||O(),B(M.current),_&&(R==null||R()),S&&S())};return jsxRuntimeExports.jsx(PresenceChild,{isPresent:W,initial:!j.current||T?void 0:!1,custom:W?void 0:u,presenceAffectsLayout:E,mode:C,onExitComplete:W?void 0:K,children:V},U)})})},noop$1=o=>o;let invariant=noop$1;function memo(o){let u;return()=>(u===void 0&&(u=o()),u)}const progress=(o,u,T)=>{const S=u-o;return S===0?1:(T-o)/S},secondsToMilliseconds=o=>o*1e3,millisecondsToSeconds=o=>o/1e3,MotionGlobalConfig={useManualTiming:!1};function createRenderStep(o){let u=new Set,T=new Set,S=!1,E=!1;const C=new WeakSet;let _={delta:0,timestamp:0,isProcessing:!1};function P(I){C.has(I)&&(R.schedule(I),o()),I(_)}const R={schedule:(I,L=!1,j=!1)=>{const D=j&&S?u:T;return L&&C.add(I),D.has(I)||D.add(I),I},cancel:I=>{T.delete(I),C.delete(I)},process:I=>{if(_=I,S){E=!0;return}S=!0,[u,T]=[T,u],u.forEach(P),u.clear(),S=!1,E&&(E=!1,R.process(I))}};return R}const stepsOrder=["read","resolveKeyframes","update","preRender","render","postRender"],maxElapsed=40;function createRenderBatcher(o,u){let T=!1,S=!0;const E={delta:0,timestamp:0,isProcessing:!1},C=()=>T=!0,_=stepsOrder.reduce((B,H)=>(B[H]=createRenderStep(C),B),{}),{read:P,resolveKeyframes:R,update:I,preRender:L,render:j,postRender:M}=_,D=()=>{const B=performance.now();T=!1,E.delta=S?1e3/60:Math.max(Math.min(B-E.timestamp,maxElapsed),1),E.timestamp=B,E.isProcessing=!0,P.process(E),R.process(E),I.process(E),L.process(E),j.process(E),M.process(E),E.isProcessing=!1,T&&u&&(S=!1,o(D))},F=()=>{T=!0,S=!0,E.isProcessing||o(D)};return{schedule:stepsOrder.reduce((B,H)=>{const O=_[H];return B[H]=(V,U=!1,W=!1)=>(T||F(),O.schedule(V,U,W)),B},{}),cancel:B=>{for(let H=0;H<stepsOrder.length;H++)_[stepsOrder[H]].cancel(B)},state:E,steps:_}}const{schedule:frame,cancel:cancelFrame,state:frameData,steps:frameSteps}=createRenderBatcher(typeof requestAnimationFrame<"u"?requestAnimationFrame:noop$1,!0),LazyContext=reactExports.createContext({strict:!1}),featureProps={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},featureDefinitions={};for(const o in featureProps)featureDefinitions[o]={isEnabled:u=>featureProps[o].some(T=>!!u[T])};function loadFeatures(o){for(const u in o)featureDefinitions[u]={...featureDefinitions[u],...o[u]}}const validMotionProps=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function isValidMotionProp(o){return o.startsWith("while")||o.startsWith("drag")&&o!=="draggable"||o.startsWith("layout")||o.startsWith("onTap")||o.startsWith("onPan")||o.startsWith("onLayout")||validMotionProps.has(o)}let shouldForward=o=>!isValidMotionProp(o);function loadExternalIsValidProp(o){o&&(shouldForward=u=>u.startsWith("on")?!isValidMotionProp(u):o(u))}try{loadExternalIsValidProp(require("@emotion/is-prop-valid").default)}catch{}function filterProps(o,u,T){const S={};for(const E in o)E==="values"&&typeof o.values=="object"||(shouldForward(E)||T===!0&&isValidMotionProp(E)||!u&&!isValidMotionProp(E)||o.draggable&&E.startsWith("onDrag"))&&(S[E]=o[E]);return S}function createDOMMotionComponentProxy(o){if(typeof Proxy>"u")return o;const u=new Map,T=(...S)=>o(...S);return new Proxy(T,{get:(S,E)=>E==="create"?o:(u.has(E)||u.set(E,o(E)),u.get(E))})}const MotionContext=reactExports.createContext({});function isVariantLabel(o){return typeof o=="string"||Array.isArray(o)}function isAnimationControls(o){return o!==null&&typeof o=="object"&&typeof o.start=="function"}const variantPriorityOrder=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],variantProps=["initial",...variantPriorityOrder];function isControllingVariants(o){return isAnimationControls(o.animate)||variantProps.some(u=>isVariantLabel(o[u]))}function isVariantNode(o){return!!(isControllingVariants(o)||o.variants)}function getCurrentTreeVariants(o,u){if(isControllingVariants(o)){const{initial:T,animate:S}=o;return{initial:T===!1||isVariantLabel(T)?T:void 0,animate:isVariantLabel(S)?S:void 0}}return o.inherit!==!1?u:{}}function useCreateMotionContext(o){const{initial:u,animate:T}=getCurrentTreeVariants(o,reactExports.useContext(MotionContext));return reactExports.useMemo(()=>({initial:u,animate:T}),[variantLabelsAsDependency(u),variantLabelsAsDependency(T)])}function variantLabelsAsDependency(o){return Array.isArray(o)?o.join(" "):o}const motionComponentSymbol=Symbol.for("motionComponentSymbol");function isRefObject(o){return o&&typeof o=="object"&&Object.prototype.hasOwnProperty.call(o,"current")}function useMotionRef(o,u,T){return reactExports.useCallback(S=>{S&&o.onMount&&o.onMount(S),u&&(S?u.mount(S):u.unmount()),T&&(typeof T=="function"?T(S):isRefObject(T)&&(T.current=S))},[u])}const camelToDash=o=>o.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),optimizedAppearDataId="framerAppearId",optimizedAppearDataAttribute="data-"+camelToDash(optimizedAppearDataId),{schedule:microtask}=createRenderBatcher(queueMicrotask,!1),SwitchLayoutGroupContext=reactExports.createContext({});function useVisualElement(o,u,T,S,E){var C,_;const{visualElement:P}=reactExports.useContext(MotionContext),R=reactExports.useContext(LazyContext),I=reactExports.useContext(PresenceContext),L=reactExports.useContext(MotionConfigContext).reducedMotion,j=reactExports.useRef(null);S=S||R.renderer,!j.current&&S&&(j.current=S(o,{visualState:u,parent:P,props:T,presenceContext:I,blockInitialAnimation:I?I.initial===!1:!1,reducedMotionConfig:L}));const M=j.current,D=reactExports.useContext(SwitchLayoutGroupContext);M&&!M.projection&&E&&(M.type==="html"||M.type==="svg")&&createProjectionNode$1(j.current,T,E,D);const F=reactExports.useRef(!1);reactExports.useInsertionEffect(()=>{M&&F.current&&M.update(T,I)});const N=T[optimizedAppearDataAttribute],G=reactExports.useRef(!!N&&!(!((C=window.MotionHandoffIsComplete)===null||C===void 0)&&C.call(window,N))&&((_=window.MotionHasOptimisedAnimation)===null||_===void 0?void 0:_.call(window,N)));return useIsomorphicLayoutEffect(()=>{M&&(F.current=!0,window.MotionIsMounted=!0,M.updateFeatures(),microtask.render(M.render),G.current&&M.animationState&&M.animationState.animateChanges())}),reactExports.useEffect(()=>{M&&(!G.current&&M.animationState&&M.animationState.animateChanges(),G.current&&(queueMicrotask(()=>{var B;(B=window.MotionHandoffMarkAsComplete)===null||B===void 0||B.call(window,N)}),G.current=!1))}),M}function createProjectionNode$1(o,u,T,S){const{layoutId:E,layout:C,drag:_,dragConstraints:P,layoutScroll:R,layoutRoot:I}=u;o.projection=new T(o.latestValues,u["data-framer-portal-id"]?void 0:getClosestProjectingNode(o.parent)),o.projection.setOptions({layoutId:E,layout:C,alwaysMeasureLayout:!!_||P&&isRefObject(P),visualElement:o,animationType:typeof C=="string"?C:"both",initialPromotionConfig:S,layoutScroll:R,layoutRoot:I})}function getClosestProjectingNode(o){if(o)return o.options.allowProjection!==!1?o.projection:getClosestProjectingNode(o.parent)}function createRendererMotionComponent({preloadedFeatures:o,createVisualElement:u,useRender:T,useVisualState:S,Component:E}){var C,_;o&&loadFeatures(o);function P(I,L){let j;const M={...reactExports.useContext(MotionConfigContext),...I,layoutId:useLayoutId(I)},{isStatic:D}=M,F=useCreateMotionContext(I),N=S(I,D);if(!D&&isBrowser){useStrictMode();const G=getProjectionFunctionality(M);j=G.MeasureLayout,F.visualElement=useVisualElement(E,N,M,u,G.ProjectionNode)}return jsxRuntimeExports.jsxs(MotionContext.Provider,{value:F,children:[j&&F.visualElement?jsxRuntimeExports.jsx(j,{visualElement:F.visualElement,...M}):null,T(E,I,useMotionRef(N,F.visualElement,L),N,D,F.visualElement)]})}P.displayName=`motion.${typeof E=="string"?E:`create(${(_=(C=E.displayName)!==null&&C!==void 0?C:E.name)!==null&&_!==void 0?_:""})`}`;const R=reactExports.forwardRef(P);return R[motionComponentSymbol]=E,R}function useLayoutId({layoutId:o}){const u=reactExports.useContext(LayoutGroupContext).id;return u&&o!==void 0?u+"-"+o:o}function useStrictMode(o,u){reactExports.useContext(LazyContext).strict}function getProjectionFunctionality(o){const{drag:u,layout:T}=featureDefinitions;if(!u&&!T)return{};const S={...u,...T};return{MeasureLayout:u!=null&&u.isEnabled(o)||T!=null&&T.isEnabled(o)?S.MeasureLayout:void 0,ProjectionNode:S.ProjectionNode}}const lowercaseSVGElements=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function isSVGComponent(o){return typeof o!="string"||o.includes("-")?!1:!!(lowercaseSVGElements.indexOf(o)>-1||/[A-Z]/u.test(o))}function getValueState(o){const u=[{},{}];return o==null||o.values.forEach((T,S)=>{u[0][S]=T.get(),u[1][S]=T.getVelocity()}),u}function resolveVariantFromProps(o,u,T,S){if(typeof u=="function"){const[E,C]=getValueState(S);u=u(T!==void 0?T:o.custom,E,C)}if(typeof u=="string"&&(u=o.variants&&o.variants[u]),typeof u=="function"){const[E,C]=getValueState(S);u=u(T!==void 0?T:o.custom,E,C)}return u}const isKeyframesTarget=o=>Array.isArray(o),isCustomValue=o=>!!(o&&typeof o=="object"&&o.mix&&o.toValue),resolveFinalValueInKeyframes=o=>isKeyframesTarget(o)?o[o.length-1]||0:o,isMotionValue=o=>!!(o&&o.getVelocity);function resolveMotionValue(o){const u=isMotionValue(o)?o.get():o;return isCustomValue(u)?u.toValue():u}function makeState({scrapeMotionValuesFromProps:o,createRenderState:u,onUpdate:T},S,E,C){const _={latestValues:makeLatestValues(S,E,C,o),renderState:u()};return T&&(_.onMount=P=>T({props:S,current:P,..._}),_.onUpdate=P=>T(P)),_}const makeUseVisualState=o=>(u,T)=>{const S=reactExports.useContext(MotionContext),E=reactExports.useContext(PresenceContext),C=()=>makeState(o,u,S,E);return T?C():useConstant(C)};function makeLatestValues(o,u,T,S){const E={},C=S(o,{});for(const M in C)E[M]=resolveMotionValue(C[M]);let{initial:_,animate:P}=o;const R=isControllingVariants(o),I=isVariantNode(o);u&&I&&!R&&o.inherit!==!1&&(_===void 0&&(_=u.initial),P===void 0&&(P=u.animate));let L=T?T.initial===!1:!1;L=L||_===!1;const j=L?P:_;if(j&&typeof j!="boolean"&&!isAnimationControls(j)){const M=Array.isArray(j)?j:[j];for(let D=0;D<M.length;D++){const F=resolveVariantFromProps(o,M[D]);if(F){const{transitionEnd:N,transition:G,...B}=F;for(const H in B){let O=B[H];if(Array.isArray(O)){const V=L?O.length-1:0;O=O[V]}O!==null&&(E[H]=O)}for(const H in N)E[H]=N[H]}}}return E}const transformPropOrder=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],transformProps=new Set(transformPropOrder),checkStringStartsWith=o=>u=>typeof u=="string"&&u.startsWith(o),isCSSVariableName=checkStringStartsWith("--"),startsAsVariableToken=checkStringStartsWith("var(--"),isCSSVariableToken=o=>startsAsVariableToken(o)?singleCssVariableRegex.test(o.split("/*")[0].trim()):!1,singleCssVariableRegex=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,getValueAsType=(o,u)=>u&&typeof o=="number"?u.transform(o):o,clamp=(o,u,T)=>T>u?u:T<o?o:T,number={test:o=>typeof o=="number",parse:parseFloat,transform:o=>o},alpha={...number,transform:o=>clamp(0,1,o)},scale={...number,default:1},createUnitType=o=>({test:u=>typeof u=="string"&&u.endsWith(o)&&u.split(" ").length===1,parse:parseFloat,transform:u=>`${u}${o}`}),degrees=createUnitType("deg"),percent=createUnitType("%"),px=createUnitType("px"),vh=createUnitType("vh"),vw=createUnitType("vw"),progressPercentage={...percent,parse:o=>percent.parse(o)/100,transform:o=>percent.transform(o*100)},browserNumberValueTypes={borderWidth:px,borderTopWidth:px,borderRightWidth:px,borderBottomWidth:px,borderLeftWidth:px,borderRadius:px,radius:px,borderTopLeftRadius:px,borderTopRightRadius:px,borderBottomRightRadius:px,borderBottomLeftRadius:px,width:px,maxWidth:px,height:px,maxHeight:px,top:px,right:px,bottom:px,left:px,padding:px,paddingTop:px,paddingRight:px,paddingBottom:px,paddingLeft:px,margin:px,marginTop:px,marginRight:px,marginBottom:px,marginLeft:px,backgroundPositionX:px,backgroundPositionY:px},transformValueTypes={rotate:degrees,rotateX:degrees,rotateY:degrees,rotateZ:degrees,scale,scaleX:scale,scaleY:scale,scaleZ:scale,skew:degrees,skewX:degrees,skewY:degrees,distance:px,translateX:px,translateY:px,translateZ:px,x:px,y:px,z:px,perspective:px,transformPerspective:px,opacity:alpha,originX:progressPercentage,originY:progressPercentage,originZ:px},int={...number,transform:Math.round},numberValueTypes={...browserNumberValueTypes,...transformValueTypes,zIndex:int,size:px,fillOpacity:alpha,strokeOpacity:alpha,numOctaves:int},translateAlias={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},numTransforms=transformPropOrder.length;function buildTransform(o,u,T){let S="",E=!0;for(let C=0;C<numTransforms;C++){const _=transformPropOrder[C],P=o[_];if(P===void 0)continue;let R=!0;if(typeof P=="number"?R=P===(_.startsWith("scale")?1:0):R=parseFloat(P)===0,!R||T){const I=getValueAsType(P,numberValueTypes[_]);if(!R){E=!1;const L=translateAlias[_]||_;S+=`${L}(${I}) `}T&&(u[_]=I)}}return S=S.trim(),T?S=T(u,E?"":S):E&&(S="none"),S}function buildHTMLStyles(o,u,T){const{style:S,vars:E,transformOrigin:C}=o;let _=!1,P=!1;for(const R in u){const I=u[R];if(transformProps.has(R)){_=!0;continue}else if(isCSSVariableName(R)){E[R]=I;continue}else{const L=getValueAsType(I,numberValueTypes[R]);R.startsWith("origin")?(P=!0,C[R]=L):S[R]=L}}if(u.transform||(_||T?S.transform=buildTransform(u,o.transform,T):S.transform&&(S.transform="none")),P){const{originX:R="50%",originY:I="50%",originZ:L=0}=C;S.transformOrigin=`${R} ${I} ${L}`}}const dashKeys={offset:"stroke-dashoffset",array:"stroke-dasharray"},camelKeys={offset:"strokeDashoffset",array:"strokeDasharray"};function buildSVGPath(o,u,T=1,S=0,E=!0){o.pathLength=1;const C=E?dashKeys:camelKeys;o[C.offset]=px.transform(-S);const _=px.transform(u),P=px.transform(T);o[C.array]=`${_} ${P}`}function calcOrigin$1(o,u,T){return typeof o=="string"?o:px.transform(u+T*o)}function calcSVGTransformOrigin(o,u,T){const S=calcOrigin$1(u,o.x,o.width),E=calcOrigin$1(T,o.y,o.height);return`${S} ${E}`}function buildSVGAttrs(o,{attrX:u,attrY:T,attrScale:S,originX:E,originY:C,pathLength:_,pathSpacing:P=1,pathOffset:R=0,...I},L,j){if(buildHTMLStyles(o,I,j),L){o.style.viewBox&&(o.attrs.viewBox=o.style.viewBox);return}o.attrs=o.style,o.style={};const{attrs:M,style:D,dimensions:F}=o;M.transform&&(F&&(D.transform=M.transform),delete M.transform),F&&(E!==void 0||C!==void 0||D.transform)&&(D.transformOrigin=calcSVGTransformOrigin(F,E!==void 0?E:.5,C!==void 0?C:.5)),u!==void 0&&(M.x=u),T!==void 0&&(M.y=T),S!==void 0&&(M.scale=S),_!==void 0&&buildSVGPath(M,_,P,R,!1)}const createHtmlRenderState=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),createSvgRenderState=()=>({...createHtmlRenderState(),attrs:{}}),isSVGTag=o=>typeof o=="string"&&o.toLowerCase()==="svg";function renderHTML(o,{style:u,vars:T},S,E){Object.assign(o.style,u,E&&E.getProjectionStyles(S));for(const C in T)o.style.setProperty(C,T[C])}const camelCaseAttributes=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function renderSVG(o,u,T,S){renderHTML(o,u,void 0,S);for(const E in u.attrs)o.setAttribute(camelCaseAttributes.has(E)?E:camelToDash(E),u.attrs[E])}const scaleCorrectors={};function addScaleCorrector(o){Object.assign(scaleCorrectors,o)}function isForcedMotionValue(o,{layout:u,layoutId:T}){return transformProps.has(o)||o.startsWith("origin")||(u||T!==void 0)&&(!!scaleCorrectors[o]||o==="opacity")}function scrapeMotionValuesFromProps$1(o,u,T){var S;const{style:E}=o,C={};for(const _ in E)(isMotionValue(E[_])||u.style&&isMotionValue(u.style[_])||isForcedMotionValue(_,o)||((S=T==null?void 0:T.getValue(_))===null||S===void 0?void 0:S.liveStyle)!==void 0)&&(C[_]=E[_]);return C}function scrapeMotionValuesFromProps(o,u,T){const S=scrapeMotionValuesFromProps$1(o,u,T);for(const E in o)if(isMotionValue(o[E])||isMotionValue(u[E])){const C=transformPropOrder.indexOf(E)!==-1?"attr"+E.charAt(0).toUpperCase()+E.substring(1):E;S[C]=o[E]}return S}function updateSVGDimensions(o,u){try{u.dimensions=typeof o.getBBox=="function"?o.getBBox():o.getBoundingClientRect()}catch{u.dimensions={x:0,y:0,width:0,height:0}}}const layoutProps=["x","y","width","height","cx","cy","r"],svgMotionConfig={useVisualState:makeUseVisualState({scrapeMotionValuesFromProps,createRenderState:createSvgRenderState,onUpdate:({props:o,prevProps:u,current:T,renderState:S,latestValues:E})=>{if(!T)return;let C=!!o.drag;if(!C){for(const P in E)if(transformProps.has(P)){C=!0;break}}if(!C)return;let _=!u;if(u)for(let P=0;P<layoutProps.length;P++){const R=layoutProps[P];o[R]!==u[R]&&(_=!0)}_&&frame.read(()=>{updateSVGDimensions(T,S),frame.render(()=>{buildSVGAttrs(S,E,isSVGTag(T.tagName),o.transformTemplate),renderSVG(T,S)})})}})},htmlMotionConfig={useVisualState:makeUseVisualState({scrapeMotionValuesFromProps:scrapeMotionValuesFromProps$1,createRenderState:createHtmlRenderState})};function copyRawValuesOnly(o,u,T){for(const S in u)!isMotionValue(u[S])&&!isForcedMotionValue(S,T)&&(o[S]=u[S])}function useInitialMotionValues({transformTemplate:o},u){return reactExports.useMemo(()=>{const T=createHtmlRenderState();return buildHTMLStyles(T,u,o),Object.assign({},T.vars,T.style)},[u])}function useStyle(o,u){const T=o.style||{},S={};return copyRawValuesOnly(S,T,o),Object.assign(S,useInitialMotionValues(o,u)),S}function useHTMLProps(o,u){const T={},S=useStyle(o,u);return o.drag&&o.dragListener!==!1&&(T.draggable=!1,S.userSelect=S.WebkitUserSelect=S.WebkitTouchCallout="none",S.touchAction=o.drag===!0?"none":`pan-${o.drag==="x"?"y":"x"}`),o.tabIndex===void 0&&(o.onTap||o.onTapStart||o.whileTap)&&(T.tabIndex=0),T.style=S,T}function useSVGProps(o,u,T,S){const E=reactExports.useMemo(()=>{const C=createSvgRenderState();return buildSVGAttrs(C,u,isSVGTag(S),o.transformTemplate),{...C.attrs,style:{...C.style}}},[u]);if(o.style){const C={};copyRawValuesOnly(C,o.style,o),E.style={...C,...E.style}}return E}function createUseRender(o=!1){return(T,S,E,{latestValues:C},_)=>{const R=(isSVGComponent(T)?useSVGProps:useHTMLProps)(S,C,_,T),I=filterProps(S,typeof T=="string",o),L=T!==reactExports.Fragment?{...I,...R,ref:E}:{},{children:j}=S,M=reactExports.useMemo(()=>isMotionValue(j)?j.get():j,[j]);return reactExports.createElement(T,{...L,children:M})}}function createMotionComponentFactory(o,u){return function(S,{forwardMotionProps:E}={forwardMotionProps:!1}){const _={...isSVGComponent(S)?svgMotionConfig:htmlMotionConfig,preloadedFeatures:o,useRender:createUseRender(E),createVisualElement:u,Component:S};return createRendererMotionComponent(_)}}function shallowCompare(o,u){if(!Array.isArray(u))return!1;const T=u.length;if(T!==o.length)return!1;for(let S=0;S<T;S++)if(u[S]!==o[S])return!1;return!0}function resolveVariant(o,u,T){const S=o.getProps();return resolveVariantFromProps(S,u,T!==void 0?T:S.custom,o)}const supportsScrollTimeline=memo(()=>window.ScrollTimeline!==void 0);class BaseGroupPlaybackControls{constructor(u){this.stop=()=>this.runAll("stop"),this.animations=u.filter(Boolean)}get finished(){return Promise.all(this.animations.map(u=>"finished"in u?u.finished:u))}getAll(u){return this.animations[0][u]}setAll(u,T){for(let S=0;S<this.animations.length;S++)this.animations[S][u]=T}attachTimeline(u,T){const S=this.animations.map(E=>{if(supportsScrollTimeline()&&E.attachTimeline)return E.attachTimeline(u);if(typeof T=="function")return T(E)});return()=>{S.forEach((E,C)=>{E&&E(),this.animations[C].stop()})}}get time(){return this.getAll("time")}set time(u){this.setAll("time",u)}get speed(){return this.getAll("speed")}set speed(u){this.setAll("speed",u)}get startTime(){return this.getAll("startTime")}get duration(){let u=0;for(let T=0;T<this.animations.length;T++)u=Math.max(u,this.animations[T].duration);return u}runAll(u){this.animations.forEach(T=>T[u]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class GroupPlaybackControls extends BaseGroupPlaybackControls{then(u,T){return Promise.all(this.animations).then(u).catch(T)}}function getValueTransition(o,u){return o?o[u]||o.default||o:void 0}const maxGeneratorDuration=2e4;function calcGeneratorDuration(o){let u=0;const T=50;let S=o.next(u);for(;!S.done&&u<maxGeneratorDuration;)u+=T,S=o.next(u);return u>=maxGeneratorDuration?1/0:u}function isGenerator(o){return typeof o=="function"}function attachTimeline(o,u){o.timeline=u,o.onfinish=null}const isBezierDefinition=o=>Array.isArray(o)&&typeof o[0]=="number",supportsFlags={linearEasing:void 0};function memoSupports(o,u){const T=memo(o);return()=>{var S;return(S=supportsFlags[u])!==null&&S!==void 0?S:T()}}const supportsLinearEasing=memoSupports(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),generateLinearEasing=(o,u,T=10)=>{let S="";const E=Math.max(Math.round(u/T),2);for(let C=0;C<E;C++)S+=o(progress(0,E-1,C))+", ";return`linear(${S.substring(0,S.length-2)})`};function isWaapiSupportedEasing(o){return!!(typeof o=="function"&&supportsLinearEasing()||!o||typeof o=="string"&&(o in supportedWaapiEasing||supportsLinearEasing())||isBezierDefinition(o)||Array.isArray(o)&&o.every(isWaapiSupportedEasing))}const cubicBezierAsString=([o,u,T,S])=>`cubic-bezier(${o}, ${u}, ${T}, ${S})`,supportedWaapiEasing={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:cubicBezierAsString([0,.65,.55,1]),circOut:cubicBezierAsString([.55,0,1,.45]),backIn:cubicBezierAsString([.31,.01,.66,-.59]),backOut:cubicBezierAsString([.33,1.53,.69,.99])};function mapEasingToNativeEasing(o,u){if(o)return typeof o=="function"&&supportsLinearEasing()?generateLinearEasing(o,u):isBezierDefinition(o)?cubicBezierAsString(o):Array.isArray(o)?o.map(T=>mapEasingToNativeEasing(T,u)||supportedWaapiEasing.easeOut):supportedWaapiEasing[o]}const isDragging={x:!1,y:!1};function isDragActive(){return isDragging.x||isDragging.y}function resolveElements(o,u,T){var S;if(o instanceof Element)return[o];if(typeof o=="string"){let E=document;const C=(S=void 0)!==null&&S!==void 0?S:E.querySelectorAll(o);return C?Array.from(C):[]}return Array.from(o)}function setupGesture(o,u){const T=resolveElements(o),S=new AbortController,E={passive:!0,...u,signal:S.signal};return[T,E,()=>S.abort()]}function filterEvents$1(o){return u=>{u.pointerType==="touch"||isDragActive()||o(u)}}function hover(o,u,T={}){const[S,E,C]=setupGesture(o,T),_=filterEvents$1(P=>{const{target:R}=P,I=u(P);if(typeof I!="function"||!R)return;const L=filterEvents$1(j=>{I(j),R.removeEventListener("pointerleave",L)});R.addEventListener("pointerleave",L,E)});return S.forEach(P=>{P.addEventListener("pointerenter",_,E)}),C}const isNodeOrChild=(o,u)=>u?o===u?!0:isNodeOrChild(o,u.parentElement):!1,isPrimaryPointer=o=>o.pointerType==="mouse"?typeof o.button!="number"||o.button<=0:o.isPrimary!==!1,focusableElements=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function isElementKeyboardAccessible(o){return focusableElements.has(o.tagName)||o.tabIndex!==-1}const isPressing=new WeakSet;function filterEvents(o){return u=>{u.key==="Enter"&&o(u)}}function firePointerEvent(o,u){o.dispatchEvent(new PointerEvent("pointer"+u,{isPrimary:!0,bubbles:!0}))}const enableKeyboardPress=(o,u)=>{const T=o.currentTarget;if(!T)return;const S=filterEvents(()=>{if(isPressing.has(T))return;firePointerEvent(T,"down");const E=filterEvents(()=>{firePointerEvent(T,"up")}),C=()=>firePointerEvent(T,"cancel");T.addEventListener("keyup",E,u),T.addEventListener("blur",C,u)});T.addEventListener("keydown",S,u),T.addEventListener("blur",()=>T.removeEventListener("keydown",S),u)};function isValidPressEvent(o){return isPrimaryPointer(o)&&!isDragActive()}function press(o,u,T={}){const[S,E,C]=setupGesture(o,T),_=P=>{const R=P.currentTarget;if(!isValidPressEvent(P)||isPressing.has(R))return;isPressing.add(R);const I=u(P),L=(D,F)=>{window.removeEventListener("pointerup",j),window.removeEventListener("pointercancel",M),!(!isValidPressEvent(D)||!isPressing.has(R))&&(isPressing.delete(R),typeof I=="function"&&I(D,{success:F}))},j=D=>{L(D,T.useGlobalTarget||isNodeOrChild(R,D.target))},M=D=>{L(D,!1)};window.addEventListener("pointerup",j,E),window.addEventListener("pointercancel",M,E)};return S.forEach(P=>{!isElementKeyboardAccessible(P)&&P.getAttribute("tabindex")===null&&(P.tabIndex=0),(T.useGlobalTarget?window:P).addEventListener("pointerdown",_,E),P.addEventListener("focus",I=>enableKeyboardPress(I,E),E)}),C}function setDragLock(o){return o==="x"||o==="y"?isDragging[o]?null:(isDragging[o]=!0,()=>{isDragging[o]=!1}):isDragging.x||isDragging.y?null:(isDragging.x=isDragging.y=!0,()=>{isDragging.x=isDragging.y=!1})}const positionalKeys=new Set(["width","height","top","left","right","bottom",...transformPropOrder]);let now;function clearTime(){now=void 0}const time={now:()=>(now===void 0&&time.set(frameData.isProcessing||MotionGlobalConfig.useManualTiming?frameData.timestamp:performance.now()),now),set:o=>{now=o,queueMicrotask(clearTime)}};function addUniqueItem(o,u){o.indexOf(u)===-1&&o.push(u)}function removeItem(o,u){const T=o.indexOf(u);T>-1&&o.splice(T,1)}function moveItem([...o],u,T){const S=u<0?o.length+u:u;if(S>=0&&S<o.length){const E=T<0?o.length+T:T,[C]=o.splice(u,1);o.splice(E,0,C)}return o}class SubscriptionManager{constructor(){this.subscriptions=[]}add(u){return addUniqueItem(this.subscriptions,u),()=>removeItem(this.subscriptions,u)}notify(u,T,S){const E=this.subscriptions.length;if(E)if(E===1)this.subscriptions[0](u,T,S);else for(let C=0;C<E;C++){const _=this.subscriptions[C];_&&_(u,T,S)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function velocityPerSecond(o,u){return u?o*(1e3/u):0}const MAX_VELOCITY_DELTA=30,isFloat=o=>!isNaN(parseFloat(o)),collectMotionValues={current:void 0};class MotionValue{constructor(u,T={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(S,E=!0)=>{const C=time.now();this.updatedAt!==C&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(S),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),E&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(u),this.owner=T.owner}setCurrent(u){this.current=u,this.updatedAt=time.now(),this.canTrackVelocity===null&&u!==void 0&&(this.canTrackVelocity=isFloat(this.current))}setPrevFrameValue(u=this.current){this.prevFrameValue=u,this.prevUpdatedAt=this.updatedAt}onChange(u){return this.on("change",u)}on(u,T){this.events[u]||(this.events[u]=new SubscriptionManager);const S=this.events[u].add(T);return u==="change"?()=>{S(),frame.read(()=>{this.events.change.getSize()||this.stop()})}:S}clearListeners(){for(const u in this.events)this.events[u].clear()}attach(u,T){this.passiveEffect=u,this.stopPassiveEffect=T}set(u,T=!0){!T||!this.passiveEffect?this.updateAndNotify(u,T):this.passiveEffect(u,this.updateAndNotify)}setWithVelocity(u,T,S){this.set(T),this.prev=void 0,this.prevFrameValue=u,this.prevUpdatedAt=this.updatedAt-S}jump(u,T=!0){this.updateAndNotify(u),this.prev=u,this.prevUpdatedAt=this.prevFrameValue=void 0,T&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return collectMotionValues.current&&collectMotionValues.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const u=time.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||u-this.updatedAt>MAX_VELOCITY_DELTA)return 0;const T=Math.min(this.updatedAt-this.prevUpdatedAt,MAX_VELOCITY_DELTA);return velocityPerSecond(parseFloat(this.current)-parseFloat(this.prevFrameValue),T)}start(u){return this.stop(),new Promise(T=>{this.hasAnimated=!0,this.animation=u(T),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function motionValue(o,u){return new MotionValue(o,u)}function setMotionValue(o,u,T){o.hasValue(u)?o.getValue(u).set(T):o.addValue(u,motionValue(T))}function setTarget(o,u){const T=resolveVariant(o,u);let{transitionEnd:S={},transition:E={},...C}=T||{};C={...C,...S};for(const _ in C){const P=resolveFinalValueInKeyframes(C[_]);setMotionValue(o,_,P)}}function isWillChangeMotionValue(o){return!!(isMotionValue(o)&&o.add)}function addValueToWillChange(o,u){const T=o.getValue("willChange");if(isWillChangeMotionValue(T))return T.add(u)}function getOptimisedAppearId(o){return o.props[optimizedAppearDataAttribute]}const calcBezier=(o,u,T)=>(((1-3*T+3*u)*o+(3*T-6*u))*o+3*u)*o,subdivisionPrecision=1e-7,subdivisionMaxIterations=12;function binarySubdivide(o,u,T,S,E){let C,_,P=0;do _=u+(T-u)/2,C=calcBezier(_,S,E)-o,C>0?T=_:u=_;while(Math.abs(C)>subdivisionPrecision&&++P<subdivisionMaxIterations);return _}function cubicBezier(o,u,T,S){if(o===u&&T===S)return noop$1;const E=C=>binarySubdivide(C,0,1,o,T);return C=>C===0||C===1?C:calcBezier(E(C),u,S)}const mirrorEasing=o=>u=>u<=.5?o(2*u)/2:(2-o(2*(1-u)))/2,reverseEasing=o=>u=>1-o(1-u),backOut=cubicBezier(.33,1.53,.69,.99),backIn=reverseEasing(backOut),backInOut=mirrorEasing(backIn),anticipate=o=>(o*=2)<1?.5*backIn(o):.5*(2-Math.pow(2,-10*(o-1))),circIn=o=>1-Math.sin(Math.acos(o)),circOut=reverseEasing(circIn),circInOut=mirrorEasing(circIn),isZeroValueString=o=>/^0[^.\s]+$/u.test(o);function isNone(o){return typeof o=="number"?o===0:o!==null?o==="none"||o==="0"||isZeroValueString(o):!0}const sanitize=o=>Math.round(o*1e5)/1e5,floatRegex=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function isNullish(o){return o==null}const singleColorRegex=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,isColorString=(o,u)=>T=>!!(typeof T=="string"&&singleColorRegex.test(T)&&T.startsWith(o)||u&&!isNullish(T)&&Object.prototype.hasOwnProperty.call(T,u)),splitColor=(o,u,T)=>S=>{if(typeof S!="string")return S;const[E,C,_,P]=S.match(floatRegex);return{[o]:parseFloat(E),[u]:parseFloat(C),[T]:parseFloat(_),alpha:P!==void 0?parseFloat(P):1}},clampRgbUnit=o=>clamp(0,255,o),rgbUnit={...number,transform:o=>Math.round(clampRgbUnit(o))},rgba={test:isColorString("rgb","red"),parse:splitColor("red","green","blue"),transform:({red:o,green:u,blue:T,alpha:S=1})=>"rgba("+rgbUnit.transform(o)+", "+rgbUnit.transform(u)+", "+rgbUnit.transform(T)+", "+sanitize(alpha.transform(S))+")"};function parseHex(o){let u="",T="",S="",E="";return o.length>5?(u=o.substring(1,3),T=o.substring(3,5),S=o.substring(5,7),E=o.substring(7,9)):(u=o.substring(1,2),T=o.substring(2,3),S=o.substring(3,4),E=o.substring(4,5),u+=u,T+=T,S+=S,E+=E),{red:parseInt(u,16),green:parseInt(T,16),blue:parseInt(S,16),alpha:E?parseInt(E,16)/255:1}}const hex={test:isColorString("#"),parse:parseHex,transform:rgba.transform},hsla={test:isColorString("hsl","hue"),parse:splitColor("hue","saturation","lightness"),transform:({hue:o,saturation:u,lightness:T,alpha:S=1})=>"hsla("+Math.round(o)+", "+percent.transform(sanitize(u))+", "+percent.transform(sanitize(T))+", "+sanitize(alpha.transform(S))+")"},color={test:o=>rgba.test(o)||hex.test(o)||hsla.test(o),parse:o=>rgba.test(o)?rgba.parse(o):hsla.test(o)?hsla.parse(o):hex.parse(o),transform:o=>typeof o=="string"?o:o.hasOwnProperty("red")?rgba.transform(o):hsla.transform(o)},colorRegex=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function test(o){var u,T;return isNaN(o)&&typeof o=="string"&&(((u=o.match(floatRegex))===null||u===void 0?void 0:u.length)||0)+(((T=o.match(colorRegex))===null||T===void 0?void 0:T.length)||0)>0}const NUMBER_TOKEN="number",COLOR_TOKEN="color",VAR_TOKEN="var",VAR_FUNCTION_TOKEN="var(",SPLIT_TOKEN="${}",complexRegex=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function analyseComplexValue(o){const u=o.toString(),T=[],S={color:[],number:[],var:[]},E=[];let C=0;const P=u.replace(complexRegex,R=>(color.test(R)?(S.color.push(C),E.push(COLOR_TOKEN),T.push(color.parse(R))):R.startsWith(VAR_FUNCTION_TOKEN)?(S.var.push(C),E.push(VAR_TOKEN),T.push(R)):(S.number.push(C),E.push(NUMBER_TOKEN),T.push(parseFloat(R))),++C,SPLIT_TOKEN)).split(SPLIT_TOKEN);return{values:T,split:P,indexes:S,types:E}}function parseComplexValue(o){return analyseComplexValue(o).values}function createTransformer(o){const{split:u,types:T}=analyseComplexValue(o),S=u.length;return E=>{let C="";for(let _=0;_<S;_++)if(C+=u[_],E[_]!==void 0){const P=T[_];P===NUMBER_TOKEN?C+=sanitize(E[_]):P===COLOR_TOKEN?C+=color.transform(E[_]):C+=E[_]}return C}}const convertNumbersToZero=o=>typeof o=="number"?0:o;function getAnimatableNone$1(o){const u=parseComplexValue(o);return createTransformer(o)(u.map(convertNumbersToZero))}const complex={test,parse:parseComplexValue,createTransformer,getAnimatableNone:getAnimatableNone$1},maxDefaults=new Set(["brightness","contrast","saturate","opacity"]);function applyDefaultFilter(o){const[u,T]=o.slice(0,-1).split("(");if(u==="drop-shadow")return o;const[S]=T.match(floatRegex)||[];if(!S)return o;const E=T.replace(S,"");let C=maxDefaults.has(u)?1:0;return S!==T&&(C*=100),u+"("+C+E+")"}const functionRegex=/\b([a-z-]*)\(.*?\)/gu,filter={...complex,getAnimatableNone:o=>{const u=o.match(functionRegex);return u?u.map(applyDefaultFilter).join(" "):o}},defaultValueTypes={...numberValueTypes,color,backgroundColor:color,outlineColor:color,fill:color,stroke:color,borderColor:color,borderTopColor:color,borderRightColor:color,borderBottomColor:color,borderLeftColor:color,filter,WebkitFilter:filter},getDefaultValueType=o=>defaultValueTypes[o];function getAnimatableNone(o,u){let T=getDefaultValueType(o);return T!==filter&&(T=complex),T.getAnimatableNone?T.getAnimatableNone(u):void 0}const invalidTemplates=new Set(["auto","none","0"]);function makeNoneKeyframesAnimatable(o,u,T){let S=0,E;for(;S<o.length&&!E;){const C=o[S];typeof C=="string"&&!invalidTemplates.has(C)&&analyseComplexValue(C).values.length&&(E=o[S]),S++}if(E&&T)for(const C of u)o[C]=getAnimatableNone(T,E)}const isNumOrPxType=o=>o===number||o===px,getPosFromMatrix=(o,u)=>parseFloat(o.split(", ")[u]),getTranslateFromMatrix=(o,u)=>(T,{transform:S})=>{if(S==="none"||!S)return 0;const E=S.match(/^matrix3d\((.+)\)$/u);if(E)return getPosFromMatrix(E[1],u);{const C=S.match(/^matrix\((.+)\)$/u);return C?getPosFromMatrix(C[1],o):0}},transformKeys=new Set(["x","y","z"]),nonTranslationalTransformKeys=transformPropOrder.filter(o=>!transformKeys.has(o));function removeNonTranslationalTransform(o){const u=[];return nonTranslationalTransformKeys.forEach(T=>{const S=o.getValue(T);S!==void 0&&(u.push([T,S.get()]),S.set(T.startsWith("scale")?1:0))}),u}const positionalValues={width:({x:o},{paddingLeft:u="0",paddingRight:T="0"})=>o.max-o.min-parseFloat(u)-parseFloat(T),height:({y:o},{paddingTop:u="0",paddingBottom:T="0"})=>o.max-o.min-parseFloat(u)-parseFloat(T),top:(o,{top:u})=>parseFloat(u),left:(o,{left:u})=>parseFloat(u),bottom:({y:o},{top:u})=>parseFloat(u)+(o.max-o.min),right:({x:o},{left:u})=>parseFloat(u)+(o.max-o.min),x:getTranslateFromMatrix(4,13),y:getTranslateFromMatrix(5,14)};positionalValues.translateX=positionalValues.x;positionalValues.translateY=positionalValues.y;const toResolve=new Set;let isScheduled=!1,anyNeedsMeasurement=!1;function measureAllKeyframes(){if(anyNeedsMeasurement){const o=Array.from(toResolve).filter(S=>S.needsMeasurement),u=new Set(o.map(S=>S.element)),T=new Map;u.forEach(S=>{const E=removeNonTranslationalTransform(S);E.length&&(T.set(S,E),S.render())}),o.forEach(S=>S.measureInitialState()),u.forEach(S=>{S.render();const E=T.get(S);E&&E.forEach(([C,_])=>{var P;(P=S.getValue(C))===null||P===void 0||P.set(_)})}),o.forEach(S=>S.measureEndState()),o.forEach(S=>{S.suspendedScrollY!==void 0&&window.scrollTo(0,S.suspendedScrollY)})}anyNeedsMeasurement=!1,isScheduled=!1,toResolve.forEach(o=>o.complete()),toResolve.clear()}function readAllKeyframes(){toResolve.forEach(o=>{o.readKeyframes(),o.needsMeasurement&&(anyNeedsMeasurement=!0)})}function flushKeyframeResolvers(){readAllKeyframes(),measureAllKeyframes()}class KeyframeResolver{constructor(u,T,S,E,C,_=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...u],this.onComplete=T,this.name=S,this.motionValue=E,this.element=C,this.isAsync=_}scheduleResolve(){this.isScheduled=!0,this.isAsync?(toResolve.add(this),isScheduled||(isScheduled=!0,frame.read(readAllKeyframes),frame.resolveKeyframes(measureAllKeyframes))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:u,name:T,element:S,motionValue:E}=this;for(let C=0;C<u.length;C++)if(u[C]===null)if(C===0){const _=E==null?void 0:E.get(),P=u[u.length-1];if(_!==void 0)u[0]=_;else if(S&&T){const R=S.readValue(T,P);R!=null&&(u[0]=R)}u[0]===void 0&&(u[0]=P),E&&_===void 0&&E.set(u[0])}else u[C]=u[C-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),toResolve.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,toResolve.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const isNumericalString=o=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(o),splitCSSVariableRegex=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function parseCSSVariable(o){const u=splitCSSVariableRegex.exec(o);if(!u)return[,];const[,T,S,E]=u;return[`--${T??S}`,E]}function getVariableValue(o,u,T=1){const[S,E]=parseCSSVariable(o);if(!S)return;const C=window.getComputedStyle(u).getPropertyValue(S);if(C){const _=C.trim();return isNumericalString(_)?parseFloat(_):_}return isCSSVariableToken(E)?getVariableValue(E,u,T+1):E}const testValueType=o=>u=>u.test(o),auto={test:o=>o==="auto",parse:o=>o},dimensionValueTypes=[number,px,percent,degrees,vw,vh,auto],findDimensionValueType=o=>dimensionValueTypes.find(testValueType(o));class DOMKeyframesResolver extends KeyframeResolver{constructor(u,T,S,E,C){super(u,T,S,E,C,!0)}readKeyframes(){const{unresolvedKeyframes:u,element:T,name:S}=this;if(!T||!T.current)return;super.readKeyframes();for(let R=0;R<u.length;R++){let I=u[R];if(typeof I=="string"&&(I=I.trim(),isCSSVariableToken(I))){const L=getVariableValue(I,T.current);L!==void 0&&(u[R]=L),R===u.length-1&&(this.finalKeyframe=I)}}if(this.resolveNoneKeyframes(),!positionalKeys.has(S)||u.length!==2)return;const[E,C]=u,_=findDimensionValueType(E),P=findDimensionValueType(C);if(_!==P)if(isNumOrPxType(_)&&isNumOrPxType(P))for(let R=0;R<u.length;R++){const I=u[R];typeof I=="string"&&(u[R]=parseFloat(I))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes:u,name:T}=this,S=[];for(let E=0;E<u.length;E++)isNone(u[E])&&S.push(E);S.length&&makeNoneKeyframesAnimatable(u,S,T)}measureInitialState(){const{element:u,unresolvedKeyframes:T,name:S}=this;if(!u||!u.current)return;S==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=positionalValues[S](u.measureViewportBox(),window.getComputedStyle(u.current)),T[0]=this.measuredOrigin;const E=T[T.length-1];E!==void 0&&u.getValue(S,E).jump(E,!1)}measureEndState(){var u;const{element:T,name:S,unresolvedKeyframes:E}=this;if(!T||!T.current)return;const C=T.getValue(S);C&&C.jump(this.measuredOrigin,!1);const _=E.length-1,P=E[_];E[_]=positionalValues[S](T.measureViewportBox(),window.getComputedStyle(T.current)),P!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=P),!((u=this.removedTransforms)===null||u===void 0)&&u.length&&this.removedTransforms.forEach(([R,I])=>{T.getValue(R).set(I)}),this.resolveNoneKeyframes()}}const isAnimatable=(o,u)=>u==="zIndex"?!1:!!(typeof o=="number"||Array.isArray(o)||typeof o=="string"&&(complex.test(o)||o==="0")&&!o.startsWith("url("));function hasKeyframesChanged(o){const u=o[0];if(o.length===1)return!0;for(let T=0;T<o.length;T++)if(o[T]!==u)return!0}function canAnimate(o,u,T,S){const E=o[0];if(E===null)return!1;if(u==="display"||u==="visibility")return!0;const C=o[o.length-1],_=isAnimatable(E,u),P=isAnimatable(C,u);return!_||!P?!1:hasKeyframesChanged(o)||(T==="spring"||isGenerator(T))&&S}const isNotNull=o=>o!==null;function getFinalKeyframe(o,{repeat:u,repeatType:T="loop"},S){const E=o.filter(isNotNull),C=u&&T!=="loop"&&u%2===1?0:E.length-1;return!C||S===void 0?E[C]:S}const MAX_RESOLVE_DELAY=40;class BaseAnimation{constructor({autoplay:u=!0,delay:T=0,type:S="keyframes",repeat:E=0,repeatDelay:C=0,repeatType:_="loop",...P}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=time.now(),this.options={autoplay:u,delay:T,type:S,repeat:E,repeatDelay:C,repeatType:_,...P},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>MAX_RESOLVE_DELAY?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&flushKeyframeResolvers(),this._resolved}onKeyframesResolved(u,T){this.resolvedAt=time.now(),this.hasAttemptedResolve=!0;const{name:S,type:E,velocity:C,delay:_,onComplete:P,onUpdate:R,isGenerator:I}=this.options;if(!I&&!canAnimate(u,S,E,C))if(_)this.options.duration=0;else{R&&R(getFinalKeyframe(u,this.options,T)),P&&P(),this.resolveFinishedPromise();return}const L=this.initPlayback(u,T);L!==!1&&(this._resolved={keyframes:u,finalKeyframe:T,...L},this.onPostResolved())}onPostResolved(){}then(u,T){return this.currentFinishedPromise.then(u,T)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(u=>{this.resolveFinishedPromise=u})}}const mixNumber$1=(o,u,T)=>o+(u-o)*T;function hueToRgb(o,u,T){return T<0&&(T+=1),T>1&&(T-=1),T<1/6?o+(u-o)*6*T:T<1/2?u:T<2/3?o+(u-o)*(2/3-T)*6:o}function hslaToRgba({hue:o,saturation:u,lightness:T,alpha:S}){o/=360,u/=100,T/=100;let E=0,C=0,_=0;if(!u)E=C=_=T;else{const P=T<.5?T*(1+u):T+u-T*u,R=2*T-P;E=hueToRgb(R,P,o+1/3),C=hueToRgb(R,P,o),_=hueToRgb(R,P,o-1/3)}return{red:Math.round(E*255),green:Math.round(C*255),blue:Math.round(_*255),alpha:S}}function mixImmediate(o,u){return T=>T>0?u:o}const mixLinearColor=(o,u,T)=>{const S=o*o,E=T*(u*u-S)+S;return E<0?0:Math.sqrt(E)},colorTypes=[hex,rgba,hsla],getColorType=o=>colorTypes.find(u=>u.test(o));function asRGBA(o){const u=getColorType(o);if(!u)return!1;let T=u.parse(o);return u===hsla&&(T=hslaToRgba(T)),T}const mixColor=(o,u)=>{const T=asRGBA(o),S=asRGBA(u);if(!T||!S)return mixImmediate(o,u);const E={...T};return C=>(E.red=mixLinearColor(T.red,S.red,C),E.green=mixLinearColor(T.green,S.green,C),E.blue=mixLinearColor(T.blue,S.blue,C),E.alpha=mixNumber$1(T.alpha,S.alpha,C),rgba.transform(E))},combineFunctions=(o,u)=>T=>u(o(T)),pipe=(...o)=>o.reduce(combineFunctions),invisibleValues=new Set(["none","hidden"]);function mixVisibility(o,u){return invisibleValues.has(o)?T=>T<=0?o:u:T=>T>=1?u:o}function mixNumber(o,u){return T=>mixNumber$1(o,u,T)}function getMixer(o){return typeof o=="number"?mixNumber:typeof o=="str
207ing"?isCSSVariableToken(o)?mixImmediate:color.test(o)?mixColor:mixComplex:Array.isArray(o)?mixArray:typeof o=="object"?color.test(o)?mixColor:mixObject:mixImmediate}function mixArray(o,u){const T=[...o],S=T.length,E=o.map((C,_)=>getMixer(C)(C,u[_]));return C=>{for(let _=0;_<S;_++)T[_]=E[_](C);return T}}function mixObject(o,u){const T={...o,...u},S={};for(const E in T)o[E]!==void 0&&u[E]!==void 0&&(S[E]=getMixer(o[E])(o[E],u[E]));return E=>{for(const C in S)T[C]=S[C](E);return T}}function matchOrder(o,u){var T;const S=[],E={color:0,var:0,number:0};for(let C=0;C<u.values.length;C++){const _=u.types[C],P=o.indexes[_][E[_]],R=(T=o.values[P])!==null&&T!==void 0?T:0;S[C]=R,E[_]++}return S}const mixComplex=(o,u)=>{const T=complex.createTransformer(u),S=analyseComplexValue(o),E=analyseComplexValue(u);return S.indexes.var.length===E.indexes.var.length&&S.indexes.color.length===E.indexes.color.length&&S.indexes.number.length>=E.indexes.number.length?invisibleValues.has(o)&&!E.values.length||invisibleValues.has(u)&&!S.values.length?mixVisibility(o,u):pipe(mixArray(matchOrder(S,E),E.values),T):mixImmediate(o,u)};function mix(o,u,T){return typeof o=="number"&&typeof u=="number"&&typeof T=="number"?mixNumber$1(o,u,T):getMixer(o)(o,u)}const velocitySampleDuration=5;function calcGeneratorVelocity(o,u,T){const S=Math.max(u-velocitySampleDuration,0);return velocityPerSecond(T-o(S),u-S)}const springDefaults={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},safeMin=.001;function findSpring({duration:o=springDefaults.duration,bounce:u=springDefaults.bounce,velocity:T=springDefaults.velocity,mass:S=springDefaults.mass}){let E,C,_=1-u;_=clamp(springDefaults.minDamping,springDefaults.maxDamping,_),o=clamp(springDefaults.minDuration,springDefaults.maxDuration,millisecondsToSeconds(o)),_<1?(E=I=>{const L=I*_,j=L*o,M=L-T,D=calcAngularFreq(I,_),F=Math.exp(-j);return safeMin-M/D*F},C=I=>{const j=I*_*o,M=j*T+T,D=Math.pow(_,2)*Math.pow(I,2)*o,F=Math.exp(-j),N=calcAngularFreq(Math.pow(I,2),_);return(-E(I)+safeMin>0?-1:1)*((M-D)*F)/N}):(E=I=>{const L=Math.exp(-I*o),j=(I-T)*o+1;return-safeMin+L*j},C=I=>{const L=Math.exp(-I*o),j=(T-I)*(o*o);return L*j});const P=5/o,R=approximateRoot(E,C,P);if(o=secondsToMilliseconds(o),isNaN(R))return{stiffness:springDefaults.stiffness,damping:springDefaults.damping,duration:o};{const I=Math.pow(R,2)*S;return{stiffness:I,damping:_*2*Math.sqrt(S*I),duration:o}}}const rootIterations=12;function approximateRoot(o,u,T){let S=T;for(let E=1;E<rootIterations;E++)S=S-o(S)/u(S);return S}function calcAngularFreq(o,u){return o*Math.sqrt(1-u*u)}const durationKeys=["duration","bounce"],physicsKeys=["stiffness","damping","mass"];function isSpringType(o,u){return u.some(T=>o[T]!==void 0)}function getSpringOptions(o){let u={velocity:springDefaults.velocity,stiffness:springDefaults.stiffness,damping:springDefaults.damping,mass:springDefaults.mass,isResolvedFromDuration:!1,...o};if(!isSpringType(o,physicsKeys)&&isSpringType(o,durationKeys))if(o.visualDuration){const T=o.visualDuration,S=2*Math.PI/(T*1.2),E=S*S,C=2*clamp(.05,1,1-(o.bounce||0))*Math.sqrt(E);u={...u,mass:springDefaults.mass,stiffness:E,damping:C}}else{const T=findSpring(o);u={...u,...T,mass:springDefaults.mass},u.isResolvedFromDuration=!0}return u}function spring(o=springDefaults.visualDuration,u=springDefaults.bounce){const T=typeof o!="object"?{visualDuration:o,keyframes:[0,1],bounce:u}:o;let{restSpeed:S,restDelta:E}=T;const C=T.keyframes[0],_=T.keyframes[T.keyframes.length-1],P={done:!1,value:C},{stiffness:R,damping:I,mass:L,duration:j,velocity:M,isResolvedFromDuration:D}=getSpringOptions({...T,velocity:-millisecondsToSeconds(T.velocity||0)}),F=M||0,N=I/(2*Math.sqrt(R*L)),G=_-C,B=millisecondsToSeconds(Math.sqrt(R/L)),H=Math.abs(G)<5;S||(S=H?springDefaults.restSpeed.granular:springDefaults.restSpeed.default),E||(E=H?springDefaults.restDelta.granular:springDefaults.restDelta.default);let O;if(N<1){const U=calcAngularFreq(B,N);O=W=>{const K=Math.exp(-N*B*W);return _-K*((F+N*B*G)/U*Math.sin(U*W)+G*Math.cos(U*W))}}else if(N===1)O=U=>_-Math.exp(-B*U)*(G+(F+B*G)*U);else{const U=B*Math.sqrt(N*N-1);O=W=>{const K=Math.exp(-N*B*W),Y=Math.min(U*W,300);return _-K*((F+N*B*G)*Math.sinh(Y)+U*G*Math.cosh(Y))/U}}const V={calculatedDuration:D&&j||null,next:U=>{const W=O(U);if(D)P.done=U>=j;else{let K=0;N<1&&(K=U===0?secondsToMilliseconds(F):calcGeneratorVelocity(O,U,W));const Y=Math.abs(K)<=S,ee=Math.abs(_-W)<=E;P.done=Y&&ee}return P.value=P.done?_:W,P},toString:()=>{const U=Math.min(calcGeneratorDuration(V),maxGeneratorDuration),W=generateLinearEasing(K=>V.next(U*K).value,U,30);return U+"ms "+W}};return V}
vendor: 82,934 bytes, line 207
207function inertia({keyframes:o,velocity:u=0,power:T=.8,timeConstant:S=325,bounceDamping:E=10,bounceStiffness:C=500,modifyTarget:_,min:P,max:R,restDelta:I=.5,restSpeed:L}){const j=o[0],M={done:!1,value:j},D=Y=>P!==void 0&&Y<P||R!==void 0&&Y>R,F=Y=>P===void 0?R:R===void 0||Math.abs(P-Y)<Math.abs(R-Y)?P:R;let N=T*u;const G=j+N,B=_===void 0?G:_(G);B!==G&&(N=B-j);const H=Y=>-N*Math.exp(-Y/S),O=Y=>B+H(Y),V=Y=>{const ee=H(Y),oe=O(Y);M.done=Math.abs(ee)<=I,M.value=M.done?B:oe};let U,W;const K=Y=>{D(M.value)&&(U=Y,W=spring({keyframes:[M.value,F(M.value)],velocity:calcGeneratorVelocity(O,Y,M.value),damping:E,stiffness:C,restDelta:I,restSpeed:L}))};return K(0),{calculatedDuration:null,next:Y=>{let ee=!1;return!W&&U===void 0&&(ee=!0,V(Y),K(Y)),U!==void 0&&Y>=U?W.next(Y-U):(!ee&&V(Y),M)}}}const easeIn=cubicBezier(.42,0,1,1),easeOut=cubicBezier(0,0,.58,1),easeInOut=cubicBezier(.42,0,.58,1),isEasingArray=o=>Array.isArray(o)&&typeof o[0]!="number",easingLookup={linear:noop$1,easeIn,easeInOut,easeOut,circIn,circInOut,circOut,backIn,backInOut,backOut,anticipate},easingDefinitionToFunction=o=>{if(isBezierDefinition(o)){invariant(o.length===4);const[u,T,S,E]=o;return cubicBezier(u,T,S,E)}else if(typeof o=="string")return easingLookup[o];return o};function createMixers(o,u,T){const S=[],E=T||mix,C=o.length-1;for(let _=0;_<C;_++){let P=E(o[_],o[_+1]);if(u){const R=Array.isArray(u)?u[_]||noop$1:u;P=pipe(R,P)}S.push(P)}return S}function interpolate(o,u,{clamp:T=!0,ease:S,mixer:E}={}){const C=o.length;if(invariant(C===u.length),C===1)return()=>u[0];if(C===2&&u[0]===u[1])return()=>u[1];const _=o[0]===o[1];o[0]>o[C-1]&&(o=[...o].reverse(),u=[...u].reverse());const P=createMixers(u,S,E),R=P.length,I=L=>{if(_&&L<o[0])return u[0];let j=0;if(R>1)for(;j<o.length-2&&!(L<o[j+1]);j++);const M=progress(o[j],o[j+1],L);return P[j](M)};return T?L=>I(clamp(o[0],o[C-1],L)):I}function fillOffset(o,u){const T=o[o.length-1];for(let S=1;S<=u;S++){const E=progress(0,u,S);o.push(mixNumber$1(T,1,E))}}function defaultOffset(o){const u=[0];return fillOffset(u,o.length-1),u}function convertOffsetToTimes(o,u){return o.map(T=>T*u)}function defaultEasing(o,u){return o.map(()=>u||easeInOut).splice(0,o.length-1)}function keyframes({duration:o=300,keyframes:u,times:T,ease:S="easeInOut"}){const E=isEasingArray(S)?S.map(easingDefinitionToFunction):easingDefinitionToFunction(S),C={done:!1,value:u[0]},_=convertOffsetToTimes(T&&T.length===u.length?T:defaultOffset(u),o),P=interpolate(_,u,{ease:Array.isArray(E)?E:defaultEasing(u,E)});return{calculatedDuration:o,next:R=>(C.value=P(R),C.done=R>=o,C)}}const frameloopDriver=o=>{const u=({timestamp:T})=>o(T);return{start:()=>frame.update(u,!0),stop:()=>cancelFrame(u),now:()=>frameData.isProcessing?frameData.timestamp:time.now()}},generators={decay:inertia,inertia,tween:keyframes,keyframes,spring},percentToProgress=o=>o/100;class MainThreadAnimation extends BaseAnimation{constructor(u){super(u),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:R}=this.options;R&&R()};const{name:T,motionValue:S,element:E,keyframes:C}=this.options,_=(E==null?void 0:E.KeyframeResolver)||KeyframeResolver,P=(R,I)=>this.onKeyframesResolved(R,I);this.resolver=new _(C,P,T,S,E),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(u){const{type:T="keyframes",repeat:S=0,repeatDelay:E=0,repeatType:C,velocity:_=0}=this.options,P=isGenerator(T)?T:generators[T]||keyframes;let R,I;P!==keyframes&&typeof u[0]!="number"&&(R=pipe(percentToProgress,mix(u[0],u[1])),u=[0,100]);const L=P({...this.options,keyframes:u});C==="mirror"&&(I=P({...this.options,keyframes:[...u].reverse(),velocity:-_})),L.calculatedDuration===null&&(L.calculatedDuration=calcGeneratorDuration(L));const{calculatedDuration:j}=L,M=j+E,D=M*(S+1)-E;return{generator:L,mirroredGenerator:I,mapPercentToKeyframes:R,calculatedDuration:j,resolvedDuration:M,totalDuration:D}}onPostResolved(){const{autoplay:u=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!u?this.pause():this.state=this.pendingPlayState}tick(u,T=!1){const{resolved:S}=this;if(!S){const{keyframes:Y}=this.options;return{done:!0,value:Y[Y.length-1]}}const{finalKeyframe:E,generator:C,mirroredGenerator:_,mapPercentToKeyframes:P,keyframes:R,calculatedDuration:I,totalDuration:L,resolvedDuration:j}=S;if(this.startTime===null)return C.next(0);const{delay:M,repeat:D,repeatType:F,repeatDelay:N,onUpdate:G}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,u):this.speed<0&&(this.startTime=Math.min(u-L/this.speed,this.startTime)),T?this.currentTime=u:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(u-this.startTime)*this.speed;const B=this.currentTime-M*(this.speed>=0?1:-1),H=this.speed>=0?B<0:B>L;this.currentTime=Math.max(B,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=L);let O=this.currentTime,V=C;if(D){const Y=Math.min(this.currentTime,L)/j;let ee=Math.floor(Y),oe=Y%1;!oe&&Y>=1&&(oe=1),oe===1&&ee--,ee=Math.min(ee,D+1),!!(ee%2)&&(F==="reverse"?(oe=1-oe,N&&(oe-=N/j)):F==="mirror"&&(V=_)),O=clamp(0,1,oe)*j}const U=H?{done:!1,value:R[0]}:V.next(O);P&&(U.value=P(U.value));let{done:W}=U;!H&&I!==null&&(W=this.speed>=0?this.currentTime>=L:this.currentTime<=0);const K=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&W);return K&&E!==void 0&&(U.value=getFinalKeyframe(R,this.options,E)),G&&G(U.value),K&&this.finish(),U}get duration(){const{resolved:u}=this;return u?millisecondsToSeconds(u.calculatedDuration):0}get time(){return millisecondsToSeconds(this.currentTime)}set time(u){u=secondsToMilliseconds(u),this.currentTime=u,this.holdTime!==null||this.speed===0?this.holdTime=u:this.driver&&(this.startTime=this.driver.now()-u/this.speed)}get speed(){return this.playbackSpeed}set speed(u){const T=this.playbackSpeed!==u;this.playbackSpeed=u,T&&(this.time=millisecondsToSeconds(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:u=frameloopDriver,onPlay:T,startTime:S}=this.options;this.driver||(this.driver=u(C=>this.tick(C))),T&&T();const E=this.driver.now();this.holdTime!==null?this.startTime=E-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=E):this.startTime=S??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var u;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(u=this.currentTime)!==null&&u!==void 0?u:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:u}=this.options;u&&u()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(u){return this.startTime=0,this.tick(u,!0)}}const acceleratedValues=new Set(["opacity","clipPath","filter","transform"]);function startWaapiAnimation(o,u,T,{delay:S=0,duration:E=300,repeat:C=0,repeatType:_="loop",ease:P="easeInOut",times:R}={}){const I={[u]:T};R&&(I.offset=R);const L=mapEasingToNativeEasing(P,E);return Array.isArray(L)&&(I.easing=L),o.animate(I,{delay:S,duration:E,easing:Array.isArray(L)?"linear":L,fill:"both",iterations:C+1,direction:_==="reverse"?"alternate":"normal"})}const supportsWaapi=memo(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),sampleDelta=10,maxDuration=2e4;function requiresPregeneratedKeyframes(o){return isGenerator(o.type)||o.type==="spring"||!isWaapiSupportedEasing(o.ease)}function pregenerateKeyframes(o,u){const T=new MainThreadAnimation({...u,keyframes:o,repeat:0,delay:0,isGenerator:!0});let S={done:!1,value:o[0]};const E=[];let C=0;for(;!S.done&&C<maxDuration;)S=T.sample(C),E.push(S.value),C+=sampleDelta;return{times:void 0,keyframes:E,duration:C-sampleDelta,ease:"linear"}}const unsupportedEasingFunctions={anticipate,backInOut,circInOut};function isUnsupportedEase(o){return o in unsupportedEasingFunctions}class AcceleratedAnimation extends BaseAnimation{constructor(u){super(u);const{name:T,motionValue:S,element:E,keyframes:C}=this.options;this.resolver=new DOMKeyframesResolver(C,(_,P)=>this.onKeyframesResolved(_,P),T,S,E),this.resolver.scheduleResolve()}initPlayback(u,T){let{duration:S=300,times:E,ease:C,type:_,motionValue:P,name:R,startTime:I}=this.options;if(!P.owner||!P.owner.current)return!1;if(typeof C=="string"&&supportsLinearEasing()&&isUnsupportedEase(C)&&(C=unsupportedEasingFunctions[C]),requiresPregeneratedKeyframes(this.options)){const{onComplete:j,onUpdate:M,motionValue:D,element:F,...N}=this.options,G=pregenerateKeyframes(u,N);u=G.keyframes,u.length===1&&(u[1]=u[0]),S=G.duration,E=G.times,C=G.ease,_="keyframes"}const L=startWaapiAnimation(P.owner.current,R,u,{...this.options,duration:S,times:E,ease:C});return L.startTime=I??this.calcStartTime(),this.pendingTimeline?(attachTimeline(L,this.pendingTimeline),this.pendingTimeline=void 0):L.onfinish=()=>{const{onComplete:j}=this.options;P.set(getFinalKeyframe(u,this.options,T)),j&&j(),this.cancel(),this.resolveFinishedPromise()},{animation:L,duration:S,times:E,type:_,ease:C,keyframes:u}}get duration(){const{resolved:u}=this;if(!u)return 0;const{duration:T}=u;return millisecondsToSeconds(T)}get time(){const{resolved:u}=this;if(!u)return 0;const{animation:T}=u;return millisecondsToSeconds(T.currentTime||0)}set time(u){const{resolved:T}=this;if(!T)return;const{animation:S}=T;S.currentTime=secondsToMilliseconds(u)}get speed(){const{resolved:u}=this;if(!u)return 1;const{animation:T}=u;return T.playbackRate}set speed(u){const{resolved:T}=this;if(!T)return;const{animation:S}=T;S.playbackRate=u}get state(){const{resolved:u}=this;if(!u)return"idle";const{animation:T}=u;return T.playState}get startTime(){const{resolved:u}=this;if(!u)return null;const{animation:T}=u;return T.startTime}attachTimeline(u){if(!this._resolved)this.pendingTimeline=u;else{const{resolved:T}=this;if(!T)return noop$1;const{animation:S}=T;attachTimeline(S,u)}return noop$1}play(){if(this.isStopped)return;const{resolved:u}=this;if(!u)return;const{animation:T}=u;T.playState==="finished"&&this.updateFinishedPromise(),T.play()}pause(){const{resolved:u}=this;if(!u)return;const{animation:T}=u;T.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:u}=this;if(!u)return;const{animation:T,keyframes:S,duration:E,type:C,ease:_,times:P}=u;if(T.playState==="idle"||T.playState==="finished")return;if(this.time){const{motionValue:I,onUpdate:L,onComplete:j,element:M,...D}=this.options,F=new MainThreadAnimation({...D,keyframes:S,duration:E,type:C,ease:_,times:P,isGenerator:!0}),N=secondsToMilliseconds(this.time);I.setWithVelocity(F.sample(N-sampleDelta).value,F.sample(N).value,sampleDelta)}const{onStop:R}=this.options;R&&R(),this.cancel()}complete(){const{resolved:u}=this;u&&u.animation.finish()}cancel(){const{resolved:u}=this;u&&u.animation.cancel()}static supports(u){const{motionValue:T,name:S,repeatDelay:E,repeatType:C,damping:_,type:P}=u;if(!T||!T.owner||!(T.owner.current instanceof HTMLElement))return!1;const{onUpdate:R,transformTemplate:I}=T.owner.getProps();return supportsWaapi()&&S&&acceleratedValues.has(S)&&!R&&!I&&!E&&C!=="mirror"&&_!==0&&P!=="inertia"}}const underDampedSpring={type:"spring",stiffness:500,damping:25,restSpeed:10},criticallyDampedSpring=o=>({type:"spring",stiffness:550,damping:o===0?2*Math.sqrt(550):30,restSpeed:10}),keyframesTransition={type:"keyframes",duration:.8},ease={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},getDefaultTransition=(o,{keyframes:u})=>u.length>2?keyframesTransition:transformProps.has(o)?o.startsWith("scale")?criticallyDampedSpring(u[1]):underDampedSpring:ease;function isTransitionDefined({when:o,delay:u,delayChildren:T,staggerChildren:S,staggerDirection:E,repeat:C,repeatType:_,repeatDelay:P,from:R,elapsed:I,...L}){return!!Object.keys(L).length}const animateMotionValue=(o,u,T,S={},E,C)=>_=>{const P=getValueTransition(S,o)||{},R=P.delay||S.delay||0;let{elapsed:I=0}=S;I=I-secondsToMilliseconds(R);let L={keyframes:Array.isArray(T)?T:[null,T],ease:"easeOut",velocity:u.getVelocity(),...P,delay:-I,onUpdate:M=>{u.set(M),P.onUpdate&&P.onUpdate(M)},onComplete:()=>{_(),P.onComplete&&P.onComplete()},name:o,motionValue:u,element:C?void 0:E};isTransitionDefined(P)||(L={...L,...getDefaultTransition(o,L)}),L.duration&&(L.duration=secondsToMilliseconds(L.duration)),L.repeatDelay&&(L.repeatDelay=secondsToMilliseconds(L.repeatDelay)),L.from!==void 0&&(L.keyframes[0]=L.from);let j=!1;if((L.type===!1||L.duration===0&&!L.repeatDelay)&&(L.duration=0,L.delay===0&&(j=!0)),j&&!C&&u.get()!==void 0){const M=getFinalKeyframe(L.keyframes,P);if(M!==void 0)return frame.update(()=>{L.onUpdate(M),L.onComplete()}),new GroupPlaybackControls([])}return!C&&AcceleratedAnimation.supports(L)?new AcceleratedAnimation(L):new MainThreadAnimation(L)};function shouldBlockAnimation({protectedKeys:o,needsAnimating:u},T){const S=o.hasOwnProperty(T)&&u[T]!==!0;return u[T]=!1,S}function animateTarget(o,u,{delay:T=0,transitionOverride:S,type:E}={}){var C;let{transition:_=o.getDefaultTransition(),transitionEnd:P,...R}=u;S&&(_=S);const I=[],L=E&&o.animationState&&o.animationState.getState()[E];for(const j in R){const M=o.getValue(j,(C=o.latestValues[j])!==null&&C!==void 0?C:null),D=R[j];if(D===void 0||L&&shouldBlockAnimation(L,j))continue;const F={delay:T,...getValueTransition(_||{},j)};let N=!1;if(window.MotionHandoffAnimation){const B=getOptimisedAppearId(o);if(B){const H=window.MotionHandoffAnimation(B,j,frame);H!==null&&(F.startTime=H,N=!0)}}addValueToWillChange(o,j),M.start(animateMotionValue(j,M,D,o.shouldReduceMotion&&positionalKeys.has(j)?{type:!1}:F,o,N));const G=M.animation;G&&I.push(G)}return P&&Promise.all(I).then(()=>{frame.update(()=>{P&&setTarget(o,P)})}),I}function animateVariant(o,u,T={}){var S;const E=resolveVariant(o,u,T.type==="exit"?(S=o.presenceContext)===null||S===void 0?void 0:S.custom:void 0);let{transition:C=o.getDefaultTransition()||{}}=E||{};T.transitionOverride&&(C=T.transitionOverride);const _=E?()=>Promise.all(animateTarget(o,E,T)):()=>Promise.resolve(),P=o.variantChildren&&o.variantChildren.size?(I=0)=>{const{delayChildren:L=0,staggerChildren:j,staggerDirection:M}=C;return animateChildren(o,u,L+I,j,M,T)}:()=>Promise.resolve(),{when:R}=C;if(R){const[I,L]=R==="beforeChildren"?[_,P]:[P,_];return I().then(()=>L())}else return Promise.all([_(),P(T.delay)])}function animateChildren(o,u,T=0,S=0,E=1,C){const _=[],P=(o.variantChildren.size-1)*S,R=E===1?(I=0)=>I*S:(I=0)=>P-I*S;return Array.from(o.variantChildren).sort(sortByTreeOrder).forEach((I,L)=>{I.notify("AnimationStart",u),_.push(animateVariant(I,u,{...C,delay:T+R(L)}).then(()=>I.notify("AnimationComplete",u)))}),Promise.all(_)}function sortByTreeOrder(o,u){return o.sortNodePosition(u)}function animateVisualElement(o,u,T={}){o.notify("AnimationStart",u);let S;if(Array.isArray(u)){const E=u.map(C=>animateVariant(o,C,T));S=Promise.all(E)}else if(typeof u=="string")S=animateVariant(o,u,T);else{const E=typeof u=="function"?resolveVariant(o,u,T.custom):u;S=Promise.all(animateTarget(o,E,T))}return S.then(()=>{o.notify("AnimationComplete",u)})}const numVariantProps=variantProps.length;function getVariantContext(o){if(!o)return;if(!o.isControllingVariants){const T=o.parent?getVariantContext(o.parent)||{}:{};return o.props.initial!==void 0&&(T.initial=o.props.initial),T}const u={};for(let T=0;T<numVariantProps;T++){const S=variantProps[T],E=o.props[S];(isVariantLabel(E)||E===!1)&&(u[S]=E)}return u}const reversePriorityOrder=[...variantPriorityOrder].reverse(),numAnimationTypes=variantPriorityOrder.length;function animateList(o){return u=>Promise.all(u.map(({animation:T,options:S})=>animateVisualElement(o,T,S)))}function createAnimationState(o){let u=animateList(o),T=createState(),S=!0;const E=R=>(I,L)=>{var j;const M=resolveVariant(o,L,R==="exit"?(j=o.presenceContext)===null||j===void 0?void 0:j.custom:void 0);if(M){const{transition:D,transitionEnd:F,...N}=M;I={...I,...N,...F}}return I};function C(R){u=R(o)}function _(R){const{props:I}=o,L=getVariantContext(o.parent)||{},j=[],M=new Set;let D={},F=1/0;for(let G=0;G<numAnimationTypes;G++){const B=reversePriorityOrder[G],H=T[B],O=I[B]!==void 0?I[B]:L[B],V=isVariantLabel(O),U=B===R?H.isActive:null;U===!1&&(F=G);let W=O===L[B]&&O!==I[B]&&V;if(W&&S&&o.manuallyAnimateOnMount&&(W=!1),H.protectedKeys={...D},!H.isActive&&U===null||!O&&!H.prevProp||isAnimationControls(O)||typeof O=="boolean")continue;const K=checkVariantsDidChange(H.prevProp,O);let Y=K||B===R&&H.isActive&&!W&&V||G>F&&V,ee=!1;const oe=Array.isArray(O)?O:[O];let se=oe.reduce(E(B),{});U===!1&&(se={});const{prevResolvedValues:Q={}}=H,ie={...Q,...se},ae=te=>{Y=!0,M.has(te)&&(ee=!0,M.delete(te)),H.needsAnimating[te]=!0;const Z=o.getValue(te);Z&&(Z.liveStyle=!1)};for(const te in ie){const Z=se[te],X=Q[te];if(D.hasOwnProperty(te))continue;let de=!1;isKeyframesTarget(Z)&&isKeyframesTarget(X)?de=!shallowCompare(Z,X):de=Z!==X,de?Z!=null?ae(te):M.add(te):Z!==void 0&&M.has(te)?ae(te):H.protectedKeys[te]=!0}H.prevProp=O,H.prevResolvedValues=se,H.isActive&&(D={...D,...se}),S&&o.blockInitialAnimation&&(Y=!1),Y&&(!(W&&K)||ee)&&j.push(...oe.map(te=>({animation:te,options:{type:B}})))}if(M.size){const G={};M.forEach(B=>{const H=o.getBaseTarget(B),O=o.getValue(B);O&&(O.liveStyle=!0),G[B]=H??null}),j.push({animation:G})}let N=!!j.length;return S&&(I.initial===!1||I.initial===I.animate)&&!o.manuallyAnimateOnMount&&(N=!1),S=!1,N?u(j):Promise.resolve()}function P(R,I){var L;if(T[R].isActive===I)return Promise.resolve();(L=o.variantChildren)===null||L===void 0||L.forEach(M=>{var D;return(D=M.animationState)===null||D===void 0?void 0:D.setActive(R,I)}),T[R].isActive=I;const j=_(R);for(const M in T)T[M].protectedKeys={};return j}return{animateChanges:_,setActive:P,setAnimateFunction:C,getState:()=>T,reset:()=>{T=createState(),S=!0}}}function checkVariantsDidChange(o,u){return typeof u=="string"?u!==o:Array.isArray(u)?!shallowCompare(u,o):!1}function createTypeState(o=!1){return{isActive:o,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function createState(){return{animate:createTypeState(!0),whileInView:createTypeState(),whileHover:createTypeState(),whileTap:createTypeState(),whileDrag:createTypeState(),whileFocus:createTypeState(),exit:createTypeState()}}class Feature{constructor(u){this.isMounted=!1,this.node=u}update(){}}class AnimationFeature extends Feature{constructor(u){super(u),u.animationState||(u.animationState=createAnimationState(u))}updateAnimationControlsSubscription(){const{animate:u}=this.node.getProps();isAnimationControls(u)&&(this.unmountControls=u.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:u}=this.node.getProps(),{animate:T}=this.node.prevProps||{};u!==T&&this.updateAnimationControlsSubscription()}unmount(){var u;this.node.animationState.reset(),(u=this.unmountControls)===null||u===void 0||u.call(this)}}let id$1=0;class ExitAnimationFeature extends Feature{constructor(){super(...arguments),this.id=id$1++}update(){if(!this.node.presenceContext)return;const{isPresent:u,onExitComplete:T}=this.node.presenceContext,{isPresent:S}=this.node.prevPresenceContext||{};if(!this.node.animationState||u===S)return;const E=this.node.animationState.setActive("exit",!u);T&&!u&&E.then(()=>T(this.id))}mount(){const{register:u}=this.node.presenceContext||{};u&&(this.unmount=u(this.id))}unmount(){}}const animations={animation:{Feature:AnimationFeature},exit:{Feature:ExitAnimationFeature}};function addDomEvent(o,u,T,S={passive:!0}){return o.addEventListener(u,T,S),()=>o.removeEventListener(u,T)}function extractEventInfo(o){return{point:{x:o.pageX,y:o.pageY}}}const addPointerInfo=o=>u=>isPrimaryPointer(u)&&o(u,extractEventInfo(u));function addPointerEvent(o,u,T,S){return addDomEvent(o,u,addPointerInfo(T),S)}const distance=(o,u)=>Math.abs(o-u);function distance2D(o,u){const T=distance(o.x,u.x),S=distance(o.y,u.y);return Math.sqrt(T**2+S**2)}class PanSession{constructor(u,T,{transformPagePoint:S,contextWindow:E,dragSnapToOrigin:C=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const j=getPanInfo(this.lastMoveEventInfo,this.history),M=this.startEvent!==null,D=distance2D(j.offset,{x:0,y:0})>=3;if(!M&&!D)return;const{point:F}=j,{timestamp:N}=frameData;this.history.push({...F,timestamp:N});const{onStart:G,onMove:B}=this.handlers;M||(G&&G(this.lastMoveEvent,j),this.startEvent=this.lastMoveEvent),B&&B(this.lastMoveEvent,j)},this.handlePointerMove=(j,M)=>{this.lastMoveEvent=j,this.lastMoveEventInfo=transformPoint(M,this.transformPagePoint),frame.update(this.updatePoint,!0)},this.handlePointerUp=(j,M)=>{this.end();const{onEnd:D,onSessionEnd:F,resumeAnimation:N}=this.handlers;if(this.dragSnapToOrigin&&N&&N(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const G=getPanInfo(j.type==="pointercancel"?this.lastMoveEventInfo:transformPoint(M,this.transformPagePoint),this.history);this.startEvent&&D&&D(j,G),F&&F(j,G)},!isPrimaryPointer(u))return;this.dragSnapToOrigin=C,this.handlers=T,this.transformPagePoint=S,this.contextWindow=E||window;const _=extractEventInfo(u),P=transformPoint(_,this.transformPagePoint),{point:R}=P,{timestamp:I}=frameData;this.history=[{...R,timestamp:I}];const{onSessionStart:L}=T;L&&L(u,getPanInfo(P,this.history)),this.removeListeners=pipe(addPointerEvent(this.contextWindow,"pointermove",this.handlePointerMove),addPointerEvent(this.contextWindow,"pointerup",this.handlePointerUp),addPointerEvent(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(u){this.handlers=u}end(){this.removeListeners&&this.removeListeners(),cancelFrame(this.updatePoint)}}function transformPoint(o,u){return u?{point:u(o.point)}:o}function subtractPoint(o,u){return{x:o.x-u.x,y:o.y-u.y}}function getPanInfo({point:o},u){return{point:o,delta:subtractPoint(o,lastDevicePoint(u)),offset:subtractPoint(o,startDevicePoint(u)),velocity:getVelocity(u,.1)}}function startDevicePoint(o){return o[0]}function lastDevicePoint(o){return o[o.length-1]}function getVelocity(o,u){if(o.length<2)return{x:0,y:0};let T=o.length-1,S=null;const E=lastDevicePoint(o);for(;T>=0&&(S=o[T],!(E.timestamp-S.timestamp>secondsToMilliseconds(u)));)T--;if(!S)return{x:0,y:0};const C=millisecondsToSeconds(E.timestamp-S.timestamp);if(C===0)return{x:0,y:0};const _={x:(E.x-S.x)/C,y:(E.y-S.y)/C};return _.x===1/0&&(_.x=0),_.y===1/0&&(_.y=0),_}const SCALE_PRECISION=1e-4,SCALE_MIN=1-SCALE_PRECISION,SCALE_MAX=1+SCALE_PRECISION,TRANSLATE_PRECISION=.01,TRANSLATE_MIN=0-TRANSLATE_PRECISION,TRANSLATE_MAX=0+TRANSLATE_PRECISION;function calcLength(o){return o.max-o.min}function isNear(o,u,T){return Math.abs(o-u)<=T}function calcAxisDelta(o,u,T,S=.5){o.origin=S,o.originPoint=mixNumber$1(u.min,u.max,o.origin),o.scale=calcLength(T)/calcLength(u),o.translate=mixNumber$1(T.min,T.max,o.origin)-o.originPoint,(o.scale>=SCALE_MIN&&o.scale<=SCALE_MAX||isNaN(o.scale))&&(o.scale=1),(o.translate>=TRANSLATE_MIN&&o.translate<=TRANSLATE_MAX||isNaN(o.translate))&&(o.translate=0)}function calcBoxDelta(o,u,T,S){calcAxisDelta(o.x,u.x,T.x,S?S.originX:void 0),calcAxisDelta(o.y,u.y,T.y,S?S.originY:void 0)}function calcRelativeAxis(o,u,T){o.min=T.min+u.min,o.max=o.min+calcLength(u)}function calcRelativeBox(o,u,T){calcRelativeAxis(o.x,u.x,T.x),calcRelativeAxis(o.y,u.y,T.y)}function calcRelativeAxisPosition(o,u,T){o.min=u.min-T.min,o.max=o.min+calcLength(u)}function calcRelativePosition(o,u,T){calcRelativeAxisPosition(o.x,u.x,T.x),calcRelativeAxisPosition(o.y,u.y,T.y)}function applyConstraints(o,{min:u,max:T},S){return u!==void 0&&o<u?o=S?mixNumber$1(u,o,S.min):Math.max(o,u):T!==void 0&&o>T&&(o=S?mixNumber$1(T,o,S.max):Math.min(o,T)),o}function calcRelativeAxisConstraints(o,u,T){return{min:u!==void 0?o.min+u:void 0,max:T!==void 0?o.max+T-(o.max-o.min):void 0}}function calcRelativeConstraints(o,{top:u,left:T,bottom:S,right:E}){return{x:calcRelativeAxisConstraints(o.x,T,E),y:calcRelativeAxisConstraints(o.y,u,S)}}function calcViewportAxisConstraints(o,u){let T=u.min-o.min,S=u.max-o.max;return u.max-u.min<o.max-o.min&&([T,S]=[S,T]),{min:T,max:S}}function calcViewportConstraints(o,u){return{x:calcViewportAxisConstraints(o.x,u.x),y:calcViewportAxisConstraints(o.y,u.y)}}function calcOrigin(o,u){let T=.5;const S=calcLength(o),E=calcLength(u);return E>S?T=progress(u.min,u.max-S,o.min):S>E&&(T=progress(o.min,o.max-E,u.min)),clamp(0,1,T)}function rebaseAxisConstraints(o,u){const T={};return u.min!==void 0&&(T.min=u.min-o.min),u.max!==void 0&&(T.max=u.max-o.min),T}const defaultElastic=.35;function resolveDragElastic(o=defaultElastic){return o===!1?o=0:o===!0&&(o=defaultElastic),{x:resolveAxisElastic(o,"left","right"),y:resolveAxisElastic(o,"top","bottom")}}function resolveAxisElastic(o,u,T){return{min:resolvePointElastic(o,u),max:resolvePointElastic(o,T)}}function resolvePointElastic(o,u){return typeof o=="number"?o:o[u]||0}const createAxisDelta=()=>({translate:0,scale:1,origin:0,originPoint:0}),createDelta=()=>({x:createAxisDelta(),y:createAxisDelta()}),createAxis=()=>({min:0,max:0}),createBox=()=>({x:createAxis(),y:createAxis()});function eachAxis(o){return[o("x"),o("y")]}function convertBoundingBoxToBox({top:o,left:u,right:T,bottom:S}){return{x:{min:u,max:T},y:{min:o,max:S}}}function convertBoxToBoundingBox({x:o,y:u}){return{top:u.min,right:o.max,bottom:u.max,left:o.min}}function transformBoxPoints(o,u){if(!u)return o;const T=u({x:o.left,y:o.top}),S=u({x:o.right,y:o.bottom});return{top:T.y,left:T.x,bottom:S.y,right:S.x}}function isIdentityScale(o){return o===void 0||o===1}function hasScale({scale:o,scaleX:u,scaleY:T}){return!isIdentityScale(o)||!isIdentityScale(u)||!isIdentityScale(T)}function hasTransform(o){return hasScale(o)||has2DTranslate(o)||o.z||o.rotate||o.rotateX||o.rotateY||o.skewX||o.skewY}function has2DTranslate(o){return is2DTranslate(o.x)||is2DTranslate(o.y)}function is2DTranslate(o){return o&&o!=="0%"}function scalePoint(o,u,T){const S=o-T,E=u*S;return T+E}function applyPointDelta(o,u,T,S,E){return E!==void 0&&(o=scalePoint(o,E,S)),scalePoint(o,T,S)+u}function applyAxisDelta(o,u=0,T=1,S,E){o.min=applyPointDelta(o.min,u,T,S,E),o.max=applyPointDelta(o.max,u,T,S,E)}function applyBoxDelta(o,{x:u,y:T}){applyAxisDelta(o.x,u.translate,u.scale,u.originPoint),applyAxisDelta(o.y,T.translate,T.scale,T.originPoint)}const TREE_SCALE_SNAP_MIN=.999999999999,TREE_SCALE_SNAP_MAX=1.0000000000001;function applyTreeDeltas(o,u,T,S=!1){const E=T.length;if(!E)return;u.x=u.y=1;let C,_;for(let P=0;P<E;P++){C=T[P],_=C.projectionDelta;const{visualElement:R}=C.options;R&&R.props.style&&R.props.style.display==="contents"||(S&&C.options.layoutScroll&&C.scroll&&C!==C.root&&transformBox(o,{x:-C.scroll.offset.x,y:-C.scroll.offset.y}),_&&(u.x*=_.x.scale,u.y*=_.y.scale,applyBoxDelta(o,_)),S&&hasTransform(C.latestValues)&&transformBox(o,C.latestValues))}u.x<TREE_SCALE_SNAP_MAX&&u.x>TREE_SCALE_SNAP_MIN&&(u.x=1),u.y<TREE_SCALE_SNAP_MAX&&u.y>TREE_SCALE_SNAP_MIN&&(u.y=1)}function translateAxis(o,u){o.min=o.min+u,o.max=o.max+u}function transformAxis(o,u,T,S,E=.5){const C=mixNumber$1(o.min,o.max,E);applyAxisDelta(o,u,T,C,S)}function transformBox(o,u){transformAxis(o.x,u.x,u.scaleX,u.scale,u.originX),transformAxis(o.y,u.y,u.scaleY,u.scale,u.originY)}function measureViewportBox(o,u){return convertBoundingBoxToBox(transformBoxPoints(o.getBoundingClientRect(),u))}function measurePageBox(o,u,T){const S=measureViewportBox(o,T),{scroll:E}=u;return E&&(translateAxis(S.x,E.offset.x),translateAxis(S.y,E.offset.y)),S}const getContextWindow=({current:o})=>o?o.ownerDocument.defaultView:null,elementDragControls=new WeakMap;class VisualElementDragControls{constructor(u){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=createBox(),this.visualElement=u}start(u,{snapToCursor:T=!1}={}){const{presenceContext:S}=this.visualElement;if(S&&S.isPresent===!1)return;const E=L=>{const{dragSnapToOrigin:j}=this.getProps();j?this.pauseAnimation():this.stopAnimation(),T&&this.snapToCursor(extractEventInfo(L).point)},C=(L,j)=>{const{drag:M,dragPropagation:D,onDragStart:F}=this.getProps();if(M&&!D&&(this.openDragLock&&this.openDragLock(),this.openDragLock=setDragLock(M),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),eachAxis(G=>{let B=this.getAxisMotionValue(G).get()||0;if(percent.test(B)){const{projection:H}=this.visualElement;if(H&&H.layout){const O=H.layout.layoutBox[G];O&&(B=calcLength(O)*(parseFloat(B)/100))}}this.originPoint[G]=B}),F&&frame.postRender(()=>F(L,j)),addValueToWillChange(this.visualElement,"transform");const{animationState:N}=this.visualElement;N&&N.setActive("whileDrag",!0)},_=(L,j)=>{const{dragPropagation:M,dragDirectionLock:D,onDirectionLock:F,onDrag:N}=this.getProps();if(!M&&!this.openDragLock)return;const{offset:G}=j;if(D&&this.currentDirection===null){this.currentDirection=getCurrentDirection(G),this.currentDirection!==null&&F&&F(this.currentDirection);return}this.updateAxis("x",j.point,G),this.updateAxis("y",j.point,G),this.visualElement.render(),N&&N(L,j)},P=(L,j)=>this.stop(L,j),R=()=>eachAxis(L=>{var j;return this.getAnimationState(L)==="paused"&&((j=this.getAxisMotionValue(L).animation)===null||j===void 0?void 0:j.play())}),{dragSnapToOrigin:I}=this.getProps();this.panSession=new PanSession(u,{onSessionStart:E,onStart:C,onMove:_,onSessionEnd:P,resumeAnimation:R},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:I,contextWindow:getContextWindow(this.visualElement)})}stop(u,T){const S=this.isDragging;if(this.cancel(),!S)return;const{velocity:E}=T;this.startAnimation(E);const{onDragEnd:C}=this.getProps();C&&frame.postRender(()=>C(u,T))}cancel(){this.isDragging=!1;const{projection:u,animationState:T}=this.visualElement;u&&(u.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:S}=this.getProps();!S&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),T&&T.setActive("whileDrag",!1)}updateAxis(u,T,S){const{drag:E}=this.getProps();if(!S||!shouldDrag(u,E,this.currentDirection))return;const C=this.getAxisMotionValue(u);let _=this.originPoint[u]+S[u];this.constraints&&this.constraints[u]&&(_=applyConstraints(_,this.constraints[u],this.elastic[u])),C.set(_)}resolveConstraints(){var u;const{dragConstraints:T,dragElastic:S}=this.getProps(),E=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(u=this.visualElement.projection)===null||u===void 0?void 0:u.layout,C=this.constraints;T&&isRefObject(T)?this.constraints||(this.constraints=this.resolveRefConstraints()):T&&E?this.constraints=calcRelativeConstraints(E.layoutBox,T):this.constraints=!1,this.elastic=resolveDragElastic(S),C!==this.constraints&&E&&this.constraints&&!this.hasMutatedConstraints&&eachAxis(_=>{this.constraints!==!1&&this.getAxisMotionValue(_)&&(this.constraints[_]=rebaseAxisConstraints(E.layoutBox[_],this.constraints[_]))})}resolveRefConstraints(){const{dragConstraints:u,onMeasureDragConstraints:T}=this.getProps();if(!u||!isRefObject(u))return!1;const S=u.current,{projection:E}=this.visualElement;if(!E||!E.layout)return!1;const C=measurePageBox(S,E.root,this.visualElement.getTransformPagePoint());let _=calcViewportConstraints(E.layout.layoutBox,C);if(T){const P=T(convertBoxToBoundingBox(_));this.hasMutatedConstraints=!!P,P&&(_=convertBoundingBoxToBox(P))}return _}startAnimation(u){const{drag:T,dragMomentum:S,dragElastic:E,dragTransition:C,dragSnapToOrigin:_,onDragTransitionEnd:P}=this.getProps(),R=this.constraints||{},I=eachAxis(L=>{if(!shouldDrag(L,T,this.currentDirection))return;let j=R&&R[L]||{};_&&(j={min:0,max:0});const M=E?200:1e6,D=E?40:1e7,F={type:"inertia",velocity:S?u[L]:0,bounceStiffness:M,bounceDamping:D,timeConstant:750,restDelta:1,restSpeed:10,...C,...j};return this.startAxisValueAnimation(L,F)});return Promise.all(I).then(P)}startAxisValueAnimation(u,T){const S=this.getAxisMotionValue(u);return addValueToWillChange(this.visualElement,u),S.start(animateMotionValue(u,S,0,T,this.visualElement,!1))}stopAnimation(){eachAxis(u=>this.getAxisMotionValue(u).stop())}pauseAnimation(){eachAxis(u=>{var T;return(T=this.getAxisMotionValue(u).animation)===null||T===void 0?void 0:T.pause()})}getAnimationState(u){var T;return(T=this.getAxisMotionValue(u).animation)===null||T===void 0?void 0:T.state}getAxisMotionValue(u){const T=`_drag${u.toUpperCase()}`,S=this.visualElement.getProps(),E=S[T];return E||this.visualElement.getValue(u,(S.initial?S.initial[u]:void 0)||0)}snapToCursor(u){eachAxis(T=>{const{drag:S}=this.getProps();if(!shouldDrag(T,S,this.currentDirection))return;const{projection:E}=this.visualElement,C=this.getAxisMotionValue(T);if(E&&E.layout){const{min:_,max:P}=E.layout.layoutBox[T];C.set(u[T]-mixNumber$1(_,P,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:u,dragConstraints:T}=this.getProps(),{projection:S}=this.visualElement;if(!isRefObject(T)||!S||!this.constraints)return;this.stopAnimation();const E={x:0,y:0};eachAxis(_=>{const P=this.getAxisMotionValue(_);if(P&&this.constraints!==!1){const R=P.get();E[_]=calcOrigin({min:R,max:R},this.constraints[_])}});const{transformTemplate:C}=this.visualElement.getProps();this.visualElement.current.style.transform=C?C({},""):"none",S.root&&S.root.updateScroll(),S.updateLayout(),this.resolveConstraints(),eachAxis(_=>{if(!shouldDrag(_,u,null))return;const P=this.getAxisMotionValue(_),{min:R,max:I}=this.constraints[_];P.set(mixNumber$1(R,I,E[_]))})}addListeners(){if(!this.visualElement.current)return;elementDragControls.set(this.visualElement,this);const u=this.visualElement.current,T=addPointerEvent(u,"pointerdown",R=>{const{drag:I,dragListener:L=!0}=this.getProps();I&&L&&this.start(R)}),S=()=>{const{dragConstraints:R}=this.getProps();isRefObject(R)&&R.current&&(this.constraints=this.resolveRefConstraints())},{projection:E}=this.visualElement,C=E.addEventListener("measure",S);E&&!E.layout&&(E.root&&E.root.updateScroll(),E.updateLayout()),frame.read(S);const _=addDomEvent(window,"resize",()=>this.scalePositionWithinConstraints()),P=E.addEventListener("didUpdate",({delta:R,hasLayoutChanged:I})=>{this.isDragging&&I&&(eachAxis(L=>{const j=this.getAxisMotionValue(L);j&&(this.originPoint[L]+=R[L].translate,j.set(j.get()+R[L].translate))}),this.visualElement.render())});return()=>{_(),T(),C(),P&&P()}}getProps(){const u=this.visualElement.getProps(),{drag:T=!1,dragDirectionLock:S=!1,dragPropagation:E=!1,dragConstraints:C=!1,dragElastic:_=defaultElastic,dragMomentum:P=!0}=u;return{...u,drag:T,dragDirectionLock:S,dragPropagation:E,dragConstraints:C,dragElastic:_,dragMomentum:P}}}function shouldDrag(o,u,T){return(u===!0||u===o)&&(T===null||T===o)}function getCurrentDirection(o,u=10){let T=null;return Math.abs(o.y)>u?T="y":Math.abs(o.x)>u&&(T="x"),T}class DragGesture extends Feature{constructor(u){super(u),this.removeGroupControls=noop$1,this.removeListeners=noop$1,this.controls=new VisualElementDragControls(u)}mount(){const{dragControls:u}=this.node.getProps();u&&(this.removeGroupControls=u.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||noop$1}unmount(){this.removeGroupControls(),this.removeListeners()}}const asyncHandler=o=>(u,T)=>{o&&frame.postRender(()=>o(u,T))};class PanGesture extends Feature{constructor(){super(...arguments),this.removePointerDownListener=noop$1}onPointerDown(u){this.session=new PanSession(u,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:getContextWindow(this.node)})}createPanHandlers(){const{onPanSessionStart:u,onPanStart:T,onPan:S,onPanEnd:E}=this.node.getProps();return{onSessionStart:asyncHandler(u),onStart:asyncHandler(T),onMove:S,onEnd:(C,_)=>{delete this.session,E&&frame.postRender(()=>E(C,_))}}}mount(){this.removePointerDownListener=addPointerEvent(this.node.current,"pointerdown",u=>this.onPointerDown(u))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const globalProjectionState={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function pixelsToPercent(o,u){return u.max===u.min?0:o/(u.max-u.min)*100}const correctBorderRadius={correct:(o,u)=>{if(!u.target)return o;if(typeof o=="string")if(px.test(o))o=parseFloat(o);else return o;const T=pixelsToPercent(o,u.target.x),S=pixelsToPercent(o,u.target.y);return`${T}% ${S}%`}},correctBoxShadow={correct:(o,{treeScale:u,projectionDelta:T})=>{const S=o,E=complex.parse(o);if(E.length>5)return S;const C=complex.createTransformer(o),_=typeof E[0]!="number"?1:0,P=T.x.scale*u.x,R=T.y.scale*u.y;E[0+_]/=P,E[1+_]/=R;const I=mixNumber$1(P,R,.5);return typeof E[2+_]=="number"&&(E[2+_]/=I),typeof E[3+_]=="number"&&(E[3+_]/=I),C(E)}};class MeasureLayoutWithContext extends reactExports.Component{componentDidMount(){const{visualElement:u,layoutGroup:T,switchLayoutGroup:S,layoutId:E}=this.props,{projection:C}=u;addScaleCorrector(defaultScaleCorrectors),C&&(T.group&&T.group.add(C),S&&S.register&&E&&S.register(C),C.root.didUpdate(),C.addEventListener("animationComplete",()=>{this.safeToRemove()}),C.setOptions({...C.options,onExitComplete:()=>this.safeToRemove()})),globalProjectionState.hasEverUpdated=!0}getSnapshotBeforeUpdate(u){const{layoutDependency:T,visualElement:S,drag:E,isPresent:C}=this.props,_=S.projection;return _&&(_.isPresent=C,E||u.layoutDependency!==T||T===void 0?_.willUpdate():this.safeToRemove(),u.isPresent!==C&&(C?_.promote():_.relegate()||frame.postRender(()=>{const P=_.getStack();(!P||!P.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:u}=this.props.visualElement;u&&(u.root.didUpdate(),microtask.postRender(()=>{!u.currentAnimation&&u.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:u,layoutGroup:T,switchLayoutGroup:S}=this.props,{projection:E}=u;E&&(E.scheduleCheckAfterUnmount(),T&&T.group&&T.group.remove(E),S&&S.deregister&&S.deregister(E))}safeToRemove(){const{safeToRemove:u}=this.props;u&&u()}render(){return null}}function MeasureLayout(o){const[u,T]=usePresence(),S=reactExports.useContext(LayoutGroupContext);return jsxRuntimeExports.jsx(MeasureLayoutWithContext,{...o,layoutGroup:S,switchLayoutGroup:reactExports.useContext(SwitchLayoutGroupContext),isPresent:u,safeToRemove:T})}const defaultScaleCorrectors={borderRadius:{...correctBorderRadius,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:correctBorderRadius,borderTopRightRadius:correctBorderRadius,borderBottomLeftRadius:correctBorderRadius,borderBottomRightRadius:correctBorderRadius,boxShadow:correctBoxShadow};function animateSingleValue(o,u,T){const S=isMotionValue(o)?o:motionValue(o);return S.start(animateMotionValue("",S,u,T)),S.animation}function isSVGElement(o){return o instanceof SVGElement&&o.tagName!=="svg"}const compareByDepth=(o,u)=>o.depth-u.depth;class FlatTree{constructor(){this.children=[],this.isDirty=!1}add(u){addUniqueItem(this.children,u),this.isDirty=!0}remove(u){removeItem(this.children,u),this.isDirty=!0}forEach(u){this.isDirty&&this.children.sort(compareByDepth),this.isDirty=!1,this.children.forEach(u)}}function delay(o,u){const T=time.now(),S=({timestamp:E})=>{const C=E-T;C>=u&&(cancelFrame(S),o(C-u))};return frame.read(S,!0),()=>cancelFrame(S)}const borders=["TopLeft","TopRight","BottomLeft","BottomRight"],numBorders=borders.length,asNumber=o=>typeof o=="string"?parseFloat(o):o,isPx=o=>typeof o=="number"||px.test(o);function mixValues(o,u,T,S,E,C){E?(o.opacity=mixNumber$1(0,T.opacity!==void 0?T.opacity:1,easeCrossfadeIn(S)),o.opacityExit=mixNumber$1(u.opacity!==void 0?u.opacity:1,0,easeCrossfadeOut(S))):C&&(o.opacity=mixNumber$1(u.opacity!==void 0?u.opacity:1,T.opacity!==void 0?T.opacity:1,S));for(let _=0;_<numBorders;_++){const P=`border${borders[_]}Radius`;let R=getRadius(u,P),I=getRadius(T,P);if(R===void 0&&I===void 0)continue;R||(R=0),I||(I=0),R===0||I===0||isPx(R)===isPx(I)?(o[P]=Math.max(mixNumber$1(asNumber(R),asNumber(I),S),0),(percent.test(I)||percent.test(R))&&(o[P]+="%")):o[P]=I}(u.rotate||T.rotate)&&(o.rotate=mixNumber$1(u.rotate||0,T.rotate||0,S))}function getRadius(o,u){return o[u]!==void 0?o[u]:o.borderRadius}const easeCrossfadeIn=compress(0,.5,circOut),easeCrossfadeOut=compress(.5,.95,noop$1);function compress(o,u,T){return S=>S<o?0:S>u?1:T(progress(o,u,S))}function copyAxisInto(o,u){o.min=u.min,o.max=u.max}function copyBoxInto(o,u){copyAxisInto(o.x,u.x),copyAxisInto(o.y,u.y)}function copyAxisDeltaInto(o,u){o.translate=u.translate,o.scale=u.scale,o.originPoint=u.originPoint,o.origin=u.origin}function removePointDelta(o,u,T,S,E){return o-=u,o=scalePoint(o,1/T,S),E!==void 0&&(o=scalePoint(o,1/E,S)),o}function removeAxisDelta(o,u=0,T=1,S=.5,E,C=o,_=o){if(percent.test(u)&&(u=parseFloat(u),u=mixNumber$1(_.min,_.max,u/100)-_.min),typeof u!="number")return;let P=mixNumber$1(C.min,C.max,S);o===C&&(P-=u),o.min=removePointDelta(o.min,u,T,P,E),o.max=removePointDelta(o.max,u,T,P,E)}function removeAxisTransforms(o,u,[T,S,E],C,_){removeAxisDelta(o,u[T],u[S],u[E],u.scale,C,_)}const xKeys=["x","scaleX","originX"],yKeys=["y","scaleY","originY"];function removeBoxTransforms(o,u,T,S){removeAxisTransforms(o.x,u,xKeys,T?T.x:void 0,S?S.x:void 0),removeAxisTransforms(o.y,u,yKeys,T?T.y:void 0,S?S.y:void 0)}function isAxisDeltaZero(o){return o.translate===0&&o.scale===1}function isDeltaZero(o){return isAxisDeltaZero(o.x)&&isAxisDeltaZero(o.y)}function axisEquals(o,u){return o.min===u.min&&o.max===u.max}function boxEquals(o,u){return axisEquals(o.x,u.x)&&axisEquals(o.y,u.y)}function axisEqualsRounded(o,u){return Math.round(o.min)===Math.round(u.min)&&Math.round(o.max)===Math.round(u.max)}function boxEqualsRounded(o,u){return axisEqualsRounded(o.x,u.x)&&axisEqualsRounded(o.y,u.y)}function aspectRatio(o){return calcLength(o.x)/calcLength(o.y)}function axisDeltaEquals(o,u){return o.translate===u.translate&&o.scale===u.scale&&o.originPoint===u.originPoint}class NodeStack{constructor(){this.members=[]}add(u){addUniqueItem(this.members,u),u.scheduleRender()}remove(u){if(removeItem(this.members,u),u===this.prevLead&&(this.prevLead=void 0),u===this.lead){const T=this.members[this.members.length-1];T&&this.promote(T)}}relegate(u){const T=this.members.findIndex(E=>u===E);if(T===0)return!1;let S;for(let E=T;E>=0;E--){const C=this.members[E];if(C.isPresent!==!1){S=C;break}}return S?(this.promote(S),!0):!1}promote(u,T){const S=this.lead;if(u!==S&&(this.prevLead=S,this.lead=u,u.show(),S)){S.instance&&S.scheduleRender(),u.scheduleRender(),u.resumeFrom=S,T&&(u.resumeFrom.preserveOpacity=!0),S.snapshot&&(u.snapshot=S.snapshot,u.snapshot.latestValues=S.animationValues||S.latestValues),u.root&&u.root.isUpdating&&(u.isLayoutDirty=!0);const{crossfade:E}=u.options;E===!1&&S.hide()}}exitAnimationComplete(){this.members.forEach(u=>{const{options:T,resumingFrom:S}=u;T.onExitComplete&&T.onExitComplete(),S&&S.options.onExitComplete&&S.options.onExitComplete()})}scheduleRender(){this.members.forEach(u=>{u.instance&&u.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function buildProjectionTransform(o,u,T){let S="";const E=o.x.translate/u.x,C=o.y.translate/u.y,_=(T==null?void 0:T.z)||0;if((E||C||_)&&(S=`translate3d(${E}px, ${C}px, ${_}px) `),(u.x!==1||u.y!==1)&&(S+=`scale(${1/u.x}, ${1/u.y}) `),T){const{transformPerspective:I,rotate:L,rotateX:j,rotateY:M,skewX:D,skewY:F}=T;I&&(S=`perspective(${I}px) ${S}`),L&&(S+=`rotate(${L}deg) `),j&&(S+=`rotateX(${j}deg) `),M&&(S+=`rotateY(${M}deg) `),D&&(S+=`skewX(${D}deg) `),F&&(S+=`skewY(${F}deg) `)}const P=o.x.scale*u.x,R=o.y.scale*u.y;return(P!==1||R!==1)&&(S+=`scale(${P}, ${R})`),S||"none"}const metrics={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},isDebug=typeof window<"u"&&window.MotionDebug!==void 0,transformAxes=["","X","Y","Z"],hiddenVisibility={visibility:"hidden"},animationTarget=1e3;let id=0;function resetDistortingTransform(o,u,T,S){const{latestValues:E}=u;E[o]&&(T[o]=E[o],u.setStaticValue(o,0),S&&(S[o]=0))}function cancelTreeOptimisedTransformAnimations(o){if(o.hasCheckedOptimisedAppear=!0,o.root===o)return;const{visualElement:u}=o.options;if(!u)return;const T=getOptimisedAppearId(u);if(window.MotionHasOptimisedAnimation(T,"transform")){const{layout:E,layoutId:C}=o.options;window.MotionCancelOptimisedAnimation(T,"transform",frame,!(E||C))}const{parent:S}=o;S&&!S.hasCheckedOptimisedAppear&&cancelTreeOptimisedTransformAnimations(S)}function createProjectionNode({attachResizeListener:o,defaultParent:u,measureScroll:T,checkIsScrollRoot:S,resetTransform:E}){return class{constructor(_={},P=u==null?void 0:u()){this.id=id++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,isDebug&&(metrics.totalNodes=metrics.resolvedTargetDeltas=metrics.recalculatedProjection=0),this.nodes.forEach(propagateDirtyNodes),this.nodes.forEach(resolveTargetDelta),this.nodes.forEach(calcProjection),this.nodes.forEach(cleanDirtyNodes),isDebug&&window.MotionDebug.record(metrics)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=_,this.root=P?P.root||P:this,this.path=P?[...P.path,P]:[],this.parent=P,this.depth=P?P.depth+1:0;for(let R=0;R<this.path.length;R++)this.path[R].shouldResetTransform=!0;this.root===this&&(this.nodes=new FlatTree)}addEventListener(_,P){return this.eventHandlers.has(_)||this.eventHandlers.set(_,new SubscriptionManager),this.eventHandlers.get(_).add(P)}notifyListeners(_,...P){const R=this.eventHandlers.get(_);R&&R.notify(...P)}hasListeners(_){return this.eventHandlers.has(_)}mount(_,P=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=isSVGElement(_),this.instance=_;const{layoutId:R,layout:I,visualElement:L}=this.options;if(L&&!L.current&&L.mount(_),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),P&&(I||R)&&(this.isLayoutDirty=!0),o){let j;const M=()=>this.root.updateBlockedByResize=!1;o(_,()=>{this.root.updateBlockedByResize=!0,j&&j(),j=delay(M,250),globalProjectionState.hasAnimatedSinceResize&&(globalProjectionState.hasAnimatedSinceResize=!1,this.nodes.forEach(finishAnimation))})}R&&this.root.registerSharedNode(R,this),this.options.animate!==!1&&L&&(R||I)&&this.addEventListener("didUpdate",({delta:j,hasLayoutChanged:M,hasRelativeTargetChanged:D,layout:F})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const N=this.options.transition||L.getDefaultTransition()||defaultLayoutTransition,{onLayoutAnimationStart:G,onLayoutAnimationComplete:B}=L.getProps(),H=!this.targetLayout||!boxEqualsRounded(this.targetLayout,F)||D,O=!M&&D;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||O||M&&(H||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(j,O);const V={...getValueTransition(N,"layout"),onPlay:G,onComplete:B};(L.shouldReduceMotion||this.options.layoutRoot)&&(V.delay=0,V.type=!1),this.startAnimation(V)}else M||finishAnimation(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=F})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const _=this.getStack();_&&_.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,cancelFrame(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(resetSkewAndRotation),this.animationId++)}getTransformTemplate(){const{visualElement:_}=this.options;return _&&_.getProps().transformTemplate}willUpdate(_=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&cancelTreeOptimisedTransformAnimations(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let L=0;L<this.path.length;L++){const j=this.path[L];j.shouldResetTransform=!0,j.updateScroll("snapshot"),j.options.layoutRoot&&j.willUpdate(!1)}const{layoutId:P,layout:R}=this.options;if(P===void 0&&!R)return;const I=this.getTransformTemplate();this.prevTransformTemplateValue=I?I(this.latestValues,""):void 0,this.updateSnapshot(),_&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(clearMeasurements);return}this.isUpdating||this.nodes.forEach(clearIsLayoutDirty),this.isUpdating=!1,this.nodes.forEach(resetTransformStyle),this.nodes.forEach(updateLayout),this.nodes.forEach(notifyLayoutUpdate),this.clearAllSnapshots();const P=time.now();frameData.delta=clamp(0,1e3/60,P-frameData.timestamp),frameData.timestamp=P,frameData.isProcessing=!0,frameSteps.update.process(frameData),frameSteps.preRender.process(frameData),frameSteps.render.process(frameData),frameData.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,microtask.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(clearSnapshot),this.sharedNodes.forEach(removeLeadSnapshots)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,frame.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){frame.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let R=0;R<this.path.length;R++)this.path[R].updateScroll();const _=this.layout;this.layout=this.measure(!1),this.layoutCorrected=createBox(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:P}=this.options;P&&P.notify("LayoutMeasure",this.layout.layoutBox,_?_.layoutBox:void 0)}updateScroll(_="measure"){let P=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===_&&(P=!1),P){const R=S(this.instance);this.scroll={animationId:this.root.animationId,phase:_,isRoot:R,offset:T(this.instance),wasRoot:this.scroll?this.scroll.isRoot:R}}}resetTransform(){if(!E)return;const _=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,P=this.projectionDelta&&!isDeltaZero(this.projectionDelta),R=this.getTransformTemplate(),I=R?R(this.latestValues,""):void 0,L=I!==this.prevTransformTemplateValue;_&&(P||hasTransform(this.latestValues)||L)&&(E(this.instance,I),this.shouldResetTransform=!1,this.scheduleRender())}measure(_=!0){const P=this.measurePageBox();let R=this.removeElementScroll(P);return _&&(R=this.removeTransform(R)),roundBox(R),{animationId:this.root.animationId,measuredBox:P,layoutBox:R,latestValues:{},source:this.id}}measurePageBox(){var _;const{visualElement:P}=this.options;if(!P)return createBox();const R=P.measureViewportBox();if(!(((_=this.scroll)===null||_===void 0?void 0:_.wasRoot)||this.path.some(checkNodeWasScrollRoot))){const{scroll:L}=this.root;L&&(translateAxis(R.x,L.offset.x),translateAxis(R.y,L.offset.y))}return R}removeElementScroll(_){var P;const R=createBox();if(copyBoxInto(R,_),!((P=this.scroll)===null||P===void 0)&&P.wasRoot)return R;for(let I=0;I<this.path.length;I++){const L=this.path[I],{scroll:j,options:M}=L;L!==this.root&&j&&M.layoutScroll&&(j.wasRoot&©BoxInto(R,_),translateAxis(R.x,j.offset.x),translateAxis(R.y,j.offset.y))}return R}applyTransform(_,P=!1){const R=createBox();copyBoxInto(R,_);for(let I=0;I<this.path.length;I++){const L=this.path[I];!P&&L.options.layoutScroll&&L.scroll&&L!==L.root&&transformBox(R,{x:-L.scroll.offset.x,y:-L.scroll.offset.y}),hasTransform(L.latestValues)&&transformBox(R,L.latestValues)}return hasTransform(this.latestValues)&&transformBox(R,this.latestValues),R}removeTransform(_){const P=createBox();copyBoxInto(P,_);for(let R=0;R<this.path.length;R++){const I=this.path[R];if(!I.instance||!hasTransform(I.latestValues))continue;hasScale(I.latestValues)&&I.updateSnapshot();const L=createBox(),j=I.measurePageBox();copyBoxInto(L,j),removeBoxTransforms(P,I.latestValues,I.snapshot?I.snapshot.layoutBox:void 0,L)}return hasTransform(this.latestValues)&&removeBoxTransforms(P,this.latestValues),P}setTargetDelta(_){this.targetDelta=_,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(_){this.options={...this.options,..._,crossfade:_.crossfade!==void 0?_.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==frameData.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(_=!1){var P;const R=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=R.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=R.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=R.isSharedProjectionDirty);const I=!!this.resumingFrom||this!==R;if(!(_||I&&this.isSharedProjectionDirty||this.isProjectionDirty||!((P=this.parent)===null||P===void 0)&&P.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:j,layoutId:M}=this.options;if(!(!this.layout||!(j||M))){if(this.resolvedRelativeTargetAt=frameData.timestamp,!this.targetDelta&&!this.relativeTarget){const D=this.getClosestProjectingParent();D&&D.layout&&this.animationProgress!==1?(this.relativeParent=D,this.forceRelativeParentToResolveTarget(),this.relativeTarget=createBox(),this.relativeTargetOrigin=createBox(),calcRelativePosition(this.relativeTargetOrigin,this.layout.layoutBox,D.layout.layoutBox),copyBoxInto(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=createBox(),this.targetWithTransforms=createBox()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),calcRelativeBox(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):copyBoxInto(this.target,this.layout.layoutBox),applyBoxDelta(this.target,this.targetDelta)):copyBoxInto(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const D=this.getClosestProjectingParent();D&&!!D.resumingFrom==!!this.resumingFrom&&!D.options.layoutScroll&&D.target&&this.animationProgress!==1?(this.relativeParent=D,this.forceRelativeParentToResolveTarget(),this.relativeTarget=createBox(),this.relativeTargetOrigin=createBox(),calcRelativePosition(this.relativeTargetOrigin,this.target,D.target),copyBoxInto(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}isDebug&&metrics.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||hasScale(this.parent.latestValues)||has2DTranslate(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var _;const P=this.getLead(),R=!!this.resumingFrom||this!==P;let I=!0;if((this.isProjectionDirty||!((_=this.parent)===null||_===void 0)&&_.isProjectionDirty)&&(I=!1),R&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(I=!1),this.resolvedRelativeTargetAt===frameData.timestamp&&(I=!1),I)return;const{layout:L,layoutId:j}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(L||j))return;copyBoxInto(this.layoutCorrected,this.layout.layoutBox);const M=this.treeScale.x,D=this.treeScale.y;applyTreeDeltas(this.layoutCorrected,this.treeScale,this.path,R),P.layout&&!P.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(P.target=P.layout.layoutBox,P.targetWithTransforms=createBox());const{target:F}=P;if(!F){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(copyAxisDeltaInto(this.prevProjectionDelta.x,this.projectionDelta.x),copyAxisDeltaInto(this.prevProjectionDelta.y,this.projectionDelta.y)),calcBoxDelta(this.projectionDelta,this.layoutCorrected,F,this.latestValues),(this.treeScale.x!==M||this.treeScale.y!==D||!axisDeltaEquals(this.projectionDelta.x,this.prevProjectionDelta.x)||!axisDeltaEquals(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",F)),isDebug&&metrics.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(_=!0){var P;if((P=this.options.visualElement)===null||P===void 0||P.scheduleRender(),_){const R=this.getStack();R&&R.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=createDelta(),this.projectionDelta=createDelta(),this.projectionDeltaWithTransform=createDelta()}setAnimationOrigin(_,P=!1){const R=this.snapshot,I=R?R.latestValues:{},L={...this.latestValues},j=createDelta();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!P;const M=createBox(),D=R?R.source:void 0,F=this.layout?this.layout.source:void 0,N=D!==F,G=this.getStack(),B=!G||G.members.length<=1,H=!!(N&&!B&&this.options.crossfade===!0&&!this.path.some(hasOpacityCrossfade));this.animationProgress=0;let O;this.mixTargetDelta=V=>{const U=V/1e3;mixAxisDelta(j.x,_.x,U),mixAxisDelta(j.y,_.y,U),this.setTargetDelta(j),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(calcRelativePosition(M,this.layout.layoutBox,this.relativeParent.layout.layoutBox),mixBox(this.relativeTarget,this.relativeTargetOrigin,M,U),O&&boxEquals(this.relativeTarget,O)&&(this.isProjectionDirty=!1),O||(O=createBox()),copyBoxInto(O,this.relativeTarget)),N&&(this.animationValues=L,mixValues(L,I,this.latestValues,U,H,B)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=U},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(_){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(cancelFrame(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=frame.update(()=>{globalProjectionState.hasAnimatedSinceResize=!0,this.currentAnimation=animateSingleValue(0,animationTarget,{..._,onUpdate:P=>{this.mixTargetDelta(P),_.onUpdate&&_.onUpdate(P)},onComplete:()=>{_.onComplete&&_.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const _=this.getStack();_&&_.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(animationTarget),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const _=this.getLead();let{targetWithTransforms:P,target:R,layout:I,latestValues:L}=_;if(!(!P||!R||!I)){if(this!==_&&this.layout&&I&&shouldAnimatePositionOnly(this.options.animationType,this.layout.layoutBox,I.layoutBox)){R=this.target||createBox();const j=calcLength(this.layout.layoutBox.x);R.x.min=_.target.x.min,R.x.max=R.x.min+j;const M=calcLength(this.layout.layoutBox.y);R.y.min=_.target.y.min,R.y.max=R.y.min+M}copyBoxInto(P,R),transformBox(P,L),calcBoxDelta(this.projectionDeltaWithTransform,this.layoutCorrected,P,L)}}registerSharedNode(_,P){this.sharedNodes.has(_)||this.sharedNodes.set(_,new NodeStack),this.sharedNodes.get(_).add(P);const I=P.options.initialPromotionConfig;P.promote({transition:I?I.transition:void 0,preserveFollowOpacity:I&&I.shouldPreserveFollowOpacity?I.shouldPreserveFollowOpacity(P):void 0})}isLead(){const _=this.getStack();return _?_.lead===this:!0}getLead(){var _;const{layoutId:P}=this.options;return P?((_=this.getStack())===null||_===void 0?void 0:_.lead)||this:this}getPrevLead(){var _;const{layoutId:P}=this.options;return P?(_=this.getStack())===null||_===void 0?void 0:_.prevLead:void 0}getStack(){const{layoutId:_}=this.options;if(_)return this.root.sharedNodes.get(_)}promote({needsReset:_,transition:P,preserveFollowOpacity:R}={}){const I=this.getStack();I&&I.promote(this,R),_&&(this.projectionDelta=void 0,this.needsReset=!0),P&&this.setOptions({transition:P})}relegate(){const _=this.getStack();return _?_.relegate(this):!1}resetSkewAndRotation(){const{visualElement:_}=this.options;if(!_)return;let P=!1;const{latestValues:R}=_;if((R.z||R.rotate||R.rotateX||R.rotateY||R.rotateZ||R.skewX||R.skewY)&&(P=!0),!P)return;const I={};R.z&&resetDistortingTransform("z",_,I,this.animationValues);for(let L=0;L<transformAxes.length;L++)resetDistortingTransform(`rotate${transformAxes[L]}`,_,I,this.animationValues),resetDistortingTransform(`skew${transformAxes[L]}`,_,I,this.animationValues);_.render();for(const L in I)_.setStaticValue(L,I[L]),this.animationValues&&(this.animationValues[L]=I[L]);_.scheduleRender()}getProjectionStyles(_){var P,R;if(!this.instance||this.isSVG)return;if(!this.isVisible)return hiddenVisibility;const I={visibility:""},L=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,I.opacity="",I.pointerEvents=resolveMotionValue(_==null?void 0:_.pointerEvents)||"",I.transform=L?L(this.latestValues,""):"none",I;const j=this.getLead();if(!this.projectionDelta||!this.layout||!j.target){const N={};return this.options.layoutId&&(N.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,N.pointerEvents=resolveMotionValue(_==null?void 0:_.pointerEvents)||""),this.hasProjected&&!hasTransform(this.latestValues)&&(N.transform=L?L({},""):"none",this.hasProjected=!1),N}const M=j.animationValues||j.latestValues;this.applyTransformsToTarget(),I.transform=buildProjectionTransform(this.projectionDeltaWithTransform,this.treeScale,M),L&&(I.transform=L(M,I.transform));const{x:D,y:F}=this.projectionDelta;I.transformOrigin=`${D.origin*100}% ${F.origin*100}% 0`,j.animationValues?I.opacity=j===this?(R=(P=M.opacity)!==null&&P!==void 0?P:this.latestValues.opacity)!==null&&R!==void 0?R:1:this.preserveOpacity?this.latestValues.opacity:M.opacityExit:I.opacity=j===this?M.opacity!==void 0?M.opacity:"":M.opacityExit!==void 0?M.opacityExit:0;for(const N in scaleCorrectors){if(M[N]===void 0)continue;const{correct:G,applyTo:B}=scaleCorrectors[N],H=I.transform==="none"?M[N]:G(M[N],j);if(B){const O=B.length;for(let V=0;V<O;V++)I[B[V]]=H}else I[N]=H}return this.options.layoutId&&(I.pointerEvents=j===this?resolveMotionValue(_==null?void 0:_.pointerEvents)||"":"none"),I}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(_=>{var P;return(P=_.currentAnimation)===null||P===void 0?void 0:P.stop()}),this.root.nodes.forEach(clearMeasurements),this.root.sharedNodes.clear()}}}function updateLayout(o){o.updateLayout()}function notifyLayoutUpdate(o){var u;const T=((u=o.resumeFrom)===null||u===void 0?void 0:u.snapshot)||o.snapshot;if(o.isLead()&&o.layout&&T&&o.hasListeners("didUpdate")){const{layoutBox:S,measuredBox:E}=o.layout,{animationType:C}=o.options,_=T.source!==o.layout.source;C==="size"?eachAxis(j=>{const M=_?T.measuredBox[j]:T.layoutBox[j],D=calcLength(M);M.min=S[j].min,M.max=M.min+D}):shouldAnimatePositionOnly(C,T.layoutBox,S)&&eachAxis(j=>{const M=_?T.measuredBox[j]:T.layoutBox[j],D=calcLength(S[j]);M.max=M.min+D,o.relativeTarget&&!o.currentAnimation&&(o.isProjectionDirty=!0,o.relativeTarget[j].max=o.relativeTarget[j].min+D)});const P=createDelta();calcBoxDelta(P,S,T.layoutBox);const R=createDelta();_?calcBoxDelta(R,o.applyTransform(E,!0),T.measuredBox):calcBoxDelta(R,S,T.layoutBox);const I=!isDeltaZero(P);let L=!1;if(!o.resumeFrom){const j=o.getClosestProjectingParent();if(j&&!j.resumeFrom){const{snapshot:M,layout:D}=j;if(M&&D){const F=createBox();calcRelativePosition(F,T.layoutBox,M.layoutBox);const N=createBox();calcRelativePosition(N,S,D.layoutBox),boxEqualsRounded(F,N)||(L=!0),j.options.layoutRoot&&(o.relativeTarget=N,o.relativeTargetOrigin=F,o.relativeParent=j)}}}o.notifyListeners("didUpdate",{layout:S,snapshot:T,delta:R,layoutDelta:P,hasLayoutChanged:I,hasRelativeTargetChanged:L})}else if(o.isLead()){const{onExitComplete:S}=o.options;S&&S()}o.options.transition=void 0}function propagateDirtyNodes(o){isDebug&&metrics.totalNodes++,o.parent&&(o.isProjecting()||(o.isProjectionDirty=o.parent.isProjectionDirty),o.isSharedProjectionDirty||(o.isSharedProjectionDirty=!!(o.isProjectionDirty||o.parent.isProjectionDirty||o.parent.isSharedProjectionDirty)),o.isTransformDirty||(o.isTransformDirty=o.parent.isTransformDirty))}function cleanDirtyNodes(o){o.isProjectionDirty=o.isSharedProjectionDirty=o.isTransformDirty=!1}function clearSnapshot(o){o.clearSnapshot()}function clearMeasurements(o){o.clearMeasurements()}function clearIsLayoutDirty(o){o.isLayoutDirty=!1}function resetTransformStyle(o){const{visualElement:u}=o.options;u&&u.getProps().onBeforeLayoutMeasure&&u.notify("BeforeLayoutMeasure"),o.resetTransform()}function finishAnimation(o){o.finishAnimation(),o.targetDelta=o.relativeTarget=o.target=void 0,o.isProjectionDirty=!0}function resolveTargetDelta(o){o.resolveTargetDelta()}function calcProjection(o){o.calcProjection()}function resetSkewAndRotation(o){o.resetSkewAndRotation()}function removeLeadSnapshots(o){o.removeLeadSnapshot()}function mixAxisDelta(o,u,T){o.translate=mixNumber$1(u.translate,0,T),o.scale=mixNumber$1(u.scale,1,T),o.origin=u.origin,o.originPoint=u.originPoint}function mixAxis(o,u,T,S){o.min=mixNumber$1(u.min,T.min,S),o.max=mixNumber$1(u.max,T.max,S)}function mixBox(o,u,T,S){mixAxis(o.x,u.x,T.x,S),mixAxis(o.y,u.y,T.y,S)}function hasOpacityCrossfade(o){return o.animationValues&&o.animationValues.opacityExit!==void 0}const defaultLayoutTransition={duration:.45,ease:[.4,0,.1,1]},userAgentContains=o=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(o),roundPoint=userAgentContains("applewebkit/")&&!userAgentContains("chrome/")?Math.round:noop$1;function roundAxis(o){o.min=roundPoint(o.min),o.max=roundPoint(o.max)}function roundBox(o){roundAxis(o.x),roundAxis(o.y)}function shouldAnimatePositionOnly(o,u,T){return o==="position"||o==="preserve-aspect"&&!isNear(aspectRatio(u),aspectRatio(T),.2)}function checkNodeWasScrollRoot(o){var u;return o!==o.root&&((u=o.scroll)===null||u===void 0?void 0:u.wasRoot)}const DocumentProjectionNode=createProjectionNode({attachResizeListener:(o,u)=>addDomEvent(o,"resize",u),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),rootProjectionNode={current:void 0},HTMLProjectionNode=createProjectionNode({measureScroll:o=>({x:o.scrollLeft,y:o.scrollTop}),defaultParent:()=>{if(!rootProjectionNode.current){const o=new DocumentProjectionNode({});o.mount(window),o.setOptions({layoutScroll:!0}),rootProjectionNode.current=o}return rootProjectionNode.current},resetTransform:(o,u)=>{o.style.transform=u!==void 0?u:"none"},checkIsScrollRoot:o=>window.getComputedStyle(o).position==="fixed"}),drag={pan:{Feature:PanGesture},drag:{Feature:DragGesture,ProjectionNode:HTMLProjectionNode,MeasureLayout}};function handleHoverEvent(o,u,T){const{props:S}=o;o.animationState&&S.whileHover&&o.animationState.setActive("whileHover",T==="Start");const E="onHover"+T,C=S[E];C&&frame.postRender(()=>C(u,extractEventInfo(u)))}class HoverGesture extends Feature{mount(){const{current:u}=this.node;u&&(this.unmount=hover(u,T=>(handleHoverEvent(this.node,T,"Start"),S=>handleHoverEvent(this.node,S,"End"))))}unmount(){}}class FocusGesture extends Feature{constructor(){super(...arguments),this.isActive=!1}onFocus(){let u=!1;try{u=this.node.current.matches(":focus-visible")}catch{u=!0}!u||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=pipe(addDomEvent(this.node.current,"focus",()=>this.onFocus()),addDomEvent(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function handlePressEvent(o,u,T){const{props:S}=o;o.animationState&&S.whileTap&&o.animationState.setActive("whileTap",T==="Start");const E="onTap"+(T==="End"?"":T),C=S[E];C&&frame.postRender(()=>C(u,extractEventInfo(u)))}class PressGesture extends Feature{mount(){const{current:u}=this.node;u&&(this.unmount=press(u,T=>(handlePressEvent(this.node,T,"Start"),(S,{success:E})=>handlePressEvent(this.node,S,E?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const observerCallbacks=new WeakMap,observers=new WeakMap,fireObserverCallback=o=>{const u=observerCallbacks.get(o.target);u&&u(o)},fireAllObserverCallbacks=o=>{o.forEach(fireObserverCallback)};function initIntersectionObserver({root:o,...u}){const T=o||document;observers.has(T)||observers.set(T,{});const S=observers.get(T),E=JSON.stringify(u);return S[E]||(S[E]=new IntersectionObserver(fireAllObserverCallbacks,{root:o,...u})),S[E]}function observeIntersection(o,u,T){const S=initIntersectionObserver(u);return observerCallbacks.set(o,T),S.observe(o),()=>{observerCallbacks.delete(o),S.unobserve(o)}}const thresholdNames={some:0,all:1};class InViewFeature extends Feature{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:u={}}=this.node.getProps(),{root:T,margin:S,amount:E="some",once:C}=u,_={root:T?T.current:void 0,rootMargin:S,threshold:typeof E=="number"?E:thresholdNames[E]},P=R=>{const{isIntersecting:I}=R;if(this.isInView===I||(this.isInView=I,C&&!I&&this.hasEnteredView))return;I&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",I);const{onViewportEnter:L,onViewportLeave:j}=this.node.getProps(),M=I?L:j;M&&M(R)};return observeIntersection(this.node.current,_,P)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:u,prevProps:T}=this.node;["amount","margin","root"].some(hasViewportOptionChanged(u,T))&&this.startObserver()}unmount(){}}function hasViewportOptionChanged({viewport:o={}},{viewport:u={}}={}){return T=>o[T]!==u[T]}const gestureAnimations={inView:{Feature:InViewFeature},tap:{Feature:PressGesture},focus:{Feature:FocusGesture},hover:{Feature:HoverGesture}},layout={layout:{ProjectionNode:HTMLProjectionNode,MeasureLayout}},prefersReducedMotion={current:null},hasReducedMotionListener={current:!1};function initPrefersReducedMotion(){if(hasReducedMotionListener.current=!0,!!isBrowser)if(window.matchMedia){const o=window.matchMedia("(prefers-reduced-motion)"),u=()=>prefersReducedMotion.current=o.matches;o.addListener(u),u()}else prefersReducedMotion.current=!1}const valueTypes=[...dimensionValueTypes,color,complex],findValueType=o=>valueTypes.find(testValueType(o)),visualElementStore=new WeakMap;function updateMotionValuesFromProps(o,u,T){for(const S in u){const E=u[S],C=T[S];if(isMotionValue(E))o.addValue(S,E);else if(isMotionValue(C))o.addValue(S,motionValue(E,{owner:o}));else if(C!==E)if(o.hasValue(S)){const _=o.getValue(S);_.liveStyle===!0?_.jump(E):_.hasAnimated||_.set(E)}else{const _=o.getStaticValue(S);o.addValue(S,motionValue(_!==void 0?_:E,{owner:o}))}}for(const S in T)u[S]===void 0&&o.removeValue(S);return u}const propEventHandlers=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class VisualElement{scrapeMotionValuesFromProps(u,T,S){return{}}constructor({parent:u,props:T,presenceContext:S,reducedMotionConfig:E,blockInitialAnimation:C,visualState:_},P={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=KeyframeResolver,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const D=time.now();this.renderScheduledAt<D&&(this.renderScheduledAt=D,frame.render(this.render,!1,!0))};const{latestValues:R,renderState:I,onUpdate:L}=_;this.onUpdate=L,this.latestValues=R,this.baseTarget={...R},this.initialValues=T.initial?{...R}:{},this.renderState=I,this.parent=u,this.props=T,this.presenceContext=S,this.depth=u?u.depth+1:0,this.reducedMotionConfig=E,this.options=P,this.blockInitialAnimation=!!C,this.isControllingVariants=isControllingVariants(T),this.isVariantNode=isVariantNode(T),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(u&&u.current);const{willChange:j,...M}=this.scrapeMotionValuesFromProps(T,{},this);for(const D in M){const F=M[D];R[D]!==void 0&&isMotionValue(F)&&F.set(R[D],!1)}}mount(u){this.current=u,visualElementStore.set(u,this),this.projection&&!this.projection.instance&&this.projection.mount(u),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((T,S)=>this.bindToMotionValue(S,T)),hasReducedMotionListener.current||initPrefersReducedMotion(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:prefersReducedMotion.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){visualElementStore.delete(this.current),this.projection&&this.projection.unmount(),cancelFrame(this.notifyUpdate),cancelFrame(this.render),this.valueSubscriptions.forEach(u=>u()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const u in this.events)this.events[u].clear();for(const u in this.features){const T=this.features[u];T&&(T.unmount(),T.isMounted=!1)}this.current=null}bindToMotionValue(u,T){this.valueSubscriptions.has(u)&&this.valueSubscriptions.get(u)();const S=transformProps.has(u),E=T.on("change",P=>{this.latestValues[u]=P,this.props.onUpdate&&frame.preRender(this.notifyUpdate),S&&this.projection&&(this.projection.isTransformDirty=!0)}),C=T.on("renderRequest",this.scheduleRender);let _;window.MotionCheckAppearSync&&(_=window.MotionCheckAppearSync(this,u,T)),this.valueSubscriptions.set(u,()=>{E(),C(),_&&_(),T.owner&&T.stop()})}sortNodePosition(u){return!this.current||!this.sortInstanceNodePosition||this.type!==u.type?0:this.sortInstanceNodePosition(this.current,u.current)}updateFeatures(){let u="animation";for(u in featureDefinitions){const T=featureDefinitions[u];if(!T)continue;const{isEnabled:S,Feature:E}=T;if(!this.features[u]&&E&&S(this.props)&&(this.features[u]=new E(this)),this.features[u]){const C=this.features[u];C.isMounted?C.update():(C.mount(),C.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):createBox()}getStaticValue(u){return this.latestValues[u]}setStaticValue(u,T){this.latestValues[u]=T}update(u,T){(u.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=u,this.prevPresenceContext=this.presenceContext,this.presenceContext=T;for(let S=0;S<propEventHandlers.length;S++){const E=propEventHandlers[S];this.propEventSubscriptions[E]&&(this.propEventSubscriptions[E](),delete this.propEventSubscriptions[E]);const C="on"+E,_=u[C];_&&(this.propEventSubscriptions[E]=this.on(E,_))}this.prevMotionValues=updateMotionValuesFromProps(this,this.scrapeMotionValuesFromProps(u,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(u){return this.props.variants?this.props.variants[u]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(u){const T=this.getClosestVariantNode();if(T)return T.variantChildren&&T.variantChildren.add(u),()=>T.variantChildren.delete(u)}addValue(u,T){const S=this.values.get(u);T!==S&&(S&&this.removeValue(u),this.bindToMotionValue(u,T),this.values.set(u,T),this.latestValues[u]=T.get())}removeValue(u){this.values.delete(u);const T=this.valueSubscriptions.get(u);T&&(T(),this.valueSubscriptions.delete(u)),delete this.latestValues[u],this.removeValueFromRenderState(u,this.renderState)}hasValue(u){return this.values.has(u)}getValue(u,T){if(this.props.values&&this.props.values[u])return this.props.values[u];let S=this.values.get(u);return S===void 0&&T!==void 0&&(S=motionValue(T===null?void 0:T,{owner:this}),this.addValue(u,S)),S}readValue(u,T){var S;let E=this.latestValues[u]!==void 0||!this.current?this.latestValues[u]:(S=this.getBaseTargetFromProps(this.props,u))!==null&&S!==void 0?S:this.readValueFromInstance(this.current,u,this.options);return E!=null&&(typeof E=="string"&&(isNumericalString(E)||isZeroValueString(E))?E=parseFloat(E):!findValueType(E)&&complex.test(T)&&(E=getAnimatableNone(u,T)),this.setBaseTarget(u,isMotionValue(E)?E.get():E)),isMotionValue(E)?E.get():E}setBaseTarget(u,T){this.baseTarget[u]=T}getBaseTarget(u){var T;const{initial:S}=this.props;let E;if(typeof S=="string"||typeof S=="object"){const _=resolveVariantFromProps(this.props,S,(T=this.presenceContext)===null||T===void 0?void 0:T.custom);_&&(E=_[u])}if(S&&E!==void 0)return E;const C=this.getBaseTargetFromProps(this.props,u);return C!==void 0&&!isMotionValue(C)?C:this.initialValues[u]!==void 0&&E===void 0?void 0:this.baseTarget[u]}on(u,T){return this.events[u]||(this.events[u]=new SubscriptionManager),this.events[u].add(T)}notify(u,...T){this.events[u]&&this.events[u].notify(...T)}}class DOMVisualElement extends VisualElement{constructor(){super(...arguments),this.KeyframeResolver=DOMKeyframesResolver}sortInstanceNodePosition(u,T){return u.compareDocumentPosition(T)&2?1:-1}getBaseTargetFromProps(u,T){return u.style?u.style[T]:void 0}removeValueFromRenderState(u,{vars:T,style:S}){delete T[u],delete S[u]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:u}=this.props;isMotionValue(u)&&(this.childSubscription=u.on("change",T=>{this.current&&(this.current.textContent=`${T}`)}))}}function getComputedStyle$1(o){return window.getComputedStyle(o)}class HTMLVisualElement extends DOMVisualElement{constructor(){super(...arguments),this.type="html",this.renderInstance=renderHTML}readValueFromInstance(u,T){if(transformProps.has(T)){const S=getDefaultValueType(T);return S&&S.default||0}else{const S=getComputedStyle$1(u),E=(isCSSVariableName(T)?S.getPropertyValue(T):S[T])||0;return typeof E=="string"?E.trim():E}}measureInstanceViewportBox(u,{transformPagePoint:T}){return measureViewportBox(u,T)}build(u,T,S){buildHTMLStyles(u,T,S.transformTemplate)}scrapeMotionValuesFromProps(u,T,S){return scrapeMotionValuesFromProps$1(u,T,S)}}class SVGVisualElement extends DOMVisualElement{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=createBox}getBaseTargetFromProps(u,T){return u[T]}readValueFromInstance(u,T){if(transformProps.has(T)){const S=getDefaultValueType(T);return S&&S.default||0}return T=camelCaseAttributes.has(T)?T:camelToDash(T),u.getAttribute(T)}scrapeMotionValuesFromProps(u,T,S){return scrapeMotionValuesFromProps(u,T,S)}build(u,T,S){buildSVGAttrs(u,T,this.isSVGTag,S.transformTemplate)}
207renderInstance(u,T,S,E){renderSVG(u,T,S,E)}mount(u){this.isSVGTag=isSVGTag(u.tagName),super.mount(u)}}const createDomVisualElement=(o,u)=>isSVGComponent(o)?new SVGVisualElement(u):new HTMLVisualElement(u,{allowProjection:o!==reactExports.Fragment}),createMotionComponent=createMotionComponentFactory({...animations,...gestureAnimations,...drag,...layout},createDomVisualElement),motion=createDOMMotionComponentProxy(createMotionComponent),isString$1=o=>typeof o=="string",defer=()=>{let o,u;const T=new Promise((S,E)=>{o=S,u=E});return T.resolve=o,T.reject=u,T},makeString=o=>o==null?"":""+o,copy=(o,u,T)=>{o.forEach(S=>{u[S]&&(T[S]=u[S])})},lastOfPathSeparatorRegExp=/###/g,cleanKey=o=>o&&o.indexOf("###")>-1?o.replace(lastOfPathSeparatorRegExp,"."):o,canNotTraverseDeeper=o=>!o||isString$1(o),getLastOfPath=(o,u,T)=>{const S=isString$1(u)?u.split("."):u;let E=0;for(;E<S.length-1;){if(canNotTraverseDeeper(o))return{};const C=cleanKey(S[E]);!o[C]&&T&&(o[C]=new T),Object.prototype.hasOwnProperty.call(o,C)?o=o[C]:o={},++E}return canNotTraverseDeeper(o)?{}:{obj:o,k:cleanKey(S[E])}},setPath=(o,u,T)=>{const{obj:S,k:E}=getLastOfPath(o,u,Object);if(S!==void 0||u.length===1){S[E]=T;return}let C=u[u.length-1],_=u.slice(0,u.length-1),P=getLastOfPath(o,_,Object);for(;P.obj===void 0&&_.length;)C=`${_[_.length-1]}.${C}`,_=_.slice(0,_.length-1),P=getLastOfPath(o,_,Object),P!=null&&P.obj&&typeof P.obj[`${P.k}.${C}`]<"u"&&(P.obj=void 0);P.obj[`${P.k}.${C}`]=T},pushPath=(o,u,T,S)=>{const{obj:E,k:C}=getLastOfPath(o,u,Object);E[C]=E[C]||[],E[C].push(T)},getPath=(o,u)=>{const{obj:T,k:S}=getLastOfPath(o,u);if(T&&Object.prototype.hasOwnProperty.call(T,S))return T[S]},getPathWithDefaults=(o,u,T)=>{const S=getPath(o,T);return S!==void 0?S:getPath(u,T)},deepExtend=(o,u,T)=>{for(const S in u)S!=="__proto__"&&S!=="constructor"&&(S in o?isString$1(o[S])||o[S]instanceof String||isString$1(u[S])||u[S]instanceof String?T&&(o[S]=u[S]):deepExtend(o[S],u[S],T):o[S]=u[S]);return o},regexEscape=o=>o.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var _entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const escape=o=>isString$1(o)?o.replace(/[&<>"'\/]/g,u=>_entityMap[u]):o;class RegExpCache{constructor(u){this.capacity=u,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(u){const T=this.regExpMap.get(u);if(T!==void 0)return T;const S=new RegExp(u);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(u,S),this.regExpQueue.push(u),S}}const chars=[" ",",","?","!",";"],looksLikeObjectPathRegExpCache=new RegExpCache(20),looksLikeObjectPath=(o,u,T)=>{u=u||"",T=T||"";const S=chars.filter(_=>u.indexOf(_)<0&&T.indexOf(_)<0);if(S.length===0)return!0;const E=looksLikeObjectPathRegExpCache.getRegExp(`(${S.map(_=>_==="?"?"\\?":_).join("|")})`);let C=!E.test(o);if(!C){const _=o.indexOf(T);_>0&&!E.test(o.substring(0,_))&&(C=!0)}return C},deepFind=(o,u,T=".")=>{if(!o)return;if(o[u])return Object.prototype.hasOwnProperty.call(o,u)?o[u]:void 0;const S=u.split(T);let E=o;for(let C=0;C<S.length;){if(!E||typeof E!="object")return;let _,P="";for(let R=C;R<S.length;++R)if(R!==C&&(P+=T),P+=S[R],_=E[P],_!==void 0){if(["string","number","boolean"].indexOf(typeof _)>-1&&R<S.length-1)continue;C+=R-C+1;break}E=_}return E},getCleanedCode=o=>o==null?void 0:o.replace(/_/g,"-"),consoleLogger={type:"logger",log(o){this.output("log",o)},warn(o){this.output("warn",o)},error(o){this.output("error",o)},output(o,u){var T,S;(S=(T=console==null?void 0:console[o])==null?void 0:T.apply)==null||S.call(T,console,u)}};class Logger{constructor(u,T={}){this.init(u,T)}init(u,T={}){this.prefix=T.prefix||"i18next:",this.logger=u||consoleLogger,this.options=T,this.debug=T.debug}log(...u){return this.forward(u,"log","",!0)}warn(...u){return this.forward(u,"warn","",!0)}error(...u){return this.forward(u,"error","")}deprecate(...u){return this.forward(u,"warn","WARNING DEPRECATED: ",!0)}forward(u,T,S,E){return E&&!this.debug?null:(isString$1(u[0])&&(u[0]=`${S}${this.prefix} ${u[0]}`),this.logger[T](u))}create(u){return new Logger(this.logger,{prefix:`${this.prefix}:${u}:`,...this.options})}clone(u){return u=u||this.options,u.prefix=u.prefix||this.prefix,new Logger(this.logger,u)}}var baseLogger=new Logger;class EventEmitter{constructor(){this.observers={}}on(u,T){return u.split(" ").forEach(S=>{this.observers[S]||(this.observers[S]=new Map);const E=this.observers[S].get(T)||0;this.observers[S].set(T,E+1)}),this}off(u,T){if(this.observers[u]){if(!T){delete this.observers[u];return}this.observers[u].delete(T)}}emit(u,...T){this.observers[u]&&Array.from(this.observers[u].entries()).forEac
207h(([E,C])=>{for(let _=0;_<C;_++)E(...T)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([E,C])=>{for(let _=0;_<C;_++)E.apply(E,[u,...T])})}}class ResourceStore extends EventEmitter{constructor(u,T={ns:["translation"],defaultNS:"translation"}){super(),this.data=u||{},this.options=T,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(u){this.options.ns.indexOf(u)<0&&this.options.ns.push(u)}removeNamespaces(u){const T=this.options.ns.indexOf(u);T>-1&&this.options.ns.splice(T,1)}getResource(u,T,S,E={}){var I,L;const C=E.keySeparator!==void 0?E.keySeparator:this.options.keySeparator,_=E.ignoreJSONStructure!==void 0?E.ignoreJSONStructure:this.options.ignoreJSONStructure;let P;u.indexOf(".")>-1?P=u.split("."):(P=[u,T],S&&(Array.isArray(S)?P.push(...S):isString$1(S)&&C?P.push(...S.split(C)):P.push(S)));const R=getPath(this.data,P);return!R&&!T&&!S&&u.indexOf(".")>-1&&(u=P[0],T=P[1],S=P.slice(2).join(".")),R||!_||!isString$1(S)?R:deepFind((L=(I=this.data)==null?void 0:I[u])==null?void 0:L[T],S,C)}addResource(u,T,S,E,C={silent:!1}){const _=C.keySeparator!==void 0?C.keySeparator:this.options.keySeparator;let P=[u,T];S&&(P=P.concat(_?S.split(_):S)),u.indexOf(".")>-1&&(P=u.split("."),E=T,T=P[1]),this.addNamespaces(T),setPath(this.data,P,E),C.silent||this.emit("added",u,T,S,E)}addResources(u,T,S,E={silent:!1}){for(const C in S)(isString$1(S[C])||Array.isArray(S[C]))&&this.addResource(u,T,C,S[C],{silent:!0});E.silent||this.emit("added",u,T,S)}addResourceBundle(u,T,S,E,C,_={silent:!1,skipCopy:!1}){let P=[u,T];u.indexOf(".")>-1&&(P=u.split("."),E=S,S=T,T=P[1]),this.addNamespaces(T);let R=getPath(this.data,P)||{};_.skipCopy||(S=JSON.parse(JSON.stringify(S))),E?deepExtend(R,S,C):R={...R,...S},setPath(this.data,P,R),_.silent||this.emit("added",u,T,S)}removeResourceBundle(u,T){this.hasResourceBundle(u,T)&&delete this.data[u][T],this.removeNamespaces(T),this.emit("removed",u,T)}hasResourceBundle(u,T){return this.getResource(u,T)!==void 0}getResourceBundle(u,T){return T||(T=this.options.defaultNS),this.getResource(u,T)}getDataByLanguage(u){return this.data[u]}hasLanguageSomeTranslations(u){const T=this.getDataByLanguage(u);return!!(T&&Object.keys(T)||[]).find(E=>T[E]&&Object.keys(T[E]).length>0)}toJSON(){return this.data}}var postProcessor={processors:{},addPostProcessor(o){this.processors[o.name]=o},handle(o,u,T,S,E){return o.forEach(C=>{var _;u=((_=this.processors[C])==null?void 0:_.process(u,T,S,E))??u}),u}};const PATH_KEY=Symbol("i18next/PATH_KEY");function createProxy(){const o=[],u=Object.create(null);let T;return u.get=(S,E)=>{var C;return(C=T==null?void 0:T.revoke)==null||C.call(T),E===PATH_KEY?o:(o.push(E),T=Proxy.revocable(S,u),T.proxy)},Proxy.revocable(Object.create(null),u).proxy}function keysFromSelector(o,u){const{[PATH_KEY]:T}=o(createProxy());return T.join((u==null?void 0:u.keySeparator)??".")}const checkedLoadedFor={},shouldHandleAsObject=o=>!isString$1(o)&&typeof o!="boolean"&&typeof o!="number";class Translator extends EventEmitter{constructor(u,T={}){super(),copy(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","
207i18nFormat","utils"],u,this),this.options=T,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=baseLogger.create("translator")}changeLanguage(u){u&&(this.language=u)}exists(u,T={interpolation:{}}){const S={...T};if(u==null)return!1;const E=this.resolve(u,S);if((E==null?void 0:E.res)===void 0)return!1;const C=shouldHandleAsObject(E.res);return!(S.returnObjects===!1&&C)}extractFromKey(u,T){let S=T.nsSeparator!==void 0?T.nsSeparator:this.options.nsSeparator;S===void 0&&(S=":");const E=T.keySeparator!==void 0?T.keySeparator:this.options.keySeparator;let C=T.ns||this.options.defaultNS||[];const _=S&&u.indexOf(S)>-1,P=!this.options.userDefinedKeySeparator&&!T.keySeparator&&!this.options.userDefinedNsSeparator&&!T.nsSeparator&&!looksLikeObjectPath(u,S,E);if(_&&!P){const R=u.match(this.interpolator.nestingRegexp);if(R&&R.length>0)return{key:u,namespaces:isString$1(C)?[C]:C};const I=u.split(S);(S!==E||S===E&&this.options.ns.indexOf(I[0])>-1)&&(C=I.shift()),u=I.join(E)}return{key:u,namespaces:isString$1(C)?[C]:C}}translate(u,T,S){let E=typeof T=="object"?{...T}:T;if(typeof E!="object"&&this.options.overloadTranslationOptionHandler&&(E=this.options.overloadTranslationOptionHandler(arguments)),typeof E=="object"&&(E={...E}),E||(E={}),u==null)return"";typeof u=="function"&&(u=keysFromSelector(u,{...this.options,...E})),Array.isArray(u)||(u=[String(u)]);const C=E.returnDetails!==void 0?E.returnDetails:this.options.returnDetails,_=E.keySeparator!==void 0?E.keySeparator:this.options.keySeparator,{key:P,namespaces:R}=this.extractFromKey(u[u.length-1],E),I=R[R.length-1];let L=E.nsSeparator!==void 0?E.nsSeparator:this.options.nsSeparator;L===void 0&&(L=":");const j=E.lng||this.language,M=E.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((j==null?void 0:j.toLowerCase())==="cimode")return M?C?{res:`${I}${L}${P}`,usedKey:P,exactUsedKey:P,usedLng:j,usedNS:I,usedParams:this.getUsedParamsDetails(E)}:`${I}${L}${P}`:C?{res:P,usedKey:P,exactUsedKey:P,usedLng:j,usedNS:I,usedParams:this.getUsedParamsDetails(E)}:P;const D=this.resolve(u,E);let F=D==null?void 0:D.res;const N=(D==null?void 0:D.usedKey)||P,G=(D==null?void 0:D.exactUsedKey)||P,B=["[object Number]","[object Function]","[object RegExp]"],H=E.joinArrays!==void 0?E.joinArrays:this.options.joinArrays,O=!this.i18nFormat||this.i18nFormat.handleAsObject,V=E.count!==void 0&&!isString$1(E.count),U=Translator.hasDefaultValue(E),W=V?this.pluralResolver.getSuffix(j,E.count,E):"",K=E.ordinal&&V?this.pluralResolver.getSuffix(j,E.count,{ordinal:!1}):"",Y=V&&!E.ordinal&&E.count===0,ee=Y&&E[`defaultValue${this.options.pluralSeparator}zero`]||E[`defaultValue${W}`]||E[`defaultValue${K}`]||E.defaultValue;let oe=F;O&&!F&&U&&(oe=ee);const se=shouldHandleAsObject(oe),Q=Object.prototype.toString.apply(oe);if(O&&oe&&se&&B.indexOf(Q)<0&&!(isString$1(H)&&Array.isArray(oe))){if(!E.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const ie=this.options.returnedObjectHandler?this.options.returnedObjectHandler(N,oe,{...E,ns:R}):`key '${P} (${this.language})' returned an object instead of string.`;return C?(D.res=ie,D.usedParams=this.getUsedParamsDetails(E),D):ie}if(_){const ie=Array.isArray(oe),ae=ie?[]:{},re=ie?G:N;for(const J in oe)if(Object.prototype.hasOwnProperty.call(oe,J)){const te=`${re}${_}${J}`;U&&!F?ae[J]=this.translate(te,{...E,defaultValue:shouldHandleAsObject(ee)?ee[J]:void 0,joinArrays:!1,ns:R}):ae[J]=this.translate(te,{...E,joinArrays:!1,ns:R}),ae[J]===te&&(ae[J]=oe[J])}F=ae}}else if(O&&isString$1(H)&&Array.isArray(F))F=F.join(H),F&&(F=this.extendTranslation(F,u,E,S));else{let ie=!1,ae=!1;!this.isValidLookup(F)&&U&&(ie=!0,F=ee),this.isValidLookup(F)||(ae=!0,F=P);const J=(E.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&ae?void 0:F,te=U&&ee!==F&&this.options.updateMissing;if(ae||ie||te){if(this.logger.log(te?"updateKey":"missingKey",j,I,P,te?ee:F),_){const he=this.resolve(P,{...E,keySeparator:!1});he&&he.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let Z=[];const X=this.languageUtils.getFallbackCodes(this.options.fallbackLng,E.lng||this.language);
207if(this.options.saveMissingTo==="fallback"&&X&&X[0])for(let he=0;he<X.length;he++)Z.push(X[he]);else this.options.saveMissingTo==="all"?Z=this.languageUtils.toResolveHierarchy(E.lng||this.language):Z.push(E.lng||this.language);const de=(he,ne,ue)=>{var fe;const ce=U&&ue!==F?ue:J;this.options.missingKeyHandler?this.options.missingKeyHandler(he,I,ne,ce,te,E):(fe=this.backendConnector)!=null&&fe.saveMissing&&this.backendConnector.saveMissing(he,I,ne,ce,te,E),this.emit("missingKey",he,I,ne,F)};this.options.saveMissing&&(this.options.saveMissingPlurals&&V?Z.forEach(he=>{const ne=this.pluralResolver.getSuffixes(he,E);Y&&E[`defaultValue${this.options.pluralSeparator}zero`]&&ne.indexOf(`${this.options.pluralSeparator}zero`)<0&&ne.push(`${this.options.pluralSeparator}zero`),ne.forEach(ue=>{de([he],P+ue,E[`defaultValue${ue}`]||ee)})}):de(Z,P,ee))}F=this.extendTranslation(F,u,E,D,S),ae&&F===P&&this.options.appendNamespaceToMissingKey&&(F=`${I}${L}${P}`),(ae||ie)&&this.options.parseMissingKeyHandler&&(F=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${I}${L}${P}`:P,ie?F:void 0,E))}return C?(D.res=F,D.usedParams=this.getUsedParamsDetails(E),D):F}extendTranslation(u,T,S,E,C){var R,I;if((R=this.i18nFormat)!=null&&R.parse)u=this.i18nFormat.parse(u,{...this.options.interpolation.defaultVariables,...S},S.lng||this.language||E.usedLng,E.usedNS,E.usedKey,{resolved:E});else if(!S.skipInterpolation){S.interpolation&&this.interpolator.init({...S,interpolation:{...this.options.interpolation,...S.interpolation}});const L=isString$1(u)&&(((I=S==null?void 0:S.interpolation)==null?void 0:I.skipOnVariables)!==void 0?S.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let j;if(L){const D=u.match(this.interpolator.nestingRegexp);j=D&&D.length}let M=S.replace&&!isString$1(S.replace)?S.replace:S;if(this.options.interpolation.defaultVariables&&(M={...this.options.interpolation.defaultVariables,...M}),u=this.interpolator.interpolate(u,M,S.lng||this.language||E.usedLng,S),L){const D=u.match(this.interpolator.nestingRegexp),F=D&&D.length;j<F&&(S.nest=!1)}!S.lng&&E&&E.res&&(S.lng=this.language||E.usedLng),S.nest!==!1&&(u=this.interpolator.nest(u,(...D)=>(C==null?void 0:C[0])===D[0]&&!S.context?(this.logger.warn(`It seems you are nesting recursively key: ${D[0]} in key: ${T[0]}`),null):this.translate(...D,T),S)),S.interpolation&&this.interpolator.reset()}const _=S.postProcess||this.options.postProcess,P=isString$1(_)?[_]:_;return u!=null&&(P!=null&&P.length)&&S.applyPostProcessor!==!1&&(u=postProcessor.handle(P,u,T,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...E,usedParams:this.getUsedParamsDetails(S)},...S}:S,this)),u}resolve(u,T={}){let S,E,C,_,P;return isString$1(u)&&(u=[u]),u.forEach(R=>{if(this.isValidLookup(S))return;const I=this.extractFromKey(R,T),L=I.key;E=L;let j=I.namespaces;this.options.fallbackNS&&(j=j.concat(this.options.fallbackNS));const M=T.count!==void 0&&!isString$1(T.count),D=M&&!T.ordinal&&T.count===0,F=T.context!==void 0&&(isString$1(T.context)||typeof T.context=="number")&&T.context!=="",N=T.lngs?T.lngs:this.languageUtils.toResolveHierarchy(T.lng||this.language,T.fallbackLng);j.forEach(G=>{var B,H;this.isValidLookup(S)||(P=G,!checkedLoadedFor[`${N[0]}-${G}`]&&((B=this.utils)!=null&&B.hasLoadedNamespace)&&!((H=this.utils)!=null&&H.hasLoadedNamespace(P))&&(checkedLoadedFor[`${N[0]}-${G}`]=!0,this.logger.warn(`key "${E}" for languages "${N.join(", ")}" won't get resolved as namespace "${P}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),N.forEach(O=>{var W;if(this.isValidLookup(S))return;_=O;const V=[L];if((W=this.i18nFormat)!=null&&W.addLookupKeys)this.i18nFormat.addLookupKeys(V,L,O,G,T);else{let K;M&&(K=this.pluralResolver.getSuffix(O,T.count,T));const Y=`${this.options.pluralSeparator}zero`,ee=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(M&&(T.ordinal&&K.indexOf(ee)===0&&V.push(L+K.replace(ee,this.options.pluralSeparator)),V.push(L+K),D&&V.push(L+Y)),F){const oe=`${L}${this.options.contextSeparator||"_"}${T.context}`;V.push(oe),M&&(T.ordinal&&K.indexOf(ee)===0&&V.push(oe+K.replace(ee,this.options.pluralSeparator)),V.push(oe+K),D&&V.push(oe+Y))}}let U;for(;U=V.pop();)this.isValidLookup(S)||(C=U,S=this.getResource(O,G,U,T))}))})}),{res:S,usedKey:E,exactUsedKey:C,usedLng:_,usedNS:P}}isValidLookup(u){return u!==void 0&&!(!this.options.returnNull&&u===null)&&!(!this.options.returnEmptyString&&u==="")}getResource(u,T,S,E={}){var C;return(C=this.i18nFormat)!=null&&C.getResource?this.i18nFormat.getResource(u,T,S,E):this.resourceStore.getResource(u,T,S,E)}getUsedParamsDetails(u={}){const T=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],S=u.replace&&!isString$1(u.replace);let E=S?u.replace:u;if(S&&typeof u.count<"u"&&(E.count=u.count),this.options.interpolation.defaultVariables&&(E={...this.options.interpolation.defaultVariables,...E}),!S){E={...E};for(const C of T)delete E[C]}return E}static hasDefaultValue(u){const T="defaultValue";for(const S in u)if(Object.prototype.hasOwnProperty.call(u,S)&&T===S.substring(0,T.length)&&u[S]!==void 0)return!0;return!1}}class LanguageUtil{constructor(u){this.options=u,this.supportedLngs=this.options.supportedLngs||!1,this.logger=baseLogger.create("languageUtils")}getScriptPartFromCode(u){if(u=getCleanedCode(u),!u||u.indexOf("-")<0)return null;const T=u.split("-");return T.length===2||(T.pop(),T[T.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(T.join("-"))}getLanguagePartFromCode(u){if(u=getCleanedCode(u),!u||u.indexOf("-")<0)return u;const T=u.split("-");return this.formatLanguageCode(T[0])}formatLanguageCode(u){if(isString$1(u)&&u.indexOf("-")>-1){let T;
207try{T=Intl.getCanonicalLocales(u)[0]}catch{}return T&&this.options.lowerCaseLng&&(T=T.toLowerCase()),T||(this.options.lowerCaseLng?u.toLowerCase():u)}return this.options.cleanCode||this.options.lowerCaseLng?u.toLowerCase():u}isSupportedCode(u){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(u=this.getLanguagePartFromCode(u)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(u)>-1}getBestMatchFromCodes(u){if(!u)return null;let T;return u.forEach(S=>{if(T)return;const E=this.formatLanguageCode(S);(!this.options.supportedLngs||this.isSupportedCode(E))&&(T=E)}),!T&&this.options.supportedLngs&&u.forEach(S=>{if(T)return;const E=this.getScriptPartFromCode(S);if(this.isSupportedCode(E))return T=E;const C=this.getLanguagePartFromCode(S);if(this.isSupportedCode(C))return T=C;T=this.options.supportedLngs.find(_=>{if(_===C)return _;if(!(_.indexOf("-")<0&&C.indexOf("-")<0)&&(_.indexOf("-")>0&&C.indexOf("-")<0&&_.substring(0,_.indexOf("-"))===C||_.indexOf(C)===0&&C.length>1))return _})}),T||(T=this.getFallbackCodes(this.options.fallbackLng)[0]),T}getFallbackCodes(u,T){if(!u)return[];if(typeof u=="function"&&(u=u(T)),isString$1(u)&&(u=[u]),Array.isArray(u))return u;if(!T)return u.default||[];let S=u[T];return S||(S=u[this.getScriptPartFromCode(T)]),S||(S=u[this.formatLanguageCode(T)]),S||(S=u[this.getLanguagePartFromCode(T)]),S||(S=u.default),S||[]}toResolveHierarchy(u,T){const S=this.getFallbackCodes((T===!1?[]:T)||this.options.fallbackLng||[],u),E=[],C=_=>{_&&(this.isSupportedCode(_)?E.push(_):this.logger.warn(`rejecting language code not found in supportedLngs: ${_}`))};return isString$1(u)&&(u.indexOf("-")>-1||u.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&C(this.formatLanguageCode(u)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&C(this.getScriptPartFromCode(u)),this.options.load!=="currentOnly"&&C(this.getLanguagePartFromCode(u))):isString$1(u)&&C(this.formatLanguageCode(u)),S.forEach(_=>{E.indexOf(_)<0&&C(this.formatLanguageCode(_))}),E}}const suffixesOrder={zero:0,one:1,two:2,few:3,many:4,other:5},dummyRule={select:o=>o===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class PluralResolver{constructor(u,T={}){this.languageUtils=u,this.options=T,this.logger=baseLogger.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(u,T={}){const S=getCleanedCode(u==="dev"?"en":u),E=T.ordinal?"ordinal":"cardinal",C=JSON.stringify({cleanedCode:S,type:E});if(C in this.pluralRulesCache)return this.pluralRulesCache[C];let _;try{_=new Intl.PluralRules(S,{type:E})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),dummyRule;if(!u.match(/-|_/))return dummyRule;const R=this.languageUtils.getLanguagePartFromCode(u);_=this.getRule(R,T)}return this.pluralRulesCache[C]=_,_}needsPlural(u,T={}){let S=this.getRule(u,T);return S||(S=this.getRule("dev",T)),(S==null?void 0:S.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(u,T,S={}){return this.getSuffixes(u,S).map(E=>`${T}${E}`)}getSuffixes(u,T={}){let S=this.getRule(u,T);return S||(S=this.getRule("dev",T)),S?S.resolvedOptions().pluralCategories.sort((E,C)=>suffixesOrder[E]-suffixesOrder[C]).map(E=>`${this.options.prepend}${T.ordinal?`ordinal${this.options.prepend}`:""}${E}`):[]}getSuffix(u,T,S={}){const E=this.getRule(u,S);return E?`${this.options.prepend}${S.ordinal?`ordinal${this.options.prepend}`:""}${E.select(T)}`:(this.logger.warn(`no plural rule found for: ${u}`),this.getSuffix("dev",T,S))}}const deepFindWithDefaults=(o,u,T,S=".",E=!0)=>{let C=getPathWithDefaults(o,u,T);return!C&&E&&isString$1(T)&&(C=deepFind(o,T,S),C===void 0&&(C=deepFind(u,T,S))),C},regexSafe=o=>o.replace(/\$/g,"$$$$");class Interpolator{constructor(u={}){var T;this.logger=baseLogger.create("interpolator"),this.options=u,this.format=((T=u==null?void 0:u.interpolation)==null?void 0:T.format)||(S=>S),this.init(u)}init(u={}){u.interpolation||(u.interpolation={escapeValue:!0});const{escape:T,escapeValue:S,useRawValueToEscape:E,prefix:C,prefixEscaped:_,suffix:P,suffixEscaped:R,formatSeparator:I,unescapeSuffix:L,unescapePrefix:j,nestingPrefix:M,nestingPrefixEscaped:D,nestingSuffix:F,nestingSuffixEscaped:N,nestingOptionsSeparator:G,maxReplaces:B,alwaysFormat:H}=u.interpolation;this.escape=T!==void 0?T:escape,this.escapeValue=S!==void 0?S:!0,this.useRawValueToEscape=E!==void 0?E:!1,this.prefix=C?regexEscape(C):_||"{{",this.suffix=P?regexEscape(P):R||"}}
207",this.formatSeparator=I||",",this.unescapePrefix=L?"":j||"-",this.unescapeSuffix=this.unescapePrefix?"":L||"",this.nestingPrefix=M?regexEscape(M):D||regexEscape("$t("),this.nestingSuffix=F?regexEscape(F):N||regexEscape(")"),this.nestingOptionsSeparator=G||",",this.maxReplaces=B||1e3,this.alwaysFormat=H!==void 0?H:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const u=(T,S)=>(T==null?void 0:T.source)===S?(T.lastIndex=0,T):new RegExp(S,"g");this.regexp=u(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=u(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=u(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(u,T,S,E){var D;let C,_,P;const R=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},I=F=>{if(F.indexOf(this.formatSeparator)<0){const H=deepFindWithDefaults(T,R,F,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(H,void 0,S,{...E,...T,interpolationkey:F}):H}const N=F.split(this.formatSeparator),G=N.shift().trim(),B=N.join(this.formatSeparator).trim();return this.format(deepFindWithDefaults(T,R,G,this.options.keySeparator,this.options.ignoreJSONStructure),B,S,{...E,...T,interpolationkey:G})};this.resetRegExp();const L=(E==null?void 0:E.missingInterpolationHandler)||this.options.missingInterpolationHandler,j=((D=E==null?void 0:E.interpolation)==null?void 0:D.skipOnVariables)!==void 0?E.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:F=>regexSafe(F)},{regex:this.regexp,safeValue:F=>this.escapeValue?regexSafe(this.escape(F)):regexSafe(F)}].forEach(F=>{for(P=0;C=F.regex.exec(u);){const N=C[1].trim();if(_=I(N),_===void 0)if(typeof L=="function"){const B=L(u,C,E);_=isString$1(B)?B:""}else if(E&&Object.prototype.hasOwnProperty.call(E,N))_="";else if(j){_=C[0];continue}else this.logger.warn(`missed to pass in variable ${N} for interpolating ${u}`),_="";else!isString$1(_)&&!this.useRawValueToEscape&&(_=makeString(_));const G=F.safeValue(_);if(u=u.replace(C[0],G),j?(F.regex.lastIndex+=_.length,F.regex.lastIndex-=C[0].length):F.regex.lastIndex=0,P++,P>=this.maxReplaces)break}}),u}nest(u,T,S={}){let E,C,_;const P=(R,I)=>{const L=this.nestingOptionsSeparator;if(R.indexOf(L)<0)return R;const j=R.split(new RegExp(`${regexEscape(L)}[ ]*{`));let M=`{${j[1]}`;R=j[0],M=this.interpolate(M,_);const D=M.match(/'/g),F=M.match(/"/g);(((D==null?void 0:D.length)??0)%2===0&&!F||((F==null?void 0:F.length)??0)%2!==0)&&(M=M.replace(/'/g,'"'));try{_=JSON.parse(M),I&&(_={...I,..._})}catch(N){return this.logger.warn(`failed parsing options string in nesting for key ${R}`,N),`${R}${L}${M}`}return _.defaultValue&&_.defaultValue.indexOf(this.prefix)>-1&&delete _.defaultValue,R};for(;E=this.nestingRegexp.exec(u);){let R=[];_={...S},_=_.replace&&!isString$1(_.replace)?_.replace:_,_.applyPostProcessor=!1,delete _.defaultValue;const I=/{.*}/.test(E[1])?E[1].lastIndexOf("}")+1:E[1].indexOf(this.formatSeparator);if(I!==-1&&(R=E[1].slice(I).split(this.formatSeparator).map(L=>L.trim()).filter(Boolean),E[1]=E[1].slice(0,I)),C=T(P.call(this,E[1].trim(),_),_),C&&E[0]===u&&!isString$1(C))return C;isString$1(C)||(C=makeString(C)),C||(this.logger.warn(`missed to resolve ${E[1]} for nesting ${u}`),C=""),R.length&&(C=R.reduce((L,j)=>this.format(L,j,S.lng,{...S,interpolationkey:E[1].trim()}),C.trim())),u=u.replace(E[0],C),this.regexp.lastIndex=0}return u}}const parseFormatStr=o=>{let u=o.toLowerCase().trim();const T={};if(o.indexOf("(")>-1){const S=o.split("(");u=S[0].toLowerCase().trim();const E=S[1].substring(0,S[1].length-1);u==="currency"&&E.indexOf(":")<0?T.currency||(T.currency=E.trim()):u==="relativetime"&&E.indexOf(":")<0?T.range||(T.range=E.trim()):E.split(";").forEach(_=>{if(_){const[P,...R]=_.split(":"),I=R.join(":").trim().replace(/^'+|'+$/g,""),L=P.trim();T[L]||(T[L]=I),I==="false"&&(T[L]=!1),I==="true"&&(T[L]=!0),isNaN(I)||(T[L]=parseInt(I,10))}})}return{formatName:u,formatOptions:T}},createCachedFormatter=o=>{const u={};return(T,S,E)=>{let C=E;E&&E.interpolationkey&&E.formatParams&&E.formatParams[E.interpolationkey]&&E[E.interpolationkey]&&(C={...C,[E.interpolationkey]:void 0});const _=S+JSON.stringify(C);let P=u[_];return P||(P=o(getCleanedCode(S),E),u[_]=P),P(T)}},createNonCachedFormatter=o=>(u,T,S)=>o(getCleanedCode(T),S)(u);class Formatter{constructor(u={}){this.logger=baseLogger.create("formatter"),this.options=u,this.init(u)}init(u,T={interpolation:{}}){this.formatSeparator=T.interpolation.formatSeparator||",";const S=T.cacheInBuiltFormats?createCachedFormatter:createNonCachedFormatter;this.formats={number:S((E,C)=>{const _=new Intl.NumberFormat(E,{...C});return P=>_.format(P)}),currency:S((E,C)=>{const _=new Intl.NumberFormat(E,{...C,style:"currency"});return P=>_.format(P)}),datetime:S((E,C)=>{const _=new Intl.DateTimeFormat(E,{...C});return P=>_.format(P)}),relativetime:S((E,C)=>{const _=new Intl.RelativeTimeFormat(E,{...C});return P=>_.format(P,C.range||"day")}),list:S((E,C)=>{const _=new Intl.ListFormat(E,{...C});return P=>_.format(P)})}}add(u,T){this.formats[u.toLowerCase().trim()]=T}addCached(u,T){this.formats[u.toLowerCase().trim()]=createCachedFormatter(T)}format(u,T,S,E={}){const C=T.split(this.formatSeparator);if(C.length>1&&C[0].indexOf("(")>1&&C[0].indexOf(")")<0&&C.find(P=>P.indexOf(")")>-1)){const P=C.findIndex(R=>R.indexOf(")")>-1);C[0]=[C[0],...C.splice(1,P)].join(this.formatSeparator)}return C.reduce((P,R)=>{var j;const{formatName:I,formatOptions:L}=parseFormatStr(R);if(this.formats[I]){let M=P;try{const D=((j=E==null?void 0:E.formatParams)==null?void 0:j[E.interpolationkey])||{},F=D.locale||D.lng||E.locale||E.lng||S;M=this.formats[I](P,F,{...L,...E,...D})}catch(D){this.logger.warn(D)}return M}else this.logger.warn(`there was no format function for ${I}`);return P},u)}}const removePending=(o,u)=>{o.pending[u]!==void 0&&(delete o.pending[u],o.pendingCount--)};
207class Connector extends EventEmitter{constructor(u,T,S,E={}){var C,_;super(),this.backend=u,this.store=T,this.services=S,this.languageUtils=S.languageUtils,this.options=E,this.logger=baseLogger.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=E.maxParallelReads||10,this.readingCalls=0,this.maxRetries=E.maxRetries>=0?E.maxRetries:5,this.retryTimeout=E.retryTimeout>=1?E.retryTimeout:350,this.state={},this.queue=[],(_=(C=this.backend)==null?void 0:C.init)==null||_.call(C,S,E.backend,E)}queueLoad(u,T,S,E){const C={},_={},P={},R={};return u.forEach(I=>{let L=!0;T.forEach(j=>{const M=`${I}|${j}`;!S.reload&&this.store.hasResourceBundle(I,j)?this.state[M]=2:this.state[M]<0||(this.state[M]===1?_[M]===void 0&&(_[M]=!0):(this.state[M]=1,L=!1,_[M]===void 0&&(_[M]=!0),C[M]===void 0&&(C[M]=!0),R[j]===void 0&&(R[j]=!0)))}),L||(P[I]=!0)}),(Object.keys(C).length||Object.keys(_).length)&&this.queue.push({pending:_,pendingCount:Object.keys(_).length,loaded:{},errors:[],callback:E}),{toLoad:Object.keys(C),pending:Object.keys(_),toLoadLanguages:Object.keys(P),toLoadNamespaces:Object.keys(R)}}loaded(u,T,S){const E=u.split("|"),C=E[0],_=E[1];T&&this.emit("failedLoading",C,_,T),!T&&S&&this.store.addResourceBundle(C,_,S,void 0,void 0,{skipCopy:!0}),this.state[u]=T?-1:2,T&&S&&(this.state[u]=0);const P={};this.queue.forEach(R=>{pushPath(R.loaded,[C],_),removePending(R,u),T&&R.errors.push(T),R.pendingCount===0&&!R.done&&(Object.keys(R.loaded).forEach(I=>{P[I]||(P[I]={});const L=R.loaded[I];L.length&&L.forEach(j=>{P[I][j]===void 0&&(P[I][j]=!0)})}),R.done=!0,R.errors.length?R.callback(R.errors):R.callback())}),this.emit("loaded",P),this.queue=this.queue.filter(R=>!R.done)}read(u,T,S,E=0,C=this.retryTimeout,_){if(!u.length)return _(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:u,ns:T,fcName:S,tried:E,wait:C,callback:_});return}this.readingCalls++;const P=(I,L)=>{if(this.readingCalls--,this.waitingReads.length>0){const j=this.waitingReads.shift();this.read(j.lng,j.ns,j.fcName,j.tried,j.wait,j.callback)}if(I&&L&&E<this.maxRetries){setTimeout(()=>{this.read.call(this,u,T,S,E+1,C*2,_)},C);return}_(I,L)},R=this.backend[S].bind(this.backend);if(R.length===2){try{const I=R(u,T);I&&typeof I.then=="function"?I.then(L=>P(null,L)).catch(P):P(null,I)}catch(I){P(I)}return}return R(u,T,P)}prepareLoading(u,T,S={},E){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),E&&E();isString$1(u)&&(u=this.languageUtils.toResolveHierarchy(u)),isString$1(T)&&(T=[T]);const C=this.queueLoad(u,T,S,E);if(!C.toLoad.length)return C.pending.length||E(),null;C.toLoad.forEach(_=>{this.loadOne(_)})}load(u,T,S){this.prepareLoading(u,T,{},S)}reload(u,T,S){this.prepareLoading(u,T,{reload:!0},S)}loadOne(u,T=""){const S=u.split("|"),E=S[0],C=S[1];this.read(E,C,"read",void 0,void 0,(_,P)=>{_&&this.logger.warn(`${T}loading namespace ${C} for language ${E} failed`,_),!_&&P&&this.logger.log(`${T}loaded namespace ${C} for language ${E}`,P),this.loaded(u,_,P)})}saveMissing(u,T,S,E,C,_={},P=()=>{}){var R,I,L,j,M;if((I=(R=this.services)==null?void 0:R.utils)!=null&&I.hasLoadedNamespace&&!((j=(L=this.services)==null?void 0:L.utils)!=null&&j.hasLoadedNamespace(T))){this.logger.warn(`did not save key "${S}" as the namespace "${T}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(S==null||S==="")){if((M=this.backend)!=null&&M.create){const D={..._,isUpdate:C},F=this.backend.create.bind(this.backend);if(F.length<6)try{let N;F.length===5?N=F(u,T,S,E,D):N=F(u,T,S,E),N&&typeof N.then=="function"?N.then(G=>P(null,G)).catch(P):P(null,N)}catch(N){P(N)}else F(u,T,S,E,P,D)}!u||!u[0]||this.store.addResource(u[0],T,S,E)}}}const get=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:o=>{let u={};if(typeof o[1]=="object"&&(u=o[1]),isString$1(o[1])&&(u.defaultValue=o[1]),isString$1(o[2])&&(u.tDescription=o[2]),typeof o[2]=="object"||typeof o[3]=="object"){const T=o[3]||o[2];Object.keys(T).forEach(S=>{u[S]=T[S]})}return u},interpolation:{escapeValue:!0,format:o=>o,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),transformOptions=o=>{var u,T;return isString$1(o.ns)&&(o.ns=[o.ns]),isString$1(o.fallbackLng)&&(o.fallbackLng=[o.fallbackLng]),isString$1(o.fallbackNS)&&(o.fallbackNS=[o.fallbackNS]),((T=(u=o.supportedLngs)==null?void 0:u.indexOf)==null?void 0:T.call(u,"cimode"))<0&&(o.supportedLngs=o.supportedLngs.concat(["cimode"])),typeof o.initImmediate=="boolean"&&(o.initAsync=o.initImmediate),o},noop=()=>{},bindMemberFunctions=o=>
207{Object.getOwnPropertyNames(Object.getPrototypeOf(o)).forEach(T=>{typeof o[T]=="function"&&(o[T]=o[T].bind(o))})},SUPPORT_NOTICE_KEY="__i18next_supportNoticeShown",getSupportNoticeShown=()=>typeof globalThis<"u"&&!!globalThis[SUPPORT_NOTICE_KEY],setSupportNoticeShown=()=>{typeof globalThis<"u"&&(globalThis[SUPPORT_NOTICE_KEY]=!0)},usesLocize=o=>{var u,T,S,E,C,_,P,R,I,L,j,M,D;return!!(((S=(T=(u=o==null?void 0:o.modules)==null?void 0:u.backend)==null?void 0:T.name)==null?void 0:S.indexOf("Locize"))>0||((P=(_=(C=(E=o==null?void 0:o.modules)==null?void 0:E.backend)==null?void 0:C.constructor)==null?void 0:_.name)==null?void 0:P.indexOf("Locize"))>0||(I=(R=o==null?void 0:o.options)==null?void 0:R.backend)!=null&&I.backends&&o.options.backend.backends.some(F=>{var N,G,B;return((N=F==null?void 0:F.name)==null?void 0:N.indexOf("Locize"))>0||((B=(G=F==null?void 0:F.constructor)==null?void 0:G.name)==null?void 0:B.indexOf("Locize"))>0})||(j=(L=o==null?void 0:o.options)==null?void 0:L.backend)!=null&&j.projectId||(D=(M=o==null?void 0:o.options)==null?void 0:M.backend)!=null&&D.backendOptions&&o.options.backend.backendOptions.some(F=>F==null?void 0:F.projectId))};class I18n extends EventEmitter{constructor(u={},T){if(super(),this.options=transformOptions(u),this.services={},this.logger=baseLogger,this.modules={external:[]},bindMemberFunctions(this),T&&!this.isInitialized&&!u.isClone){if(!this.options.initAsync)return this.init(u,T),this;setTimeout(()=>{this.init(u,T)},0)}}init(u={},T){this.isInitializing=!0,typeof u=="function"&&(T=u,u={}),u.defaultNS==null&&u.ns&&(isString$1(u.ns)?u.defaultNS=u.ns:u.ns.indexOf("translation")<0&&(u.defaultNS=u.ns[0]));const S=get();this.options={...S,...this.options,...transformOptions(u)},this.options.interpolation={...S.interpolation,...this.options.interpolation},u.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=u.keySeparator),u.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=u.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=S.overloadTranslationOptionHandler),this.options.showSupportNotice!==!1&&!usesLocize(this)&&!getSupportNoticeShown()&&(typeof console<"u"&&typeof console.info<"u"&&console.info("ð i18next is maintained with support from Locize â consider powering your project with managed localization (AI, CDN, integrations): https://locize.com ð"),setSupportNoticeShown());const E=I=>I?typeof I=="function"?new I:I:null;if(!this.options.isClone){this.modules.logger?baseLogger.init(E(this.modules.logger),this.options):baseLogger.init(null,this.options);let I;this.modules.formatter?I=this.modules.formatter:I=Formatter;const L=new LanguageUtil(this.options);this.store=new ResourceStore(this.options.resources,this.options);const j=this.services;j.logger=baseLogger,j.resourceStore=this.store,j.languageUtils=L,j.pluralResolver=new PluralResolver(L,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==S.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),I&&(!this.options.interpolation.format||this.options.interpolation.format===S.interpolation.format)&&(j.formatter=E(I),j.formatter.init&&j.formatter.init(j,this.options),this.options.interpolation.format=j.formatter.format.bind(j.formatter)),j.interpolator=new Interpolator(this.options),j.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},j.backendConnector=new Connector(E(this.modules.backend),j.resourceStore,j,this.options),j.backendConnector.on("*",(D,...F)=>{this.emit(D,...F)}),this.modules.languageDetector&&(j.languageDetector=E(this.modules.languageDetector),j.languageDetector.init&&j.languageDetector.init(j,this.options.detection,this.options)),this.modules.i18nFormat&&(j.i18nFormat=E(this.modules.i18nFormat),j.i18nFormat.init&&j.i18nFormat.init(this)),this.translator=new Translator(this.services,this.options),this.translator.on("*",(D,...F)=>
207{this.emit(D,...F)}),this.modules.external.forEach(D=>{D.init&&D.init(this)})}if(this.format=this.options.interpolation.format,T||(T=noop),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const I=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);I.length>0&&I[0]!=="dev"&&(this.options.lng=I[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(I=>{this[I]=(...L)=>this.store[I](...L)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(I=>{this[I]=(...L)=>(this.store[I](...L),this)});const P=defer(),R=()=>{const I=(L,j)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),P.resolve(j),T(L,j)};if(this.languages&&!this.isInitialized)return I(null,this.t.bind(this));this.changeLanguage(this.options.lng,I)};return this.options.resources||!this.options.initAsync?R():setTimeout(R,0),P}loadResources(u,T=noop){var C,_;let S=T;const E=isString$1(u)?u:this.language;if(typeof u=="function"&&(S=u),!this.options.resources||this.options.partialBundledLanguages){if((E==null?void 0:E.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return S();const P=[],R=I=>{if(!I||I==="cimode")return;this.services.languageUtils.toResolveHierarchy(I).forEach(j=>{j!=="cimode"&&P.indexOf(j)<0&&P.push(j)})};E?R(E):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(L=>R(L)),(_=(C=this.options.preload)==null?void 0:C.forEach)==null||_.call(C,I=>R(I)),this.services.backendConnector.load(P,this.options.ns,I=>{!I&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),S(I)})}else S(null)}reloadResources(u,T,S){const E=defer();return typeof u=="function"&&(S=u,u=void 0),typeof T=="function"&&(S=T,T=void 0),u||(u=this.languages),T||(T=this.options.ns),S||(S=noop),this.services.backendConnector.reload(u,T,C=>{E.resolve(),S(C)}),E}use(u){if(!u)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!u.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return u.type==="backend"&&(this.modules.backend=u),(u.type==="logger"||u.log&&u.warn&&u.error)&&(this.modules.logger=u),u.type==="languageDetector"&&(this.modules.languageDetector=u),u.type==="i18nFormat"&&(this.modules.i18nFormat=u),u.type==="postProcessor"&&postProcessor.addPostProcessor(u),u.type==="formatter"&&(this.modules.formatter=u),u.type==="3rdParty"&&this.modules.external.push(u),this}setResolvedLanguage(u){if(!(!u||!this.languages)&&!(["cimode","dev"].indexOf(u)>-1)){for(let T=0;T<this.languages.length;T++){const S=this.languages[T];if(!(["cimode","dev"].indexOf(S)>-1)&&this.store.hasLanguageSomeTranslations(S)){this.resolvedLanguage=S;break}}!this.resolvedLanguage&&this.languages.indexOf(u)<0&&this.store.hasLanguageSomeTranslations(u)&&(this.resolvedLanguage=u,this.languages.unshift(u))}}changeLanguage(u,T){this.isLanguageChangingTo=u;const S=defer();this.emit("languageChanging",u);const E=P=>{this.language=P,this.languages=this.services.languageUtils.toResolveHierarchy(P),this.resolvedLanguage=void 0,this.setResolvedLanguage(P)},C=(P,R)=>{R?this.isLanguageChangingTo===u&&(E(R),this.translator.changeLanguage(R),this.isLanguageChangingTo=void 0,this.emit("languageChanged",R),this.logger.log("languageChanged",R)):this.isLanguageChangingTo=void 0,S.resolve((...I)=>this.t(...I)),T&&T(P,(...I)=>this.t(...I))},_=P=>{var L,j;!u&&!P&&this.services.languageDetector&&(P=[]);const R=isString$1(P)?P:P&&P[0],I=this.store.hasLanguageSomeTranslations(R)?R:this.services.languageUtils.getBestMatchFromCodes(isString$1(P)?[P]:P);I&&(this.language||E(I),this.translator.language||this.translator.changeLanguage(I),(j=(L=this.services.languageDetector)==null?void 0:L.cacheUserLanguage)==null||j.call(L,I)),this.loadResources(I,M=>{C(M,I)})};return!u&&this.services.languageDetector&&!this.services.languageDetector.async?_(this.services.languageDetector.detect()):!u&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(_):this.services.languageDetector.detect(_):_(u),S}getFixedT(u,T,S){const E=(C,_,...P)=>{let R;typeof _!="object"?R=this.options.overloadTranslationOptionHandler([C,_].concat(P)):R={..._},R.lng=R.lng||E.lng,R.lngs=R.lngs||E.lngs,R.ns=R.ns||E.ns,R.keyPrefix!==""&&(R.keyPrefix=R.keyPrefix||S||E.keyPrefix);const I=this.options.keySeparator||".";let L;return R.keyPrefix&&Array.isArray(C)?L=C.map(j=>(typeof j=="function"&&(j=keysFromSelector(j,{...this.options,..._})),`${R.keyPrefix}${I}${j}`)):(typeof C=="function"&&(C=keysFromSelector(C,{...this.options,..._})),L=R.keyPrefix?`${R.keyPrefix}${I}${C}`:C),this.t(L,R)};return isString$1(u)?E.lng=u:E.lngs=u,E.ns=T,E.keyPrefix=S,E}t(...u){var T;return(T=this.translator)==null?void 0:T.translate(...u)}exists(...u){var T;return(T=this.translator)==null?void 0:T.exists(...u)}setDefaultNamespace(u){this.options.defaultNS=u}hasLoadedNamespace(u,T={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;
207if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const S=T.lng||this.resolvedLanguage||this.languages[0],E=this.options?this.options.fallbackLng:!1,C=this.languages[this.languages.length-1];if(S.toLowerCase()==="cimode")return!0;const _=(P,R)=>{const I=this.services.backendConnector.state[`${P}|${R}`];return I===-1||I===0||I===2};if(T.precheck){const P=T.precheck(this,_);if(P!==void 0)return P}return!!(this.hasResourceBundle(S,u)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||_(S,u)&&(!E||_(C,u)))}loadNamespaces(u,T){const S=defer();return this.options.ns?(isString$1(u)&&(u=[u]),u.forEach(E=>{this.options.ns.indexOf(E)<0&&this.options.ns.push(E)}),this.loadResources(E=>{S.resolve(),T&&T(E)}),S):(T&&T(),Promise.resolve())}loadLanguages(u,T){const S=defer();isString$1(u)&&(u=[u]);const E=this.options.preload||[],C=u.filter(_=>E.indexOf(_)<0&&this.services.languageUtils.isSupportedCode(_));return C.length?(this.options.preload=E.concat(C),this.loadResources(_=>{S.resolve(),T&&T(_)}),S):(T&&T(),Promise.resolve())}dir(u){var E,C;if(u||(u=this.resolvedLanguage||(((E=this.languages)==null?void 0:E.length)>0?this.languages[0]:this.language)),!u)return"rtl";try{const _=new Intl.Locale(u);if(_&&_.getTextInfo){const P=_.getTextInfo();if(P&&P.direction)return P.direction}}catch{}const T=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],S=((C=this.services)==null?void 0:C.languageUtils)||new LanguageUtil(get());return u.toLowerCase().indexOf("-latn")>1?"ltr":T.indexOf(S.getLanguagePartFromCode(u))>-1||u.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(u={},T){const S=new I18n(u,T);return S.createInstance=I18n.createInstance,S}cloneInstance(u={},T=noop){const S=u.forkResourceStore;S&&delete u.forkResourceStore;const E={...this.options,...u,isClone:!0},C=new I18n(E);if((u.debug!==void 0||u.prefix!==void 0)&&(C.logger=C.logger.clone(u)),["store","services","language"].forEach(P=>{C[P]=this[P]}),C.services={...this.services},C.services.utils={hasLoadedNamespace:C.hasLoadedNamespace.bind(C)},S){const P=Object.keys(this.store.data).reduce((R,I)=>(R[I]={...this.store.data[I]},R[I]=Object.keys(R[I]).reduce((L,j)=>(L[j]={...R[I][j]},L),R[I]),R),{});C.store=new ResourceStore(P,E),C.services.resourceStore=C.store}if(u.interpolation){const R={...get().interpolation,...this.options.interpolation,...u.interpolation},I={...E,interpolation:R};C.services.interpolator=new Interpolator(I)}return C.translator=new Translator(C.services,E),C.translator.on("*",(P,...R)=>{C.emit(P,...R)}),C.init(E,T),C.translator.options=E,C.translator.backendConnector.services.utils={hasLoadedNamespace:C.hasLoadedNamespace.bind(C)},C}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const instance=I18n.createInstance();instance.createInstance;instance.dir;instance.init;instance.loadResources;instance.reloadResources;instance.use;instance.changeLanguage;instance.getFixedT;instance.t;instance.exists;instance.setDefaultNamespace;instance.hasLoadedNamespace;instance.loadNamespaces;instance.loadLanguages;var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};const e=getDefaultExportFromCjs(voidElements);var t=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function n(o){var u={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},T=o.match(/<\/?([^\s]+?)[/\s>]/);if(T&&(u.name=T[1],(e[T[1]]||o.charAt(o.length-2)==="/")&&(u.voidElement=!0),u.name.startsWith("!--"))){var S=o.indexOf("-->");return{type:"comment",comment:S!==-1?o.slice(4,S):""}}for(var E=new RegExp(t),C=null;(C=E.exec(o))!==null;)if(C[0].trim())if(C[1]){var _=C[1].trim(),P=[_,""];_.indexOf("=")>-1&&(P=_.split("=")),u.attrs[P[0]]=P[1],E.lastIndex--}else C[2]&&(u.attrs[C[2]]=C[3].trim().substring(1,C[3].length-1));return u}var r=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,i=/^\s*$/,s=Object.create(null);function a(o,u){switch(u.type){case"text":return o+u.content;case"tag":return o+="<"+u.name+(u.attrs?function(T){var S=[];for(var E in T)S.push(E+'="'+T[E]+'"');return S.length?" "+S.join(" "):""}(u.attrs):"")+(u.voidElement?"/>":">"),u.voidElement?o:o+u.children.reduce(a,"")+"</"+u.name+">";
207case"comment":return o+"<!--"+u.comment+"-->"}}var c={parse:function(o,u){u||(u={}),u.components||(u.components=s);var T,S=[],E=[],C=-1,_=!1;if(o.indexOf("<")!==0){var P=o.indexOf("<");S.push({type:"text",content:P===-1?o:o.substring(0,P)})}return o.replace(r,function(R,I){if(_){if(R!=="</"+T.name+">")return;_=!1}var L,j=R.charAt(1)!=="/",M=R.startsWith("<!--"),D=I+R.length,F=o.charAt(D);if(M){var N=n(R);return C<0?(S.push(N),S):((L=E[C]).children.push(N),S)}if(j&&(C++,(T=n(R)).type==="tag"&&u.components[T.name]&&(T.type="component",_=!0),T.voidElement||_||!F||F==="<"||T.children.push({type:"text",content:o.slice(D,o.indexOf("<",D))}),C===0&&S.push(T),(L=E[C-1])&&L.children.push(T),E[C]=T),(!j||T.voidElement)&&(C>-1&&(T.voidElement||T.name===R.slice(2,-1))&&(C--,T=C===-1?S:E[C]),!_&&F!=="<"&&F)){L=C===-1?S:E[C].children;var G=o.indexOf("<",D),B=o.slice(D,G===-1?void 0:G);i.test(B)&&(B=" "),(G>-1&&C+L.length>=0||B!==" ")&&L.push({type:"text",content:B})}}),S},stringify:function(o){return o.reduce(function(u,T){return u+a("",T)},"")}};const warn=(o,u,T,S)=>{var C,_,P,R;const E=[T,{code:u,...S||{}}];if((_=(C=o==null?void 0:o.services)==null?void 0:C.logger)!=null&&_.forward)return o.services.logger.forward(E,"warn","react-i18next::",!0);isString(E[0])&&(E[0]=`react-i18next:: ${E[0]}`),(R=(P=o==null?void 0:o.services)==null?void 0:P.logger)!=null&&R.warn?o.services.logger.warn(...E):console!=null&&console.warn&&console.warn(...E)},alreadyWarned={},warnOnce=(o,u,T,S)=>{isString(T)&&alreadyWarned[T]||(isString(T)&&(alreadyWarned[T]=new Date),warn(o,u,T,S))},loadedClb=(o,u)=>()=>{if(o.isInitialized)u();else{const T=()=>{setTimeout(()=>{o.off("initialized",T)},0),u()};o.on("initialized",T)}},loadNamespaces=(o,u,T)=>{o.loadNamespaces(u,loadedClb(o,T))},loadLanguages=(o,u,T,S)=>{if(isString(T)&&(T=[T]),o.options.preload&&o.options.preload.indexOf(u)>-1)return loadNamespaces(o,T,S);T.forEach(E=>{o.options.ns.indexOf(E)<0&&o.options.ns.push(E)}),o.loadLanguages(u,loadedClb(o,S))},hasLoadedNamespace=(o,u,T={})=>!u.languages||!u.languages.length?(warnOnce(u,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:u.languages}),!0):u.hasLoadedNamespace(o,{lng:T.lng,precheck:(S,E)=>{if(T.bindI18n&&T.bindI18n.indexOf("languageChanging")>-1&&S.services.backendConnector.backend&&S.isLanguageChangingTo&&!E(S.isLanguageChangingTo,o))return!1}}),isString=o=>typeof o=="string",isObject=o=>typeof o=="object"&&o!==null,matchHtmlEntity=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,htmlEntities={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"â¦","…":"â¦","/":"/","/":"/"},unescapeHtmlEntity=o=>htmlEntities[o],unescape=o=>o.replace(matchHtmlEntity,unescapeHtmlEntity);let defaultOptions={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape,transDefaultProps:void 0};const setDefaults=(o={})=>{defaultOptions={...defaultOptions,...o}},getDefaults=()=>defaultOptions;let i18nInstance;const setI18n=o=>{i18nInstance=o},getI18n=()=>i18nInstance,hasChildren=(o,u)=>{var S;if(!o)return!1;const T=((S=o.props)==null?void 0:S.children)??o.children;return u?T.length>0:!!T},getChildren=o=>{var T,S;if(!o)return[];const u=((T=o.props)==null?void 0:T.children)??o.children;return(S=o.props)!=null&&S.i18nIsDynamicList?getAsArray(u):u},hasValidReactChildren=o=>Array.isArray(o)&&o.every(reactExports.isValidElement),getAsArray=o=>Array.isArray(o)?o:[o],mergeProps=(o,u)=>{const T={...u};return T.props={...u.props,...o.props},T},getValuesFromChildren=o=>{const u={};if(!o)return u;const T=S=>{getAsArray(S).forEach(C=>{isString(C)||(hasChildren(C)?T(getChildren(C)):isObject(C)&&!reactExports.isValidElement(C)&&Object.assign(u,C))})};return T(o),u},nodesToString=(o,u,T,S)=>{if(!o)return"";let E="";const C=getAsArray(o),_=u!=null&&u.transSupportBasicHtmlNodes?u.transKeepBasicHtmlNodesFor??[]:[];
207return C.forEach((P,R)=>{if(isString(P)){E+=`${P}`;return}if(reactExports.isValidElement(P)){const{props:I,type:L}=P,j=Object.keys(I).length,M=_.indexOf(L)>-1,D=I.children;if(!D&&M&&!j){E+=`<${L}/>`;return}if(!D&&(!M||j)||I.i18nIsDynamicList){E+=`<${R}></${R}>`;return}if(M&&j===1&&isString(D)){E+=`<${L}>${D}</${L}>`;return}const F=nodesToString(D,u,T,S);E+=`<${R}>${F}</${R}>`;return}if(P===null){warn(T,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:S});return}if(isObject(P)){const{format:I,...L}=P,j=Object.keys(L);if(j.length===1){const M=I?`${j[0]}, ${I}`:j[0];E+=`{{${M}}}`;return}warn(T,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:S,child:P});return}warn(T,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:S,child:P})}),E},escapeLiteralLessThan=(o,u=[],T={})=>{if(!o)return o;const S=Object.keys(T),E=[...u,...S];let C="",_=0;for(;_<o.length;)if(o[_]==="<"){let P=!1;const R=o.slice(_).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(R){const I=R[1];(/^\d+$/.test(I)||E.includes(I))&&(P=!0,C+=R[0],_+=R[0].length)}if(!P){const I=o.slice(_).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(I){const L=I[1];(/^\d+$/.test(L)||E.includes(L))&&(P=!0,C+=I[0],_+=I[0].length)}}P||(C+="<",_+=1)}else C+=o[_],_+=1;return C},renderNodes=(o,u,T,S,E,C,_)=>{if(T==="")return[];const P=E.transKeepBasicHtmlNodesFor||[],R=T&&new RegExp(P.map(H=>`<${H}`).join("|")).test(T);if(!o&&!u&&!R&&!_)return[T];const I=u??{},L=H=>{getAsArray(H).forEach(V=>{isString(V)||(hasChildren(V)?L(getChildren(V)):isObject(V)&&!reactExports.isValidElement(V)&&Object.assign(I,V))})};L(o);const j=escapeLiteralLessThan(T,P,I),M=c.parse(`<0>${j}</0>`),D={...I,...C},F=(H,O,V)=>{var K;const U=getChildren(H),W=G(U,O.children,V);return hasValidReactChildren(U)&&W.length===0||(K=H.props)!=null&&K.i18nIsDynamicList?U:W},N=(H,O,V,U,W)=>{H.dummy?(H.children=O,V.push(reactExports.cloneElement(H,{key:U},W?void 0:O))):V.push(...reactExports.Children.map([H],K=>{const Y="data-i18n-is-dynamic-list",ee={key:U,[Y]:void 0};return K&&K.props&&Object.keys(K.props).forEach(oe=>{oe==="ref"||oe==="children"||oe==="i18nIsDynamicList"||oe===Y||(ee[oe]=K.props[oe])}),reactExports.cloneElement(K,ee,W?null:O)}))},G=(H,O,V)=>{const U=getAsArray(H);return getAsArray(O).reduce((K,Y,ee)=>{var se,Q;const oe=((Q=(se=Y.children)==null?void 0:se[0])==null?void 0:Q.content)&&S.services.interpolator.interpolate(Y.children[0].content,D,S.language);if(Y.type==="tag"){let ie=U[parseInt(Y.name,10)];!ie&&u&&(ie=u[Y.name]),V.length===1&&!ie&&(ie=V[0][Y.name]),ie||(ie={});const ae={...Y.attrs};_&&Object.keys(ae).forEach(de=>{const he=ae[de];isString(he)&&(ae[de]=unescape(he))});const re=Object.keys(ae).length!==0?mergeProps({props:ae},ie):ie,J=reactExports.isValidElement(re),te=J&&hasChildren(Y,!0)&&!Y.voidElement,Z=R&&isObject(re)&&re.dummy&&!J,X=isObject(u)&&Object.hasOwnProperty.call(u,Y.name);if(isString(re)){const de=S.services.interpolator.interpolate(re,D,S.language);K.push(de)}else if(hasChildren(re)||te){const de=F(re,Y,V);N(re,de,K,ee)}else if(Z){const de=G(U,Y.children,V);N(re,de,K,ee)}else if(Number.isNaN(parseFloat(Y.name)))if(X){const de=F(re,Y,V);N(re,de,K,ee,Y.voidElement)}else if(E.transSupportBasicHtmlNodes&&P.indexOf(Y.name)>-1)if(Y.voidElement)K.push(reactExports.createElement(Y.name,{key:`${Y.name}-${ee}`}));else{const de=G(U,Y.children,V);K.push(reactExports.createElement(Y.name,{key:`${Y.name}-${ee}`},de))}else if(Y.voidElement)K.push(`<${Y.name} />`);else{const de=G(U,Y.children,V);K.push(`<${Y.name}>${de}</${Y.name}>`)}else if(isObject(re)&&!J){const de=Y.children[0]?oe:null;de&&K.push(de)}else N(re,oe,K,ee,Y.children.length!==1||!oe)}else if(Y.type==="text"){const ie=E.transWrapTextNodes,ae=typeof E.unescape=="function"?E.unescape:getDefaults().unescape,re=_?ae(S.services.interpolator.interpolate(Y.content,D,S.language)):S.services.interpolator.interpolate(Y.content,D,S.language);ie?K.push(reactExports.createElement(ie,{key:`${Y.name}-${ee}`},re)):K.push(re)}return K},[])},B=G([{dummy:!0,children:o||[]}],M,getAsArray(o||[]));return getChildren(B[0])},fixComponentProps=(o,u,T)=>{const S=o.key||u,E=reactExports.cloneElement(o,{key:S});if(!E.props||!E.props.children||T.indexOf(`${u}/>`)<0&&T.indexOf(`${u} />`)<0)return E;function C(){return reactExports.createElement(reactExports.Fragment,null,E)}return reactExports.createElement(C,{key:S})},generateArrayComponents=(o,u)=>o.map((T,S)=>fixComponentProps(T,S,u)),generateObjectComponents=(o,u)=>{const T={};
207return Object.keys(o).forEach(S=>{Object.assign(T,{[S]:fixComponentProps(o[S],S,u)})}),T},generateComponents=(o,u,T,S)=>o?Array.isArray(o)?generateArrayComponents(o,u):isObject(o)?generateObjectComponents(o,u):(warnOnce(T,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:S}),null):null,isComponentsMap=o=>!isObject(o)||Array.isArray(o)?!1:Object.keys(o).reduce((u,T)=>u&&Number.isNaN(Number.parseFloat(T)),!0);function Trans$1({children:o,count:u,parent:T,i18nKey:S,context:E,tOptions:C={},values:_,defaults:P,components:R,ns:I,i18n:L,t:j,shouldUnescape:M,...D}){var de,he,ne,ue,ce,fe;const F=L||getI18n();if(!F)return warnOnce(F,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:S}),o;const N=j||F.t.bind(F)||(ve=>ve),G={...getDefaults(),...(de=F.options)==null?void 0:de.react};let B=I||N.ns||((he=F.options)==null?void 0:he.defaultNS);B=isString(B)?[B]:B||["translation"];const{transDefaultProps:H}=G,O=H!=null&&H.tOptions?{...H.tOptions,...C}:C,V=M??(H==null?void 0:H.shouldUnescape),U=H!=null&&H.values?{...H.values,..._}:_,W=H!=null&&H.components?{...H.components,...R}:R,K=nodesToString(o,G,F,S),Y=P||(O==null?void 0:O.defaultValue)||K||G.transEmptyNodeValue||(typeof S=="function"?keysFromSelector(S):S),{hashTransKey:ee}=G,oe=S||(ee?ee(K||Y):K||Y);(ue=(ne=F.options)==null?void 0:ne.interpolation)!=null&&ue.defaultVariables?_=U&&Object.keys(U).length>0?{...U,...F.options.interpolation.defaultVariables}:{...F.options.interpolation.defaultVariables}:_=U;const se=getValuesFromChildren(o);se&&typeof se.count=="number"&&u===void 0&&(u=se.count);const Q=_||u!==void 0&&!((fe=(ce=F.options)==null?void 0:ce.interpolation)!=null&&fe.alwaysFormat)||!o?O.interpolation:{interpolation:{...O.interpolation,prefix:"#$?",suffix:"?$#"}},ie={...O,context:E||O.context,count:u,..._,...Q,defaultValue:Y,ns:B};let ae=oe?N(oe,ie):Y;ae===oe&&Y&&(ae=Y);const re=generateComponents(W,ae,F,S);let J=re||o,te=null;isComponentsMap(re)&&(te=re,J=o);const Z=renderNodes(J,te,ae,F,G,ie,V),X=T??G.defaultTransParent;return X?reactExports.createElement(X,D,Z):Z}const initReactI18next={type:"3rdParty",init(o){setDefaults(o.options.react),setI18n(o)}},I18nContext=reactExports.createContext();class ReportNamespaces{constructor(){this.usedNamespaces={}}addUsedNamespaces(u){u.forEach(T=>{this.usedNamespaces[T]||(this.usedNamespaces[T]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}function Trans({children:o,count:u,parent:T,i18nKey:S,context:E,tOptions:C={},values:_,defaults:P,components:R,ns:I,i18n:L,t:j,shouldUnescape:M,...D}){var H;const{i18n:F,defaultNS:N}=reactExports.useContext(I18nContext)||{},G=L||F||getI18n(),B=j||(G==null?void 0:G.t.bind(G));return Trans$1({children:o,count:u,parent:T,i18nKey:S,context:E,tOptions:C,values:_,defaults:P,components:R,ns:I||(B==null?void 0:B.ns)||N||((H=G==null?void 0:G.options)==null?void 0:H.defaultNS),i18n:G,t:j,shouldUnescape:M,...D})}const notReadyT=(o,u)=>isString(u)?u:isObject(u)&&isString(u.defaultValue)?u.defaultValue:Array.isArray(o)?o[o.length-1]:o,notReadySnapshot={t:notReadyT,ready:!1},dummySubscribe=()=>()=>{},useTranslation=(o,u={})=>{var ee,oe,se;const{i18n:T}=u,{i18n:S,defaultNS:E}=reactExports.useContext(I18nContext)||{},C=T||S||getI18n();C&&!C.reportNamespaces&&(C.reportNamespaces=new ReportNamespaces),C||warnOnce(C,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const _=reactExports.useMemo(()=>{var Q;return{...getDefaults(),...(Q=C==null?void 0:C.options)==null?void 0:Q.react,...u}},[C,u]),{useSuspense:P,keyPrefix:R}=_,I=o||E||((ee=C==null?void 0:C.options)==null?void 0:ee.defaultNS),L=isString(I)?[I]:I||["translation"],j=reactExports.useMemo(()=>L,L);(se=(oe=C==null?void 0:C.reportNamespaces)==null?void 0:oe.addUsedNamespaces)==null||se.call(oe,j);const M=reactExports.useRef(0),D=reactExports.useCallback(Q=>{if(!C)return dummySubscribe;const{bindI18n:ie,bindI18nStore:ae}=_,re=()=>{M.current+=1,Q()};return ie&&C.on(ie,re),ae&&C.store.on(ae,re),()=>{ie&&ie.split(" ").forEach(J=>C.off(J,re)),ae&&ae.split(" ").forEach(J=>C.store.off(J,re))}},[C,_]),F=reactExports.useRef(),N=reactExports.useCallback(()=>
207{if(!C)return notReadySnapshot;const Q=!!(C.isInitialized||C.initializedStoreOnce)&&j.every(Z=>hasLoadedNamespace(Z,C,_)),ie=u.lng||C.language,ae=M.current,re=F.current;if(re&&re.ready===Q&&re.lng===ie&&re.keyPrefix===R&&re.revision===ae)return re;const te={t:C.getFixedT(ie,_.nsMode==="fallback"?j:j[0],R),ready:Q,lng:ie,keyPrefix:R,revision:ae};return F.current=te,te},[C,j,R,_,u.lng]),[G,B]=reactExports.useState(0),{t:H,ready:O}=shimExports.useSyncExternalStore(D,N,N);reactExports.useEffect(()=>{if(C&&!O&&!P){const Q=()=>B(ie=>ie+1);u.lng?loadLanguages(C,u.lng,j,Q):loadNamespaces(C,j,Q)}},[C,u.lng,j,O,P,G]);const V=C||{},U=reactExports.useRef(null),W=reactExports.useRef(),K=Q=>{const ie=Object.getOwnPropertyDescriptors(Q);ie.__original&&delete ie.__original;const ae=Object.create(Object.getPrototypeOf(Q),ie);if(!Object.prototype.hasOwnProperty.call(ae,"__original"))try{Object.defineProperty(ae,"__original",{value:Q,writable:!1,enumerable:!1,configurable:!1})}catch{}return ae},Y=reactExports.useMemo(()=>{const Q=V,ie=Q==null?void 0:Q.language;let ae=Q;Q&&(U.current&&U.current.__original===Q?W.current!==ie?(ae=K(Q),U.current=ae,W.current=ie):ae=U.current:(ae=K(Q),U.current=ae,W.current=ie));const re=[H,ae,O];return re.t=H,re.i18n=ae,re.ready=O,re},[H,V,O,V.resolvedLanguage,V.language,V.languages]);if(C&&P&&!O)throw new Promise(Q=>{const ie=()=>Q();u.lng?loadLanguages(C,u.lng,j,ie):loadNamespaces(C,j,ie)});return Y},viFlag="/assets/vi-D9H5Bxu_.png",enFlag="/assets/en-D2-lxbMb.png",AssignIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M19 3h-4.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m2 14H7v-2h7zm3-4H7v-2h10zm0-4H7V7h10z"})),CheckIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})),CheckCircle=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"})),CloseIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),ContentCopyIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"})),EmailIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2m0 4-8 5-8-5V6l8 5 8-5z"})),ExpandLessIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"})),ExpandMoreIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"})),FolderOpenIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"})),GroupsIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 12.75c1.63 0 3.07.39 4.24.9 1.08.48 1.76 1.56 1.76 2.73V18H6v-1.61c0-1.18.68-2.26 1.76-2.73 1.17-.52 2.61-.91 4.24-.91M4 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m1.13 1.1c-.37-.06-.74-.1-1.13-.1-.99 0-1.93.21-2.78.58C.48 14.9 0 15.62 0 16.43V18h4.5v-1.61c0-.83.23-1.61.63-2.29M20 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m4 3.43c0-.81-.48-1.53-1.22-1.85-.85-.37-1.79-.58-2.78-.58-.39 0-.76.04-1.13.1.4.68.63 1.46.63 2.29V18H24zM12 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3"})),HomeIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"})),LibraryBooksIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-1 9H9V9h10zm-4 4H9v-2h6zm4-8H9V5h10z"})),JoinIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8z"})),LogoutIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"m17 7-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4z"})),MenuIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"})),NotificationsActiveIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M7.58 4.08 6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c.15-2.65 1.51-4.97 3.55-6.42m12.39 6.42h2c-.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42M18 11c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-6 11c.14 0 .27-.01.4-.04.65-.14 1.18-.58 1.44-1.18q.15-.36.15-.78h-4c.01 1.1.9 2 2.01 2"})),QuestionIcon=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1m-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1"})),Star=createSvgIcon(jsxRuntimeExports.jsx("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"})),PROMO=15,TUYLC=10,TTHON=10,SAMDO=10,KLIEN=20,HDUYN=10,NGPHG=10,TNGVY=10,TNHAT=10,THINH=5,OANHK=10,CAOTH=5,HMACH=10,BRNOT=10,THANH=10,CHITH=10,AIKHA=10,HGIANG=10,YENPHI=10,LANLAN=10,MANH=10,TUANBOX=10,MRGIANG=10,HAHIEN=10,HAMILY=10,HAOHAO=10,MIDORI=10,THUYAI=10,EDUTECH=10,CLBETP=10,NGOCANH=10,HGTINH=10,HANHPH=10,TIEUHOC=10,PHAMVAN=10,MSDUYEN=10,LUUHOA=10,MSHUONG=10,MYKHUE=10,SELENA=10,VANANH=10,MSVUVU=10,LETAM=10,MYTRANG=10,DOPI=10,NGHIEP=10,THANHKR=10,HOTHAM=10,TANTUNG=10,LONGQN=10,promoCodes={PROMO,TUYLC,TTHON,SAMDO,KLIEN,HDUYN,NGPHG,TNGVY,TNHAT,THINH,OANHK,CAOTH,HMACH,BRNOT,THANH,CHITH,AIKHA,HGIANG,YENPHI,LANLAN,MANH,TUANBOX,MRGIANG,HAHIEN,HAMILY,HAOHAO,MIDORI,THUYAI,EDUTECH,CLBETP,NGOCANH,HGTINH,HANHPH,TIEUHOC,PHAMVAN,MSDUYEN,LUUHOA,MSHUONG,MYKHUE,SELENA,VANANH,MSVUVU,LETAM,MYTRANG,DOPI,NGHIEP,THANHKR,HOTHAM,TANTUNG,LONGQN},PAYMENT_CONFIG={BANK_ID:"BIDV",ACCOUNT_NO:"96247150790",ACCOUNT_NAME:"HO KINH DOANH BAN VAN THINH",PLANS:{PRO:2e5,FULL_AI_PLAN:25e4,FULL_TIEN_ICH:1e5,AI_TOOLS_GROUP1:1e5,AI_TOOLS_GROUP2:1e5,AI_SPEC:5e4,AI_TOOL_SINGLE:3e4,OTHER_TOOLS:3e4,OFFLINE:69e3,EXTLINK:5e4,EXTLINK_TIER:{1:5e4,2:7e4,3:1e5,5:2e5}},PROMO_CODES:promoCodes,MULTI_YEAR_DISCOUNTS:{1:0,2:5,3:10,5:20}},PROMO_BONUS_MONTHS=4,PROMO_BONUS_START=new Date("2026-05-04T00:00:00+07:00"),PROMO_BONUS_END=new Date("2026-05-31T23:59:59+07:00"),PROMO_BONUS_EXCLUDED=["aiToolsGroup1","aiToolsGroup2","aiToolsGroup3","aiToolsGroup4","offline","extendedLink","nhanxetExtension","chuanNgheNghiep"];function getBonusMonths(o){if(o&&PROMO_BONUS_EXCLUDED.includes(o))return 0;const u=new Date;return u>=PROMO_BONUS_START&&u<=PROMO_BONUS_END?PROMO_BONUS_MONTHS:0}function getPromoEndLabel(){const o=PROMO_BONUS_END;return`${String(o.getDate()).padStart(2,"0")}/${String(o.getMonth()+1).padStart(2,"0")}/${o.getFullYear()}`}const GROUP_BASE_DISCOUNT=10,GROUP_TIER1_RATE=1,GROUP_TIER2_RATE=.5,GROUP_TIER1_MAX=20,GROUP_MAX_MEMBERS=100,GROUP_MAX_DISCOUNT=35;function getGroupDiscount(o){if(o<2)return 0;const u=(Math.min(o,GROUP_TIER1_MAX)-2)*GROUP_TIER1_RATE,T=Math.max(o-GROUP_TIER1_MAX,0)*GROUP_TIER2_RATE;return Math.min(GROUP_BASE_DISCOUNT+u+T,GROUP_MAX_DISCOUNT)}function useToast(){const[o,u]=reactExports.useState([]),T=reactExports.useCallback((C,_="info",P=3e3)=>{const R=Date.now()+Math.random();return u(I=>[...I,{id:R,message:C,type:_,duration:P}]),R},[]),S=reactExports.useCallback(C=>{u(_=>_.filter(P=>P.id!==C))},[]),E=reactExports.useMemo(()=>({success:(C,_)=>T(C,"success",_),error:(C,_)=>T(C,"error",_),warning:(C,_)=>T(C,"warning",_),info:(C,_)=>T(C,"info",_)}),[T]);return{toasts:o,toast:E,removeToast:S}}const SFX_POOL_SIZE=3;class AudioManager{constructor(){this._questionAudio=null,this._questionPlayPromise=null,this._sfxPool=[],this._sfxIndex=0,this._unlocked=!1,this._initialized=!1,this._managedElements=[],this._unlockHandler=this._unlock.bind(this)}init(){if(this._initialized)return;this._initialized=!0,["touchstart","touchend","click","keydown"].forEach(T=>{document.addEventListener(T,this._unlockHandler,{once:!1,passive:!0})})}_createAudioElement(){const u=new Audio;return u.preload="auto",u.setAttribute("playsinline",""),u.setAttribute("webkit-playsinline",""),u}_ensureQuestionAudio(){return this._questionAudio||(this._questionAudio=this._createAudioElement()),this._questionAudio}
207_ensureSfxPool(){if(this._sfxPool.length===0)for(let u=0;u<SFX_POOL_SIZE;u++)this._sfxPool.push(this._createAudioElement());return this._sfxPool}_unlock(){if(this._unlocked)return;this._unlocked=!0,["touchstart","touchend","click","keydown"].forEach(T=>{document.removeEventListener(T,this._unlockHandler)}),setTimeout(()=>{const T="data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYoRwi3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYoRwi3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",S=E=>{if(!E)return;const C=E.volume,_=E.src;E.volume=0,E.src=T;const P=E.play();P&&P.then(()=>{E.pause(),E.volume=C,E.src=_}).catch(()=>{E.volume=C,E.src=_})};this._questionAudio&&S(this._questionAudio),this._sfxPool.forEach(E=>S(E)),this._managedElements.forEach(E=>{E.paused&&S(E)})},100)}playQuestion(u,{volume:T=.8}={}){if(!u)return Promise.resolve();this.init();const S=this._ensureQuestionAudio(),E=(this._questionPlayPromise??Promise.resolve()).catch(()=>{});return this._questionPlayPromise=E.then(()=>(S.pause(),S.volume=T,S.src=u,S.currentTime=0,S.play())).catch(C=>{(C==null?void 0:C.name)!=="AbortError"&&console.warn("[AudioManager] Question play failed:",C.message)}),this._questionPlayPromise}stopQuestion(){if(!this._questionAudio)return;const u=this._questionAudio;(this._questionPlayPromise??Promise.resolve()).catch(()=>{}).then(()=>{u.pause(),u.currentTime=0}),this._questionPlayPromise=null}get isQuestionPlaying(){return this._questionAudio?!this._questionAudio.paused&&!this._questionAudio.ended:!1}get questionAudioElement(){return this._ensureQuestionAudio()}createManagedAudio(u="",{loop:T=!1,volume:S=1}={}){this.init();const E=this._createAudioElement();return u&&(E.src=u),E.loop=T,E.volume=S,this._managedElements.push(E),E}disposeManagedAudio(u){u&&(u.pause(),u.src="",this._managedElements=this._managedElements.filter(T=>T!==u))}playSFX(u,{volume:T=.7}={}){if(!u)return Promise.resolve();this.init();const E=this._ensureSfxPool()[this._sfxIndex%SFX_POOL_SIZE];return this._sfxIndex++,E.pause(),E.volume=T,E.src=u,E.currentTime=0,E.play().catch(C=>{console.warn("[AudioManager] SFX play failed:",C.message)})}duckBGM(u=.15){this._managedElements.forEach(T=>{T.paused||(T._originalVolume=T.volume,T.volume=u)})}unduckBGM(){this._managedElements.forEach(u=>{u._originalVolume!==void 0&&(u.volume=u._originalVolume,delete u._originalVolume)})}destroy(){this._questionAudio&&(this._questionAudio.pause(),this._questionAudio.src=""),this._sfxPool.forEach(T=>{T.pause(),T.src=""}),["touchstart","touchend","click","keydown"].forEach(T=>{document.removeEventListener(T,this._unlockHandler)})}}const audioManager=new AudioManager;function usePaymentQr({featureCode:o,basePrice:u,uid:T,appliedPromo:S=null,years:E=1,multiYear:C=!1,priceOverride:_,transferCodeOverride:P}){const R=PAYMENT_CONFIG.MULTI_YEAR_DISCOUNTS||{},I=S?Math.round(u-u*S.discount/100):u,L=C&&R[E]||0,j=C?I*E:I,M=_!==void 0?_:Math.round(j*(1-L/100)),D=(T||"UNKNOWN_UID").substring(0,8),F=P||o.toUpperCase(),N=S?`SEVQR ${F} ${D} ${S.code}`:`SEVQR ${F} ${D}`,G=`https://img.vietqr.io/image/${PAYMENT_CONFIG.BANK_ID}-${PAYMENT_CONFIG.ACCOUNT_NO}-compact2.png?amount=${M}&addInfo=${encodeURIComponent(N)}&accountName=${encodeURIComponent(PAYMENT_CONFIG.ACCOUNT_NAME)}`;return{price:M,priceAfterPromo:I,multiYearDiscountPct:L,transferContent:N,qrUrl:G}}/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var XLSX={};XLSX.version="0.18.5";var current_codepage=1200,current_ansi=1252,VALID_ANSI=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],CS2CP={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},set_ansi=function(o){VALID_ANSI.indexOf(o)!=-1&&(current_ansi=CS2CP[0]=o)};function reset_ansi(){set_ansi(1252)}var set_cp=function(o){current_codepage=o,set_ansi(o)};function reset_cp(){set_cp(1200),reset_ansi()}function char_codes(o){for(var u=[],T=0,S=o.length;T<S;
207++T)u[T]=o.charCodeAt(T);return u}function utf16leread(o){for(var u=[],T=0;T<o.length>>1;++T)u[T]=String.fromCharCode(o.charCodeAt(2*T)+(o.charCodeAt(2*T+1)<<8));return u.join("")}function utf16beread(o){for(var u=[],T=0;T<o.length>>1;++T)u[T]=String.fromCharCode(o.charCodeAt(2*T+1)+(o.charCodeAt(2*T)<<8));return u.join("")}var debom=function(o){var u=o.charCodeAt(0),T=o.charCodeAt(1);return u==255&&T==254?utf16leread(o.slice(2)):u==254&&T==255?utf16beread(o.slice(2)):u==65279?o.slice(1):o},_getchar=function(u){return String.fromCharCode(u)},_getansi=function(u){return String.fromCharCode(u)},$cptable;function set_cptable(o){$cptable=o,set_cp=function(u){current_codepage=u,set_ansi(u)},debom=function(u){return u.charCodeAt(0)===255&&u.charCodeAt(1)===254?$cptable.utils.decode(1200,char_codes(u.slice(2))):u},_getchar=function(T){return current_codepage===1200?String.fromCharCode(T):$cptable.utils.decode(current_codepage,[T&255,T>>8])[0]},_getansi=function(T){return $cptable.utils.decode(current_ansi,[T])[0]},cpdoit()}var Base64_map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Base64_encode(o){for(var u="",T=0,S=0,E=0,C=0,_=0,P=0,R=0,I=0;I<o.length;)T=o.charCodeAt(I++),C=T>>2,S=o.charCodeAt(I++),_=(T&3)<<4|S>>4,E=o.charCodeAt(I++),P=(S&15)<<2|E>>6,R=E&63,isNaN(S)?P=R=64:isNaN(E)&&(R=64),u+=Base64_map.charAt(C)+Base64_map.charAt(_)+Base64_map.charAt(P)+Base64_map.charAt(R);return u}function Base64_decode(o){var u="",T=0,S=0,E=0,C=0,_=0,P=0,R=0;o=o.replace(/[^\w\+\/\=]/g,"");for(var I=0;I<o.length;)C=Base64_map.indexOf(o.charAt(I++)),_=Base64_map.indexOf(o.charAt(I++)),T=C<<2|_>>4,u+=String.fromCharCode(T),P=Base64_map.indexOf(o.charAt(I++)),S=(_&15)<<4|P>>2,P!==64&&(u+=String.fromCharCode(S)),R=Base64_map.indexOf(o.charAt(I++)),E=(P&3)<<6|R,R!==64&&(u+=String.fromCharCode(E));return u}var has_buf=function(){return typeof Buffer<"u"&&typeof process<"u"&&typeof process.versions<"u"&&!!process.versions.node}(),Buffer_from=function(){if(typeof Buffer<"u"){var o=!Buffer.from;if(!o)try{Buffer.from("foo","utf8")}catch{o=!0}return o?function(u,T){return T?new Buffer(u,T):new Buffer(u)}:Buffer.from.bind(Buffer)}return function(){}}();function new_raw_buf(o){return has_buf?Buffer.alloc?Buffer.alloc(o):new Buffer(o):typeof Uint8Array<"u"?new Uint8Array(o):new Array(o)}function new_unsafe_buf(o){return has_buf?Buffer.allocUnsafe?Buffer.allocUnsafe(o):new Buffer(o):typeof Uint8Array<"u"?new Uint8Array(o):new Array(o)}var s2a=function(u){return has_buf?Buffer_from(u,"binary"):u.split("").map(function(T){return T.charCodeAt(0)&255})};function s2ab(o){if(typeof ArrayBuffer>"u")return s2a(o);for(var u=new ArrayBuffer(o.length),T=new Uint8Array(u),S=0;S!=o.length;++S)T[S]=o.charCodeAt(S)&255;return u}function a2s(o){if(Array.isArray(o))return o.map(function(S){return String.fromCharCode(S)}).join("");for(var u=[],T=0;T<o.length;++T)u[T]=String.fromCharCode(o[T]);return u.join("")}function a2u(o){if(typeof Uint8Array>"u")throw new Error("Unsupported");return new Uint8Array(o)}function ab2a(o){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(o instanceof ArrayBuffer)return ab2a(new Uint8Array(o));for(var u=new Array(o.length),T=0;T<o.length;++T)u[T]=o[T];return u}var bconcat=has_buf?function(o){return Buffer.concat(o.map(function(u){return Buffer.isBuffer(u)?u:Buffer_from(u)}))}:function(o){if(typeof Uint8Array<"u"){var u=0,T=0;for(u=0;u<o.length;++u)T+=o[u].length;var S=new Uint8Array(T),E=0;for(u=0,T=0;u<o.length;T+=E,++u)if(E=o[u].length,o[u]instanceof Uint8Array)S.set(o[u],T);else{if(typeof o[u]=="string")throw"wtf";S.set(new Uint8Array(o[u]),T)}return S}return[].concat.apply([],o.map(function(C){return Array.isArray(C)?C:[].slice.call(C)}))};function utf8decode(o){for(var u=[],T=0,S=o.length+250,E=new_raw_buf(o.length+255),C=0;C<o.length;++C){var _=o.charCodeAt(C);if(_<128)E[T++]=_;else if(_<2048)E[T++]=192|_>>6&31,E[T++]=128|_&63;else if(_>=55296&&_<57344){_=(_&1023)+64;var P=o.charCodeAt(++C)&1023;E[T++]=240|_>>8&7,E[T++]=128|_>>2&63,E[T++]=128|P>>6&15|(_&3)<<4,E[T++]=128|P&63}else E[T++]=224|_>>12&15,E[T++]=128|_>>6&63,E[T++]=128|_&63;T>
vendor: 64,103 bytes, lines 207-217
207S&&(u.push(E.slice(0,T)),T=0,E=new_raw_buf(65535),S=65530)}return u.push(E.slice(0,T)),bconcat(u)}var chr0=/\u0000/g,chr1=/[\u0001-\u0006]/g;function _strrev(o){for(var u="",T=o.length-1;T>=0;)u+=o.charAt(T--);return u}function pad0(o,u){var T=""+o;return T.length>=u?T:fill("0",u-T.length)+T}function pad_(o,u){var T=""+o;return T.length>=u?T:fill(" ",u-T.length)+T}function rpad_(o,u){var T=""+o;return T.length>=u?T:T+fill(" ",u-T.length)}function pad0r1(o,u){var T=""+Math.round(o);return T.length>=u?T:fill("0",u-T.length)+T}function pad0r2(o,u){var T=""+o;return T.length>=u?T:fill("0",u-T.length)+T}var p2_32=Math.pow(2,32);function pad0r(o,u){if(o>p2_32||o<-p2_32)return pad0r1(o,u);var T=Math.round(o);return pad0r2(T,u)}function SSF_isgeneral(o,u){return u=u||0,o.length>=7+u&&(o.charCodeAt(u)|32)===103&&(o.charCodeAt(u+1)|32)===101&&(o.charCodeAt(u+2)|32)===110&&(o.charCodeAt(u+3)|32)===101&&(o.charCodeAt(u+4)|32)===114&&(o.charCodeAt(u+5)|32)===97&&(o.charCodeAt(u+6)|32)===108}var days=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],months=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function SSF_init_table(o){return o||(o={}),o[0]="General",o[1]="0",o[2]="0.00",o[3]="#,##0",o[4]="#,##0.00",o[9]="0%",o[10]="0.00%",o[11]="0.00E+00",o[12]="# ?/?",o[13]="# ??/??",o[14]="m/d/yy",o[15]="d-mmm-yy",o[16]="d-mmm",o[17]="mmm-yy",o[18]="h:mm AM/PM",o[19]="h:mm:ss AM/PM",o[20]="h:mm",o[21]="h:mm:ss",o[22]="m/d/yy h:mm",o[37]="#,##0 ;(#,##0)",o[38]="#,##0 ;[Red](#,##0)",o[39]="#,##0.00;(#,##0.00)",o[40]="#,##0.00;[Red](#,##0.00)",o[45]="mm:ss",o[46]="[h]:mm:ss",o[47]="mmss.0",o[48]="##0.0E+0",o[49]="@",o[56]='"ä¸å/ä¸å "hh"æ"mm"å"ss"ç§ "',o}var table_fmt={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"ä¸å/ä¸å "hh"æ"mm"å"ss"ç§ "'},SSF_default_map={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},SSF_default_str={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function SSF_frac(o,u,T){for(var S=o<0?-1:1,E=o*S,C=0,_=1,P=0,R=1,I=0,L=0,j=Math.floor(E);I<u&&(j=Math.floor(E),P=j*_+C,L=j*I+R,!(E-j<5e-8));)E=1/(E-j),C=_,_=P,R=I,I=L;if(L>u&&(I>u?(L=R,P=C):(L=I,P=_)),!T)return[0,S*P,L];var M=Math.floor(S*P/L);return[M,S*P-M*L,L]}function SSF_parse_date_code(o,u,T){if(o>2958465||o<0)return null;var S=o|0,E=Math.floor(86400*(o-S)),C=0,_=[],P={D:S,T:E,u:86400*(o-S)-E,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(P.u)<1e-6&&(P.u=0),u&&u.date1904&&(S+=1462),P.u>.9999&&(P.u=0,++E==86400&&(P.T=E=0,++S,++P.D)),S===60)_=T?[1317,10,29]:[1900,2,29],C=3;else if(S===0)_=T?[1317,8,29]:[1900,1,0],C=6;else{S>60&&--S;var R=new Date(1900,0,1);R.setDate(R.getDate()+S-1),_=[R.getFullYear(),R.getMonth()+1,R.getDate()],C=R.getDay(),S<60&&(C=(C+6)%7),T&&(C=SSF_fix_hijri(R,_))}return P.y=_[0],P.m=_[1],P.d=_[2],P.S=E%60,E=Math.floor(E/60),P.M=E%60,E=Math.floor(E/60),P.H=E,P.q=C,P}var SSFbasedate=new Date(1899,11,31,0,0,0),SSFdnthresh=SSFbasedate.getTime(),SSFbase1904=new Date(1900,2,1,0,0,0);function datenum_local(o,u){var T=o.getTime();return u?T-=1461*24*60*60*1e3:o>=SSFbase1904&&(T+=24*60*60*1e3),(T-(SSFdnthresh+(o.getTimezoneOffset()-SSFbasedate.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function SSF_strip_decimal(o){return o.indexOf(".")==-1?o:o.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function SSF_normalize_exp(o){return o.indexOf("E")==-1?o:o.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function SSF_small_exp(o){var u=o<0?12:11,T=SSF_strip_decimal(o.toFixed(12));return T.length<=u||(T=o.toPrecision(10),T.length<=u)?T:o.toExponential(5)}function SSF_large_exp(o){var u=SSF_strip_decimal(o.toFixed(11));return u.length>(o<0?12:11)||u==="0"||u==="-0"?o.toPrecision(6):u}function SSF_general_num(o){var u=Math.floor(Math.log(Math.abs(o))*Math.LOG10E),T;return u>=-4&&u<=-1?T=o.toPrecision(10+u):Math.abs(u)<=9?T=SSF_small_exp(o):u===10?T=o.toFixed(10).substr(0,12):T=SSF_large_exp(o),SSF_strip_decimal(SSF_normalize_exp(T.toUpperCase()))}function SSF_general(o,u){switch(typeof o){case"string":return o;case"boolean":return o?"TRUE":"FALSE";case"number":return(o|0)===o?o.toString(10):SSF_general_num(o);case"undefined":return"";case"object":if(o==null)return"";if(o instanceof Date)return SSF_format(14,datenum_local(o,u&&u.date1904),u)}throw new Error("unsupported value in General format: "+o)}function SSF_fix_hijri(o,u){u[0]-=581;var T=o.getDay();return o<60&&(T=(T+6)%7),T}function SSF_write_date(o,u,T,S){var E="",C=0,_=0,P=T.y,R,I=0;switch(o){case 98:P=T.y+543;case 121:switch(u.length){case 1:case 2:R=P%100,I=2;break;default:R=P%1e4,I=4;break}break;case 109:switch(u.length){case 1:case 2:R=T.m,I=u.length;break;case 3:return months[T.m-1][1];case 5:return months[T.m-1][0];default:return months[T.m-1][2]}break;case 100:switch(u.length){case 1:case 2:R=T.d,I=u.length;break;case 3:return days[T.q][0];default:return days[T.q][1]}break;case 104:switch(u.length){case 1:case 2:R=1+(T.H+11)%12,I=u.length;break;default:throw"bad hour format: "+u}break;case 72:switch(u.length){case 1:case 2:R=T.H,I=u.length;break;default:throw"bad hour format: "+u}break;case 77:switch(u.length){case 1:case 2:R=T.M,I=u.length;break;default:throw"bad minute format: "+u}break;case 115:if(u!="s"&&u!="ss"&&u!=".0"&&u!=".00"&&u!=".000")throw"bad second format: "+u;return T.u===0&&(u=="s"||u=="ss")?pad0(T.S,u.length):(S>=2?_=S===3?1e3:100:_=S===1?10:1,C=Math.round(_*(T.S+T.u)),C>=60*_&&(C=0),u==="s"?C===0?"0":""+C/_:(E=pad0(C,2+S),u==="ss"?E.substr(0,2):"."+E.substr(2,u.length-1)));case 90:switch(u){case"[h]":case"[hh]":R=T.D*24+T.H;break;case"[m]":case"[mm]":R=(T.D*24+T.H)*60+T.M;break;case"[s]":case"[ss]":R=((T.D*24+T.H)*60+T.M)*60+Math.round(T.S+T.u);break;default:throw"bad abstime format: "+u}I=u.length===3?1:2;break;case 101:R=P,I=1;break}var L=I>0?pad0(R,I):"";return L}function commaify(o){var u=3;if(o.length<=u)return o;for(var T=o.length%u,S=o.substr(0,T);T!=o.length;T+=u)S+=(S.length>0?",":"")+o.substr(T,u);return S}var pct1=/%/g;function write_num_pct(o,u,T){var S=u.replace(pct1,""),E=u.length-S.length;return write_num(o,S,T*Math.pow(10,2*E))+fill("%",E)}function write_num_cm(o,u,T){for(var S=u.length-1;u.charCodeAt(S-1)===44;)--S;return write_num(o,u.substr(0,S),T/Math.pow(10,3*(u.length-S)))}function write_num_exp(o,u){var T,S=o.indexOf("E")-o.indexOf(".")-1;if(o.match(/^#+0.0E\+0$/)){if(u==0)return"0.0E+0";if(u<0)return"-"+write_num_exp(o,-u);var E=o.indexOf(".");E===-1&&(E=o.indexOf("E"));var C=Math.floor(Math.log(u)*Math.LOG10E)%E;if(C<0&&(C+=E),T=(u/Math.pow(10,C)).toPrecision(S+1+(E+C)%E),T.indexOf("e")===-1){var _=Math.floor(Math.log(u)*Math.LOG10E);for(T.indexOf(".")===-1?T=T.charAt(0)+"."+T.substr(1)+"E+"+(_-T.length+C):T+="E+"+(_-C);T.substr(0,2)==="0.";)T=T.charAt(0)+T.substr(2,E)+"."+T.substr(2+E),T=T.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");T=T.replace(/\+-/,"-")}T=T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(P,R,I,L){return R+I+L.substr(0,(E+C)%E)+"."+L.substr(C)+"E"})}else T=u.toExponential(S);return o.match(/E\+00$/)&&T.match(/e[+-]\d$/)&&(T=T.substr(0,T.length-1)+"0"+T.charAt(T.length-1)),o.match(/E\-/)&&T.match(/e\+/)&&(T=T.replace(/e\+/,"e")),T.replace("e","E")}var frac1=/# (\?+)( ?)\/( ?)(\d+)/;function write_num_f1(o,u,T){var S=parseInt(o[4],10),E=Math.round(u*S),C=Math.floor(E/S),_=E-C*S,P=S;return T+(C===0?"":""+C)+" "+(_===0?fill(" ",o[1].length+1+o[4].length):pad_(_,o[1].length)+o[2]+"/"+o[3]+pad0(P,o[4].length))}function write_num_f2(o,u,T){return T+(u===0?"":""+u)+fill(" ",o[1].length+2+o[4].length)}var dec1=/^#*0*\.([0#]+)/,closeparen=/\).*[0#]/,phone=/\(###\) ###\\?-####/;function hashq(o){for(var u="",T,S=0;S!=o.length;++S)switch(T=o.charCodeAt(S)){case 35:break;case 63:u+=" ";break;case 48:u+="0";break;default:u+=String.fromCharCode(T)}return u}function rnd(o,u){var T=Math.pow(10,u);return""+Math.round(o*T)/T}function dec(o,u){var T=o-Math.floor(o),S=Math.pow(10,u);return u<(""+Math.round(T*S)).length?0:Math.round(T*S)}function carry(o,u){return u<(""+Math.round((o-Math.floor(o))*Math.pow(10,u))).length?1:0}function flr(o){return o<2147483647&&o>-2147483648?""+(o>=0?o|0:o-1|0):""+Math.floor(o)}function write_num_flt(o,u,T){if(o.charCodeAt(0)===40&&!u.match(closeparen)){var S=u.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return T>=0?write_num_flt("n",S,T):"("+write_num_flt("n",S,-T)+")"}if(u.charCodeAt(u.length-1)===44)return write_num_cm(o,u,T);if(u.indexOf("%")!==-1)return write_num_pct(o,u,T);if(u.indexOf("E")!==-1)return write_num_exp(u,T);if(u.charCodeAt(0)===36)return"$"+write_num_flt(o,u.substr(u.charAt(1)==" "?2:1),T);var E,C,_,P,R=Math.abs(T),I=T<0?"-":"";if(u.match(/^00+$/))return I+pad0r(R,u.length);if(u.match(/^[#?]+$/))return E=pad0r(T,0),E==="0"&&(E=""),E.length>u.length?E:hashq(u.substr(0,u.length-E.length))+E;if(C=u.match(frac1))return write_num_f1(C,R,I);if(u.match(/^#+0+$/))return I+pad0r(R,u.length-u.indexOf("0"));if(C=u.match(dec1))return E=rnd(T,C[1].length).replace(/^([^\.]+)$/,"$1."+hashq(C[1])).replace(/\.$/,"."+hashq(C[1])).replace(/\.(\d*)$/,function(F,N){return"."+N+fill("0",hashq(C[1]).length-N.length)}),u.indexOf("0.")!==-1?E:E.replace(/^0\./,".");if(u=u.replace(/^#+([0.])/,"$1"),C=u.match(/^(0*)\.(#*)$/))return I+rnd(R,C[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=u.match(/^#{1,3},##0(\.?)$/))return I+commaify(pad0r(R,0));if(C=u.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+write_num_flt(o,u,-T):commaify(""+(Math.floor(T)+carry(T,C[1].length)))+"."+pad0(dec(T,C[1].length),C[1].length);if(C=u.match(/^#,#*,#0/))return write_num_flt(o,u.replace(/^#,#*,/,""),T);if(C=u.match(/^([0#]+)(\\?-([0#]+))+$/))return E=_strrev(write_num_flt(o,u.replace(/[\\-]/g,""),T)),_=0,_strrev(_strrev(u.replace(/\\/g,"")).replace(/[0#]/g,function(F){return _<E.length?E.charAt(_++):F==="0"?"0":""}));if(u.match(phone))return E=write_num_flt(o,"##########",T),"("+E.substr(0,3)+") "+E.substr(3,3)+"-"+E.substr(6);var L="";if(C=u.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return _=Math.min(C[4].length,7),P=SSF_frac(R,Math.pow(10,_)-1,!1),E=""+I,L=write_num("n",C[1],P[1]),L.charAt(L.length-1)==" "&&(L=L.substr(0,L.length-1)+"0"),E+=L+C[2]+"/"+C[3],L=rpad_(P[2],_),L.length<C[4].length&&(L=hashq(C[4].substr(C[4].length-L.length))+L),E+=L,E;if(C=u.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return _=Math.min(Math.max(C[1].length,C[4].length),7),P=SSF_frac(R,Math.pow(10,_)-1,!0),I+(P[0]||(P[1]?"":"0"))+" "+(P[1]?pad_(P[1],_)+C[2]+"/"+C[3]+rpad_(P[2],_):fill(" ",2*_+1+C[2].length+C[3].length));if(C=u.match(/^[#0?]+$/))return E=pad0r(T,0),u.length<=E.length?E:hashq(u.substr(0,u.length-E.length))+E;if(C=u.match(/^([#0?]+)\.([#0]+)$/)){E=""+T.toFixed(Math.min(C[2].length,10)).replace(/([^0])0+$/,"$1"),_=E.indexOf(".");var j=u.indexOf(".")-_,M=u.length-E.length-j;return hashq(u.substr(0,j)+E+u.substr(u.length-M))}if(C=u.match(/^00,000\.([#0]*0)$/))return _=dec(T,C[1].length),T<0?"-"+write_num_flt(o,u,-T):commaify(flr(T)).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(F){return"00,"+(F.length<3?pad0(0,3-F.length):"")+F})+"."+pad0(_,C[1].length);switch(u){case"###,##0.00":return write_num_flt(o,"#,##0.00",T);case"###,###":case"##,###":case"#,###":var D=commaify(pad0r(R,0));return D!=="0"?I+D:"";case"###,###.00":return write_num_flt(o,"###,##0.00",T).replace(/^0\./,".");case"#,###.00":return write_num_flt(o,"#,##0.00",T).replace(/^0\./,".")}throw new Error("unsupported format |"+u+"|")}function write_num_cm2(o,u,T){for(var S=u.length-1;u.charCodeAt(S-1)===44;)--S;return write_num(o,u.substr(0,S),T/Math.pow(10,3*(u.length-S)))}function write_num_pct2(o,u,T){var S=u.replace(pct1,""),E=u.length-S.length;return write_num(o,S,T*Math.pow(10,2*E))+fill("%",E)}function write_num_exp2(o,u){var T,S=o.indexOf("E")-o.indexOf(".")-1;if(o.match(/^#+0.0E\+0$/)){if(u==0)return"0.0E+0";if(u<0)return"-"+write_num_exp2(o,-u);var E=o.indexOf(".");E===-1&&(E=o.indexOf("E"));var C=Math.floor(Math.log(u)*Math.LOG10E)%E;if(C<0&&(C+=E),T=(u/Math.pow(10,C)).toPrecision(S+1+(E+C)%E),!T.match(/[Ee]/)){var _=Math.floor(Math.log(u)*Math.LOG10E);T.indexOf(".")===-1?T=T.charAt(0)+"."+T.substr(1)+"E+"+(_-T.length+C):T+="E+"+(_-C),T=T.replace(/\+-/,"-")}T=T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(P,R,I,L){return R+I+L.substr(0,(E+C)%E)+"."+L.substr(C)+"E"})}else T=u.toExponential(S);return o.match(/E\+00$/)&&T.match(/e[+-]\d$/)&&(T=T.substr(0,T.length-1)+"0"+T.charAt(T.length-1)),o.match(/E\-/)&&T.match(/e\+/)&&(T=T.replace(/e\+/,"e")),T.replace("e","E")}function write_num_int(o,u,T){if(o.charCodeAt(0)===40&&!u.match(closeparen)){var S=u.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return T>=0?write_num_int("n",S,T):"("+write_num_int("n",S,-T)+")"}if(u.charCodeAt(u.length-1)===44)return write_num_cm2(o,u,T);if(u.indexOf("%")!==-1)return write_num_pct2(o,u,T);if(u.indexOf("E")!==-1)return write_num_exp2(u,T);if(u.charCodeAt(0)===36)return"$"+write_num_int(o,u.substr(u.charAt(1)==" "?2:1),T);var E,C,_,P,R=Math.abs(T),I=T<0?"-":"";if(u.match(/^00+$/))return I+pad0(R,u.length);if(u.match(/^[#?]+$/))return E=""+T,T===0&&(E=""),E.length>u.length?E:hashq(u.substr(0,u.length-E.length))+E;if(C=u.match(frac1))return write_num_f2(C,R,I);if(u.match(/^#+0+$/))return I+pad0(R,u.length-u.indexOf("0"));if(C=u.match(dec1))return E=(""+T).replace(/^([^\.]+)$/,"$1."+hashq(C[1])).replace(/\.$/,"."+hashq(C[1])),E=E.replace(/\.(\d*)$/,function(F,N){return"."+N+fill("0",hashq(C[1]).length-N.length)}),u.indexOf("0.")!==-1?E:E.replace(/^0\./,".");if(u=u.replace(/^#+([0.])/,"$1"),C=u.match(/^(0*)\.(#*)$/))return I+(""+R).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=u.match(/^#{1,3},##0(\.?)$/))return I+commaify(""+R);if(C=u.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+write_num_int(o,u,-T):commaify(""+T)+"."+fill("0",C[1].length);if(C=u.match(/^#,#*,#0/))return write_num_int(o,u.replace(/^#,#*,/,""),T);if(C=u.match(/^([0#]+)(\\?-([0#]+))+$/))return E=_strrev(write_num_int(o,u.replace(/[\\-]/g,""),T)),_=0,_strrev(_strrev(u.replace(/\\/g,"")).replace(/[0#]/g,function(F){return _<E.length?E.charAt(_++):F==="0"?"0":""}));if(u.match(phone))return E=write_num_int(o,"##########",T),"("+E.substr(0,3)+") "+E.substr(3,3)+"-"+E.substr(6);var L="";if(C=u.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return _=Math.min(C[4].length,7),P=SSF_frac(R,Math.pow(10,_)-1,!1),E=""+I,L=write_num("n",C[1],P[1]),L.charAt(L.length-1)==" "&&(L=L.substr(0,L.length-1)+"0"),E+=L+C[2]+"/"+C[3],L=rpad_(P[2],_),L.length<C[4].length&&(L=hashq(C[4].substr(C[4].length-L.length))+L),E+=L,E;if(C=u.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return _=Math.min(Math.max(C[1].length,C[4].length),7),P=SSF_frac(R,Math.pow(10,_)-1,!0),I+(P[0]||(P[1]?"":"0"))+" "+(P[1]?pad_(P[1],_)+C[2]+"/"+C[3]+rpad_(P[2],_):fill(" ",2*_+1+C[2].length+C[3].length));if(C=u.match(/^[#0?]+$/))return E=""+T,u.length<=E.length?E:hashq(u.substr(0,u.length-E.length))+E;if(C=u.match(/^([#0]+)\.([#0]+)$/)){E=""+T.toFixed(Math.min(C[2].length,10)).replace(/([^0])0+$/,"$1"),_=E.indexOf(".");var j=u.indexOf(".")-_,M=u.length-E.length-j;return hashq(u.substr(0,j)+E+u.substr(u.length-M))}if(C=u.match(/^00,000\.([#0]*0)$/))return T<0?"-"+write_num_int(o,u,-T):commaify(""+T).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(F){return"00,"+(F.length<3?pad0(0,3-F.length):"")+F})+"."+pad0(0,C[1].length);switch(u){case"###,###":case"##,###":case"#,###":var D=commaify(""+R);return D!=="0"?I+D:"";default:if(u.match(/\.[0#?]*$/))return write_num_int(o,u.slice(0,u.lastIndexOf(".")),T)+hashq(u.slice(u.lastIndexOf(".")))}throw new Error("unsupported format |"+u+"|")}function write_num(o,u,T){return(T|0)===T?write_num_int(o,u,T):write_num_flt(o,u,T)}function SSF_split_fmt(o){for(var u=[],T=!1,S=0,E=0;S<o.length;++S)switch(o.charCodeAt(S)){case 34:T=!T;break;case 95:case 42:case 92:++S;break;case 59:u[u.length]=o.substr(E,S-E),E=S+1}if(u[u.length]=o.substr(E),T===!0)throw new Error("Format |"+o+"| unterminated string ");return u}var SSF_abstime=/\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;function fmt_is_date(o){for(var u=0,T="",S="";u<o.length;)switch(T=o.charAt(u)){case"G":SSF_isgeneral(o,u)&&(u+=6),u++;break;case'"':for(;o.charCodeAt(++u)!==34&&u<o.length;);++u;break;case"\\":u+=2;break;case"_":u+=2;break;case"@":++u;break;case"B":case"b":if(o.charAt(u+1)==="1"||o.charAt(u+1)==="2")return!0;case"M":case"D":case"Y":case"H":case"S":case"E":case"m":case"d":case"y":case"h":case"s":case"e":case"g":return!0;case"A":case"a":case"ä¸":if(o.substr(u,3).toUpperCase()==="A/P"||o.substr(u,5).toUpperCase()==="AM/PM"||o.substr(u,5).toUpperCase()==="ä¸å/ä¸å")return!0;++u;break;case"[":for(S=T;o.charAt(u++)!=="]"&&u<o.length;)S+=o.charAt(u);if(S.match(SSF_abstime))return!0;break;case".":case"0":case"#":for(;u<o.length&&("0#?.,E+-%".indexOf(T=o.charAt(++u))>-1||T=="\\"&&o.charAt(u+1)=="-"&&"0#".indexOf(o.charAt(u+2))>-1););break;case"?":for(;o.charAt(++u)===T;);break;case"*":++u,(o.charAt(u)==" "||o.charAt(u)=="*")&&++u;break;case"(":case")":++u;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;u<o.length&&"0123456789".indexOf(o.charAt(++u))>-1;);break;case" ":++u;break;default:++u;break}return!1}function eval_fmt(o,u,T,S){for(var E=[],C="",_=0,P="",R="t",I,L,j,M="H";_<o.length;)switch(P=o.charAt(_)){case"G":if(!SSF_isgeneral(o,_))throw new Error("unrecognized character "+P+" in "+o);E[E.length]={t:"G",v:"General"},_+=7;break;case'"':for(C="";(j=o.charCodeAt(++_))!==34&&_<o.length;)C+=String.fromCharCode(j);E[E.length]={t:"t",v:C},++_;break;case"\\":var D=o.charAt(++_),F=D==="("||D===")"?D:"t";E[E.length]={t:F,v:D},++_;break;case"_":E[E.length]={t:"t",v:" "},_+=2;break;case"@":E[E.length]={t:"T",v:u},++_;break;case"B":case"b":if(o.charAt(_+1)==="1"||o.charAt(_+1)==="2"){if(I==null&&(I=SSF_parse_date_code(u,T,o.charAt(_+1)==="2"),I==null))return"";E[E.length]={t:"X",v:o.substr(_,2)},R=P,_+=2;break}case"M":case"D":case"Y":case"H":case"S":case"E":P=P.toLowerCase();case"m":case"d":case"y":case"h":case"s":case"e":case"g":if(u<0||I==null&&(I=SSF_parse_date_code(u,T),I==null))return"";for(C=P;++_<o.length&&o.charAt(_).toLowerCase()===P;)C+=P;P==="m"&&R.toLowerCase()==="h"&&(P="M"),P==="h"&&(P=M),E[E.length]={t:P,v:C},R=P;break;case"A":case"a":case"ä¸":var N={t:P,v:P};if(I==null&&(I=SSF_parse_date_code(u,T)),o.substr(_,3).toUpperCase()==="A/P"?(I!=null&&(N.v=I.H>=12?"P":"A"),N.t="T",M="h",_+=3):o.substr(_,5).toUpperCase()==="AM/PM"?(I!=null&&(N.v=I.H>=12?"PM":"AM"),N.t="T",_+=5,M="h"):o.substr(_,5).toUpperCase()==="ä¸å/ä¸å"?(I!=null&&(N.v=I.H>=12?"ä¸å":"ä¸å"),N.t="T",_+=5,M="h"):(N.t="t",++_),I==null&&N.t==="T")return"";E[E.length]=N,R=P;break;case"[":for(C=P;o.charAt(_++)!=="]"&&_<o.length;)C+=o.charAt(_);if(C.slice(-1)!=="]")throw'unterminated "[" block: |'+C+"|";if(C.match(SSF_abstime)){if(I==null&&(I=SSF_parse_date_code(u,T),I==null))return"";E[E.length]={t:"Z",v:C.toLowerCase()},R=C.charAt(1)}else C.indexOf("$")>-1&&(C=(C.match(/\$([^-\[\]]*)/)||[])[1]||"$",fmt_is_date(o)||(E[E.length]={t:"t",v:C}));break;case".":if(I!=null){for(C=P;++_<o.length&&(P=o.charAt(_))==="0";)C+=P;E[E.length]={t:"s",v:C};break}case"0":case"#":for(C=P;++_<o.length&&"0#?.,E+-%".indexOf(P=o.charAt(_))>-1;)C+=P;E[E.length]={t:"n",v:C};break;case"?":for(C=P;o.charAt(++_)===P;)C+=P;E[E.length]={t:P,v:C},R=P;break;case"*":++_,(o.charAt(_)==" "||o.charAt(_)=="*")&&++_;break;case"(":case")":E[E.length]={t:S===1?"t":P,v:P},++_;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(C=P;_<o.length&&"0123456789".indexOf(o.charAt(++_))>-1;)C+=o.charAt(_);E[E.length]={t:"D",v:C};break;case" ":E[E.length]={t:P,v:P},++_;break;case"$":E[E.length]={t:"t",v:"$"},++_;break;default:if(",$-+/():!^&'~{}<>=â¬acfijklopqrtuvwxzP".indexOf(P)===-1)throw new Error("unrecognized character "+P+" in "+o);E[E.length]={t:"t",v:P},++_;break}var G=0,B=0,H;for(_=E.length-1,R="t";_>=0;--_)switch(E[_].t){case"h":case"H":E[_].t=M,R="h",G<1&&(G=1);break;case"s":(H=E[_].v.match(/\.0+$/))&&(B=Math.max(B,H[0].length-1)),G<3&&(G=3);case"d":case"y":case"M":case"e":R=E[_].t;break;case"m":R==="s"&&(E[_].t="M",G<2&&(G=2));break;case"X":break;case"Z":G<1&&E[_].v.match(/[Hh]/)&&(G=1),G<2&&E[_].v.match(/[Mm]/)&&(G=2),G<3&&E[_].v.match(/[Ss]/)&&(G=3)}switch(G){case 0:break;case 1:I.u>=.5&&(I.u=0,++I.S),I.S>=60&&(I.S=0,++I.M),I.M>=60&&(I.M=0,++I.H);break;case 2:I.u>=.5&&(I.u=0,++I.S),I.S>=60&&(I.S=0,++I.M);break}var O="",V;for(_=0;_<E.length;++_)switch(E[_].t){case"t":case"T":case" ":case"D":break;case"X":E[_].v="",E[_].t=";";break;case"d":case"m":case"y":case"h":case"H":case"M":case"s":case"e":case"b":case"Z":E[_].v=SSF_write_date(E[_].t.charCodeAt(0),E[_].v,I,B),E[_].t="t";break;case"n":case"?":for(V=_+1;E[V]!=null&&((P=E[V].t)==="?"||P==="D"||(P===" "||P==="t")&&E[V+1]!=null&&(E[V+1].t==="?"||E[V+1].t==="t"&&E[V+1].v==="/")||E[_].t==="("&&(P===" "||P==="n"||P===")")||P==="t"&&(E[V].v==="/"||E[V].v===" "&&E[V+1]!=null&&E[V+1].t=="?"));)E[_].v+=E[V].v,E[V]={v:"",t:";"},++V;O+=E[_].v,_=V-1;break;case"G":E[_].t="t",E[_].v=SSF_general(u,T);break}var U="",W,K;if(O.length>0){O.charCodeAt(0)==40?(W=u<0&&O.charCodeAt(0)===45?-u:u,K=write_num("n",O,W)):(W=u<0&&S>1?-u:u,K=write_num("n",O,W),W<0&&E[0]&&E[0].t=="t"&&(K=K.substr(1),E[0].v="-"+E[0].v)),V=K.length-1;var Y=E.length;for(_=0;_<E.length;++_)if(E[_]!=null&&E[_].t!="t"&&E[_].v.indexOf(".")>-1){Y=_;break}var ee=E.length;if(Y===E.length&&K.indexOf("E")===-1){for(_=E.length-1;_>=0;--_)E[_]==null||"n?".indexOf(E[_].t)===-1||(V>=E[_].v.length-1?(V-=E[_].v.length,E[_].v=K.substr(V+1,E[_].v.length)):V<0?E[_].v="":(E[_].v=K.substr(0,V+1),V=-1),E[_].t="t",ee=_);V>=0&&ee<E.length&&(E[ee].v=K.substr(0,V+1)+E[ee].v)}else if(Y!==E.length&&K.indexOf("E")===-1){for(V=K.indexOf(".")-1,_=Y;_>=0;--_)if(!(E[_]==null||"n?".indexOf(E[_].t)===-1)){for(L=E[_].v.indexOf(".")>-1&&_===Y?E[_].v.indexOf(".")-1:E[_].v.length-1,U=E[_].v.substr(L+1);L>=0;--L)V>=0&&(E[_].v.charAt(L)==="0"||E[_].v.charAt(L)==="#")&&(U=K.charAt(V--)+U);E[_].v=U,E[_].t="t",ee=_}for(V>=0&&ee<E.length&&(E[ee].v=K.substr(0,V+1)+E[ee].v),V=K.indexOf(".")+1,_=Y;_<E.length;++_)if(!(E[_]==null||"n?(".indexOf(E[_].t)===-1&&_!==Y)){for(L=E[_].v.indexOf(".")>-1&&_===Y?E[_].v.indexOf(".")+1:0,U=E[_].v.substr(0,L);L<E[_].v.length;++L)V<K.length&&(U+=K.charAt(V++));E[_].v=U,E[_].t="t",ee=_}}}for(_=0;_<E.length;++_)E[_]!=null&&"n?".indexOf(E[_].t)>-1&&(W=S>1&&u<0&&_>0&&E[_-1].v==="-"?-u:u,E[_].v=write_num(E[_].t,E[_].v,W),E[_].t="t");var oe="";for(_=0;_!==E.length;++_)E[_]!=null&&(oe+=E[_].v);return oe}var cfregex2=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function chkcond(o,u){if(u==null)return!1;var T=parseFloat(u[2]);switch(u[1]){case"=":if(o==T)return!0;break;case">":if(o>T)return!0;break;case"<":if(o<T)return!0;break;case"<>":if(o!=T)return!0;break;case">=":if(o>=T)return!0;break;case"<=":if(o<=T)return!0;break}return!1}function choose_fmt(o,u){var T=SSF_split_fmt(o),S=T.length,E=T[S-1].indexOf("@");if(S<4&&E>-1&&--S,T.length>4)throw new Error("cannot find right format for |"+T.join("|")+"|");if(typeof u!="number")return[4,T.length===4||E>-1?T[T.length-1]:"@"];switch(T.length){case 1:T=E>-1?["General","General","General",T[0]]:[T[0],T[0],T[0],"@"];break;case 2:T=E>-1?[T[0],T[0],T[0],T[1]]:[T[0],T[1],T[0],"@"];break;case 3:T=E>-1?[T[0],T[1],T[0],T[2]]:[T[0],T[1],T[2],"@"];break}var C=u>0?T[0]:u<0?T[1]:T[2];if(T[0].indexOf("[")===-1&&T[1].indexOf("[")===-1)return[S,C];if(T[0].match(/\[[=<>]/)!=null||T[1].match(/\[[=<>]/)!=null){var _=T[0].match(cfregex2),P=T[1].match(cfregex2);return chkcond(u,_)?[S,T[0]]:chkcond(u,P)?[S,T[1]]:[S,T[_!=null&&P!=null?2:1]]}return[S,C]}function SSF_format(o,u,T){T==null&&(T={});var S="";switch(typeof o){case"string":o=="m/d/yy"&&T.dateNF?S=T.dateNF:S=o;break;case"number":o==14&&T.dateNF?S=T.dateNF:S=(T.table!=null?T.table:table_fmt)[o],S==null&&(S=T.table&&T.table[SSF_default_map[o]]||table_fmt[SSF_default_map[o]]),S==null&&(S=SSF_default_str[o]||"General");break}if(SSF_isgeneral(S,0))return SSF_general(u,T);u instanceof Date&&(u=datenum_local(u,T.date1904));var E=choose_fmt(S,u);if(SSF_isgeneral(E[1]))return SSF_general(u,T);if(u===!0)u="TRUE";else if(u===!1)u="FALSE";else if(u===""||u==null)return"";return eval_fmt(E[1],u,T,E[0])}function SSF_load(o,u){if(typeof u!="number"){u=+u||-1;for(var T=0;T<392;++T){if(table_fmt[T]==null){u<0&&(u=T);continue}if(table_fmt[T]==o){u=T;break}}u<0&&(u=391)}return table_fmt[u]=o,u}function SSF_load_table(o){for(var u=0;u!=392;++u)o[u]!==void 0&&SSF_load(o[u],u)}function make_ssf(){table_fmt=SSF_init_table()}var SSF={format:SSF_format,load:SSF_load,_table:table_fmt,load_table:SSF_load_table,parse_date_code:SSF_parse_date_code,is_date:fmt_is_date,get_table:function(){return SSF._table=table_fmt}},SSFImplicit={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"},dateNFregex=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function dateNF_regex(o){var u=typeof o=="number"?table_fmt[o]:o;return u=u.replace(dateNFregex,"(\\d+)"),new RegExp("^"+u+"$")}function dateNF_fix(o,u,T){var S=-1,E=-1,C=-1,_=-1,P=-1,R=-1;(u.match(dateNFregex)||[]).forEach(function(j,M){var D=parseInt(T[M+1],10);switch(j.toLowerCase().charAt(0)){case"y":S=D;break;case"d":C=D;break;case"h":_=D;break;case"s":R=D;break;case"m":_>=0?P=D:E=D;break}}),R>=0&&P==-1&&E>=0&&(P=E,E=-1);var I=(""+(S>=0?S:new Date().getFullYear())).slice(-4)+"-"+("00"+(E>=1?E:1)).slice(-2)+"-"+("00"+(C>=1?C:1)).slice(-2);I.length==7&&(I="0"+I),I.length==8&&(I="20"+I);var L=("00"+(_>=0?_:0)).slice(-2)+":"+("00"+(P>=0?P:0)).slice(-2)+":"+("00"+(R>=0?R:0)).slice(-2);return _==-1&&P==-1&&R==-1?I:S==-1&&E==-1&&C==-1?L:I+"T"+L}var CRC32=function(){var o={};o.version="1.2.0";function u(){for(var K=0,Y=new Array(256),ee=0;ee!=256;++ee)K=ee,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,K=K&1?-306674912^K>>>1:K>>>1,Y[ee]=K;return typeof Int32Array<"u"?new Int32Array(Y):Y}var T=u();function S(K){var Y=0,ee=0,oe=0,se=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(oe=0;oe!=256;++oe)se[oe]=K[oe];for(oe=0;oe!=256;++oe)for(ee=K[oe],Y=256+oe;Y<4096;Y+=256)ee=se[Y]=ee>>>8^K[ee&255];var Q=[];for(oe=1;oe!=16;++oe)Q[oe-1]=typeof Int32Array<"u"?se.subarray(oe*256,oe*256+256):se.slice(oe*256,oe*256+256);return Q}var E=S(T),C=E[0],_=E[1],P=E[2],R=E[3],I=E[4],L=E[5],j=E[6],M=E[7],D=E[8],F=E[9],N=E[10],G=E[11],B=E[12],H=E[13],O=E[14];function V(K,Y){for(var ee=Y^-1,oe=0,se=K.length;oe<se;)ee=ee>>>8^T[(ee^K.charCodeAt(oe++))&255];return~ee}function U(K,Y){for(var ee=Y^-1,oe=K.length-15,se=0;se<oe;)ee=O[K[se++]^ee&255]^H[K[se++]^ee>>8&255]^B[K[se++]^ee>>16&255]^G[K[se++]^ee>>>24]^N[K[se++]]^F[K[se++]]^D[K[se++]]^M[K[se++]]^j[K[se++]]^L[K[se++]]^I[K[se++]]^R[K[se++]]^P[K[se++]]^_[K[se++]]^C[K[se++]]^T[K[se++]];for(oe+=15;se<oe;)ee=ee>>>8^T[(ee^K[se++])&255];return~ee}function W(K,Y){for(var ee=Y^-1,oe=0,se=K.length,Q=0,ie=0;oe<se;)Q=K.charCodeAt(oe++),Q<128?ee=ee>>>8^T[(ee^Q)&255]:Q<2048?(ee=ee>>>8^T[(ee^(192|Q>>6&31))&255],ee=ee>>>8^T[(ee^(128|Q&63))&255]):Q>=55296&&Q<57344?(Q=(Q&1023)+64,ie=K.charCodeAt(oe++)&1023,ee=ee>>>8^T[(ee^(240|Q>>8&7))&255],ee=ee>>>8^T[(ee^(128|Q>>2&63))&255],ee=ee>>>8^T[(ee^(128|ie>>6&15|(Q&3)<<4))&255],ee=ee>>>8^T[(ee^(128|ie&63))&255]):(ee=ee>>>8^T[(ee^(224|Q>>12&15))&255],ee=ee>>>8^T[(ee^(128|Q>>6&63))&255],ee=ee>>>8^T[(ee^(128|Q&63))&255]);return~ee}return o.table=T,o.bstr=V,o.buf=U,o.str=W,o}(),CFB=function(){var u={};u.version="1.2.1";function T(le,ye){for(var me=le.split("/"),ge=ye.split("/"),xe=0,be=0,Ce=Math.min(me.length,ge.length);xe<Ce;++xe){if(be=me[xe].length-ge[xe].length)return be;if(me[xe]!=ge[xe])return me[xe]<ge[xe]?-1:1}return me.length-ge.length}function S(le){if(le.charAt(le.length-1)=="/")return le.slice(0,-1).indexOf("/")===-1?le:S(le.slice(0,-1));var ye=le.lastIndexOf("/");return ye===-1?le:le.slice(0,ye+1)}function E(le){if(le.charAt(le.length-1)=="/")return E(le.slice(0,-1));var ye=le.lastIndexOf("/");return ye===-1?le:le.slice(ye+1)}function C(le,ye){typeof ye=="string"&&(ye=new Date(ye));var me=ye.getHours();me=me<<6|ye.getMinutes(),me=me<<5|ye.getSeconds()>>>1,le.write_shift(2,me);var ge=ye.getFullYear()-1980;ge=ge<<4|ye.getMonth()+1,ge=ge<<5|ye.getDate(),le.write_shift(2,ge)}function _(le){var ye=le.read_shift(2)&65535,me=le.read_shift(2)&65535,ge=new Date,xe=me&31;me>>>=5;var be=me&15;me>>>=4,ge.setMilliseconds(0),ge.setFullYear(me+1980),ge.setMonth(be-1),ge.setDate(xe);var Ce=ye&31;ye>>>=5;var Re=ye&63;return ye>>>=6,ge.setHours(ye),ge.setMinutes(Re),ge.setSeconds(Ce<<1),ge}function P(le){prep_blob(le,0);for(var ye={},me=0;le.l<=le.length-4;){var ge=le.read_shift(2),xe=le.read_shift(2),be=le.l+xe,Ce={};switch(ge){case 21589:me=le.read_shift(1),me&1&&(Ce.mtime=le.read_shift(4)),xe>5&&(me&2&&(Ce.atime=le.read_shift(4)),me&4&&(Ce.ctime=le.read_shift(4))),Ce.mtime&&(Ce.mt=new Date(Ce.mtime*1e3));break}le.l=be,ye[ge]=Ce}return ye}var R;function I(){return R||(R={})}function L(le,ye){if(le[0]==80&&le[1]==75)return De(le,ye);if((le[0]|32)==109&&(le[1]|32)==105)return It(le,ye);if(le.length<512)throw new Error("CFB file size "+le.length+" < 512");var me=3,ge=512,xe=0,be=0,Ce=0,Re=0,Ee=0,_e=[],Ae=le.slice(0,512);prep_blob(Ae,0);var Fe=j(Ae);switch(me=Fe[0],me){case 3:ge=512;break;case 4:ge=4096;break;case 0:if(Fe[1]==0)return De(le,ye);default:throw new Error("Major Version: Expected 3 or 4 saw "+me)}ge!==512&&(Ae=le.slice(0,ge),prep_blob(Ae,28));var Oe=le.slice(0,ge);M(Ae,me);var Ke=Ae.read_shift(4,"i");if(me===3&&Ke!==0)throw new Error("# Directory Sectors: Expected 0 saw "+Ke);Ae.l+=4,Ce=Ae.read_shift(4,"i"),Ae.l+=4,Ae.chk("00100000","Mini Stream Cutoff Size: "),Re=Ae.read_shift(4,"i"),xe=Ae.read_shift(4,"i"),Ee=Ae.read_shift(4,"i"),be=Ae.read_shift(4,"i");for(var Ne=-1,Ve=0;Ve<109&&(Ne=Ae.read_shift(4,"i"),!(Ne<0));++Ve)_e[Ve]=Ne;var nt=D(le,ge);G(Ee,be,nt,ge,_e);var lt=H(nt,Ce,_e,ge);lt[Ce].name="!Directory",xe>0&&Re!==ie&&(lt[Re].name="!MiniFAT"),lt[_e[0]].name="!FAT",lt.fat_addrs=_e,lt.ssz=ge;var ct={},dt=[],Tt=[],kt=[];O(Ce,lt,nt,dt,xe,ct,Tt,Re),F(Tt,kt,dt),dt.shift();var St={FileIndex:Tt,FullPaths:kt};return ye&&ye.raw&&(St.raw={header:Oe,sectors:nt}),St}function j(le){if(le[le.l]==80&&le[le.l+1]==75)return[0,0];le.chk(ae,"Header Signature: "),le.l+=16;var ye=le.read_shift(2,"u");return[le.read_shift(2,"u"),ye]}function M(le,ye){var me=9;switch(le.l+=2,me=le.read_shift(2)){case 9:if(ye!=3)throw new Error("Sector Shift: Expected 9 saw "+me);break;case 12:if(ye!=4)throw new Error("Sector Shift: Expected 12 saw "+me);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+me)}le.chk("0600","Mini Sector Shift: "),le.chk("000000000000","Reserved: ")}function D(le,ye){for(var me=Math.ceil(le.length/ye)-1,ge=[],xe=1;xe<me;++xe)ge[xe-1]=le.slice(xe*ye,(xe+1)*ye);return ge[me-1]=le.slice(me*ye),ge}function F(le,ye,me){for(var ge=0,xe=0,be=0,Ce=0,Re=0,Ee=me.length,_e=[],Ae=[];ge<Ee;++ge)_e[ge]=Ae[ge]=ge,ye[ge]=me[ge];for(;Re<Ae.length;++Re)ge=Ae[Re],xe=le[ge].L,be=le[ge].R,Ce=le[ge].C,_e[ge]===ge&&(xe!==-1&&_e[xe]!==xe&&(_e[ge]=_e[xe]),be!==-1&&_e[be]!==be&&(_e[ge]=_e[be])),Ce!==-1&&(_e[Ce]=ge),xe!==-1&&ge!=_e[ge]&&(_e[xe]=_e[ge],Ae.lastIndexOf(xe)<Re&&Ae.push(xe)),be!==-1&&ge!=_e[ge]&&(_e[be]=_e[ge],Ae.lastIndexOf(be)<Re&&Ae.push(be));for(ge=1;ge<Ee;++ge)_e[ge]===ge&&(be!==-1&&_e[be]!==be?_e[ge]=_e[be]:xe!==-1&&_e[xe]!==xe&&(_e[ge]=_e[xe]));for(ge=1;ge<Ee;++ge)if(le[ge].type!==0){if(Re=ge,Re!=_e[Re])do Re=_e[Re],ye[ge]=ye[Re]+"/"+ye[ge];while(Re!==0&&_e[Re]!==-1&&Re!=_e[Re]);_e[ge]=-1}for(ye[0]+="/",ge=1;ge<Ee;++ge)le[ge].type!==2&&(ye[ge]+="/")}function N(le,ye,me){for(var ge=le.start,xe=le.size,be=[],Ce=ge;me&&xe>0&&Ce>=0;)be.push(ye.slice(Ce*Q,Ce*Q+Q)),xe-=Q,Ce=__readInt32LE(me,Ce*4);return be.length===0?new_buf(0):bconcat(be).slice(0,le.size)}function G(le,ye,me,ge,xe){var be=ie;if(le===ie){if(ye!==0)throw new Error("DIFAT chain shorter than expected")}else if(le!==-1){var Ce=me[le],Re=(ge>>>2)-1;if(!Ce)return;for(var Ee=0;Ee<Re&&(be=__readInt32LE(Ce,Ee*4))!==ie;++Ee)xe.push(be);G(__readInt32LE(Ce,ge-4),ye-1,me,ge,xe)}}function B(le,ye,me,ge,xe){var be=[],Ce=[];xe||(xe=[]);var Re=ge-1,Ee=0,_e=0;for(Ee=ye;Ee>=0;){xe[Ee]=!0,be[be.length]=Ee,Ce.push(le[Ee]);var Ae=me[Math.floor(Ee*4/ge)];if(_e=Ee*4&Re,ge<4+_e)throw new Error("FAT boundary crossed: "+Ee+" 4 "+ge);if(!le[Ae])break;Ee=__readInt32LE(le[Ae],_e)}return{nodes:be,data:__toBuffer([Ce])}}function H(le,ye,me,ge){var xe=le.length,be=[],Ce=[],Re=[],Ee=[],_e=ge-1,Ae=0,Fe=0,Oe=0,Ke=0;for(Ae=0;Ae<xe;++Ae)if(Re=[],Oe=Ae+ye,Oe>=xe&&(Oe-=xe),!Ce[Oe]){Ee=[];var Ne=[];for(Fe=Oe;Fe>=0;){Ne[Fe]=!0,Ce[Fe]=!0,Re[Re.length]=Fe,Ee.push(le[Fe]);var Ve=me[Math.floor(Fe*4/ge)];if(Ke=Fe*4&_e,ge<4+Ke)throw new Error("FAT boundary crossed: "+Fe+" 4 "+ge);if(!le[Ve]||(Fe=__readInt32LE(le[Ve],Ke),Ne[Fe]))break}be[Oe]={nodes:Re,data:__toBuffer([Ee])}}return be}function O(le,ye,me,ge,xe,be,Ce,Re){for(var Ee=0,_e=ge.length?2:0,Ae=ye[le].data,Fe=0,Oe=0,Ke;Fe<Ae.length;Fe+=128){var Ne=Ae.slice(Fe,Fe+128);prep_blob(Ne,64),Oe=Ne.read_shift(2),Ke=__utf16le(Ne,0,Oe-_e),ge.push(Ke);var Ve={name:Ke,type:Ne.read_shift(1),color:Ne.read_shift(1),L:Ne.read_shift(4,"i"),R:Ne.read_shift(4,"i"),C:Ne.read_shift(4,"i"),clsid:Ne.read_shift(16),state:Ne.read_shift(4,"i"),start:0,size:0},nt=Ne.read_shift(2)+Ne.read_shift(2)+Ne.read_shift(2)+Ne.read_shift(2);nt!==0&&(Ve.ct=V(Ne,Ne.l-8));var lt=Ne.read_shift(2)+Ne.read_shift(2)+Ne.read_shift(2)+Ne.read_shift(2);lt!==0&&(Ve.mt=V(Ne,Ne.l-8)),Ve.start=Ne.read_shift(4,"i"),Ve.size=Ne.read_shift(4,"i"),Ve.size<0&&Ve.start<0&&(Ve.size=Ve.type=0,Ve.start=ie,Ve.name=""),Ve.type===5?(Ee=Ve.start,xe>0&&Ee!==ie&&(ye[Ee].name="!StreamData")):Ve.size>=4096?(Ve.storage="fat",ye[Ve.start]===void 0&&(ye[Ve.start]=B(me,Ve.start,ye.fat_addrs,ye.ssz)),ye[Ve.start].name=Ve.name,Ve.content=ye[Ve.start].data.slice(0,Ve.size)):(Ve.storage="minifat",Ve.size<0?Ve.size=0:Ee!==ie&&Ve.start!==ie&&ye[Ee]&&(Ve.content=N(Ve,ye[Ee].data,(ye[Re]||{}).data))),Ve.content&&prep_blob(Ve.content,0),be[Ke]=Ve,Ce.push(Ve)}}function V(le,ye){return new Date((__readUInt32LE(le,ye+4)/1e7*Math.pow(2,32)+__readUInt32LE(le,ye)/1e7-11644473600)*1e3)}function U(le,ye){return I(),L(R.readFileSync(le),ye)}function W(le,ye){var me=ye&&ye.type;switch(me||has_buf&&Buffer.isBuffer(le)&&(me="buffer"),me||"base64"){case"file":return U(le,ye);case"base64":return L(s2a(Base64_decode(le)),ye);case"binary":return L(s2a(le),ye)}return L(le,ye)}function K(le,ye){var me=ye||{},ge=me.root||"Root Entry";if(le.FullPaths||(le.FullPaths=[]),le.FileIndex||(le.FileIndex=[]),le.FullPaths.length!==le.FileIndex.length)throw new Error("inconsistent CFB structure");le.FullPaths.length===0&&(le.FullPaths[0]=ge+"/",le.FileIndex[0]={name:ge,type:5}),me.CLSID&&(le.FileIndex[0].clsid=me.CLSID),Y(le)}function Y(le){var ye="�Sh33tJ5";if(!CFB.find(le,"/"+ye)){var me=new_buf(4);me[0]=55,me[1]=me[3]=50,me[2]=54,le.FileIndex.push({name:ye,type:2,content:me,size:4,L:69,R:69,C:69}),le.FullPaths.push(le.FullPaths[0]+ye),ee(le)}}function ee(le,ye){K(le);for(var me=!1,ge=!1,xe=le.FullPaths.length-1;xe>=0;--xe){var be=le.FileIndex[xe];switch(be.type){case 0:ge?me=!0:(le.FileIndex.pop(),le.FullPaths.pop());break;case 1:case 2:case 5:ge=!0,isNaN(be.R*be.L*be.C)&&(me=!0),be.R>-1&&be.L>-1&&be.R==be.L&&(me=!0);break;default:me=!0;break}}if(!(!me&&!ye)){var Ce=new Date(1987,1,19),Re=0,Ee=Object.create?Object.create(null):{},_e=[];for(xe=0;xe<le.FullPaths.length;++xe)Ee[le.FullPaths[xe]]=!0,le.FileIndex[xe].type!==0&&_e.push([le.FullPaths[xe],le.FileIndex[xe]]);for(xe=0;xe<_e.length;++xe){var Ae=S(_e[xe][0]);ge=Ee[Ae],ge||(_e.push([Ae,{name:E(Ae).replace("/",""),type:1,clsid:J,ct:Ce,mt:Ce,content:null}]),Ee[Ae]=!0)}for(_e.sort(function(Ke,Ne){return T(Ke[0],Ne[0])}),le.FullPaths=[],le.FileIndex=[],xe=0;xe<_e.length;++xe)le.FullPaths[xe]=_e[xe][0],le.FileIndex[xe]=_e[xe][1];for(xe=0;xe<_e.length;++xe){var Fe=le.FileIndex[xe],Oe=le.FullPaths[xe];if(Fe.name=E(Oe).replace("/",""),Fe.L=Fe.R=Fe.C=-(Fe.color=1),Fe.size=Fe.content?Fe.content.length:0,Fe.start=0,Fe.clsid=Fe.clsid||J,xe===0)Fe.C=_e.length>1?1:-1,Fe.size=0,Fe.type=5;else if(Oe.slice(-1)=="/"){for(Re=xe+1;Re<_e.length&&S(le.FullPaths[Re])!=Oe;++Re);for(Fe.C=Re>=_e.length?-1:Re,Re=xe+1;Re<_e.length&&S(le.FullPaths[Re])!=S(Oe);++Re);Fe.R=Re>=_e.length?-1:Re,Fe.type=1}else S(le.FullPaths[xe+1]||"")==S(Oe)&&(Fe.R=xe+1),Fe.type=2}}}function oe(le,ye){var me=ye||{};if(me.fileType=="mad")return Lt(le,me);switch(ee(le),me.fileType){case"zip":return ht(le,me)}var ge=function(Ke){for(var Ne=0,Ve=0,nt=0;nt<Ke.FileIndex.length;++nt){var lt=Ke.FileIndex[nt];if(lt.content){var ct=lt.content.length;ct>0&&(ct<4096?Ne+=ct+63>>6:Ve+=ct+511>>9)}}for(var dt=Ke.FullPaths.length+3>>2,Tt=Ne+7>>3,kt=Ne+127>>7,St=Tt+Ve+dt+kt,bt=St+127>>7,Rt=bt<=109?0:Math.ceil((bt-109)/127);St+bt+Rt+127>>7>bt;)Rt=++bt<=109?0:Math.ceil((bt-109)/127);var gt=[1,Rt,bt,kt,dt,Ve,Ne,0];return Ke.FileIndex[0].size=Ne<<6,gt[7]=(Ke.FileIndex[0].start=gt[0]+gt[1]+gt[2]+gt[3]+gt[4]+gt[5])+(gt[6]+7>>3),gt}(le),xe=new_buf(ge[7]<<9),be=0,Ce=0;{for(be=0;be<8;++be)xe.write_shift(1,re[be]);for(be=0;be<8;++be)xe.write_shift(2,0);for(xe.write_shift(2,62),xe.write_shift(2,3),xe.write_shift(2,65534),xe.write_shift(2,9),xe.write_shift(2,6),be=0;be<3;++be)xe.write_shift(2,0);for(xe.write_shift(4,0),xe.write_shift(4,ge[2]),xe.write_shift(4,ge[0]+ge[1]+ge[2]+ge[3]-1),xe.write_shift(4,0),xe.write_shift(4,4096),xe.write_shift(4,ge[3]?ge[0]+ge[1]+ge[2]-1:ie),xe.write_shift(4,ge[3]),xe.write_shift(-4,ge[1]?ge[0]-1:ie),xe.write_shift(4,ge[1]),be=0;be<109;++be)xe.write_shift(-4,be<ge[2]?ge[1]+be:-1)}if(ge[1])for(Ce=0;Ce<ge[1];++Ce){for(;be<236+Ce*127;++be)xe.write_shift(-4,be<ge[2]?ge[1]+be:-1);xe.write_shift(-4,Ce===ge[1]-1?ie:Ce+1)}var Re=function(Ke){for(Ce+=Ke;be<Ce-1;++be)xe.write_shift(-4,be+1);Ke&&(++be,xe.write_shift(-4,ie))};for(Ce=be=0,Ce+=ge[1];be<Ce;++be)xe.write_shift(-4,te.DIFSECT);for(Ce+=ge[2];be<Ce;++be)xe.write_shift(-4,te.FATSECT);Re(ge[3]),Re(ge[4]);for(var Ee=0,_e=0,Ae=le.FileIndex[0];Ee<le.FileIndex.length;++Ee)Ae=le.FileIndex[Ee],Ae.content&&(_e=Ae.content.length,!(_e<4096)&&(Ae.start=Ce,Re(_e+511>>9)));for(Re(ge[6]+7>>3);xe.l&511;)xe.write_shift(-4,te.ENDOFCHAIN);for(Ce=be=0,Ee=0;Ee<le.FileIndex.length;++Ee)Ae=le.FileIndex[Ee],Ae.content&&(_e=Ae.content.length,!(!_e||_e>=4096)&&(Ae.start=Ce,Re(_e+63>>6)));for(;xe.l&511;)xe.write_shift(-4,te.ENDOFCHAIN);for(be=0;be<ge[4]<<2;++be){var Fe=le.FullPaths[be];if(!Fe||Fe.length===0){for(Ee=0;Ee<17;++Ee)xe.write_shift(4,0);for(Ee=0;Ee<3;++Ee)xe.write_shift(4,-1);for(Ee=0;Ee<12;++Ee)xe.write_shift(4,0);continue}Ae=le.FileIndex[be],be===0&&(Ae.start=Ae.size?Ae.start-1:ie);var Oe=be===0&&me.root||Ae.name;if(_e=2*(Oe.length+1),xe.write_shift(64,Oe,"utf16le"),xe.write_shift(2,_e),xe.write_shift(1,Ae.type),xe.write_shift(1,Ae.color),xe.write_shift(-4,Ae.L),xe.write_shift(-4,Ae.R),xe.write_shift(-4,Ae.C),Ae.clsid)xe.write_shift(16,Ae.clsid,"hex");else for(Ee=0;Ee<4;++Ee)xe.write_shift(4,0);xe.write_shift(4,Ae.state||0),xe.write_shift(4,0),xe.write_shift(4,0),xe.write_shift(4,0),xe.write_shift(4,0),xe.write_shift(4,Ae.start),xe.write_shift(4,Ae.size),xe.write_shift(4,0)}for(be=1;be<le.FileIndex.length;++be)if(Ae=le.FileIndex[be],Ae.size>=4096)if(xe.l=Ae.start+1<<9,has_buf&&Buffer.isBuffer(Ae.content))Ae.content.copy(xe,xe.l,0,Ae.size),xe.l+=Ae.size+511&-512;else{for(Ee=0;Ee<Ae.size;++Ee)xe.write_shift(1,Ae.content[Ee]);for(;Ee&511;++Ee)xe.write_shift(1,0)}for(be=1;be<le.FileIndex.length;++be)if(Ae=le.FileIndex[be],Ae.size>0&&Ae.size<4096)if(has_buf&&Buffer.isBuffer(Ae.content))Ae.content.copy(xe,xe.l,0,Ae.size),xe.l+=Ae.size+63&-64;else{for(Ee=0;Ee<Ae.size;++Ee)xe.write_shift(1,Ae.content[Ee]);for(;Ee&63;++Ee)xe.write_shift(1,0)}if(has_buf)xe.l=xe.length;else for(;xe.l<xe.length;)xe.write_shift(1,0);return xe}function se(le,ye){var me=le.FullPaths.map(function(Ee){return Ee.toUpperCase()}),ge=me.map(function(Ee){var _e=Ee.split("/");return _e[_e.length-(Ee.slice(-1)=="/"?2:1)]}),xe=!1;ye.charCodeAt(0)===47?(xe=!0,ye=me[0].slice(0,-1)+ye):xe=ye.indexOf("/")!==-1;var be=ye.toUpperCase(),Ce=xe===!0?me.indexOf(be):ge.indexOf(be);if(Ce!==-1)return le.FileIndex[Ce];var Re=!be.match(chr1);for(be=be.replace(chr0,""),Re&&(be=be.replace(chr1,"!")),Ce=0;Ce<me.length;++Ce)if((Re?me[Ce].replace(chr1,"!"):me[Ce]).replace(chr0,"")==be||(Re?ge[Ce].replace(chr1,"!"):ge[Ce]).replace(chr0,"")==be)return le.FileIndex[Ce];return null}var Q=64,ie=-2,ae="d0cf11e0a1b11ae1",re=[208,207,17,224,161,177,26,225],J="00000000000000000000000000000000",te={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:ie,FREESECT:-1,HEADER_SIGNATURE:ae,HEADER_MINOR_VERSION:"3e00",MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:J,EntryTypes:["unknown","storage","stream","lockbytes","property","root"]};function Z(le,ye,me){I();var ge=oe(le,me);R.writeFileSync(ye,ge)}function X(le){for(var ye=new Array(le.length),me=0;me<le.length;++me)ye[me]=String.fromCharCode(le[me]);return ye.join("")}function de(le,ye){var me=oe(le,ye);switch(ye&&ye.type||"buffer"){case"file":return I(),R.writeFileSync(ye.filename,me),me;case"binary":return typeof me=="string"?me:X(me);case"base64":return Base64_encode(typeof me=="string"?me:X(me));case"buffer":if(has_buf)return Buffer.isBuffer(me)?me:Buffer_from(me);case"array":return typeof me=="string"?s2a(me):me}return me}var he;function ne(le){try{var ye=le.InflateRaw,me=new ye;if(me._processChunk(new Uint8Array([3,0]),me._finishFlushFlag),me.bytesRead)he=le;else throw new Error("zlib does not expose bytesRead")}catch(ge){console.error("cannot use native zlib: "+(ge.message||ge))}}function ue(le,ye){if(!he)return yt(le,ye);var me=he.InflateRaw,ge=new me,xe=ge._processChunk(le.slice(le.l),ge._finishFlushFlag);return le.l+=ge.bytesRead,xe}function ce(le){return he?he.deflateRawSync(le):je(le)}var fe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ve=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],Te=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];function Se(le){var ye=(le<<1|le<<11)&139536|(le<<5|le<<15)&558144;return(ye>>16|ye>>8|ye)&255}for(var ke=typeof Uint8Array<"u",we=ke?new Uint8Array(256):[],Le=0;Le<256;++Le)we[Le]=Se(Le);function pe(le,ye){var me=we[le&255];return ye<=8?me>>>8-ye:(me=me<<8|we[le>>8&255],ye<=16?me>>>16-ye:(me=me<<8|we[le>>16&255],me>>>24-ye))}function Me(le,ye){var me=ye&7,ge=ye>>>3;return(le[ge]|(me<=6?0:le[ge+1]<<8))>>>me&3}function Pe(le,ye){var me=ye&7,ge=ye>>>3;return(le[ge]|(me<=5?0:le[ge+1]<<8))>>>me&7}function Ue(le,ye){var me=ye&7,ge=ye>>>3;return(le[ge]|(me<=4?0:le[ge+1]<<8))>>>me&15}function qe(le,ye){var me=ye&7,ge=ye>>>3;return(le[ge]|(me<=3?0:le[ge+1]<<8))>>>me&31}function Ie(le,ye){var me=ye&7,ge=ye>>>3;return(le[ge]|(me<=1?0:le[ge+1]<<8))>>>me&127}function Xe(le,ye,me){var ge=ye&7,xe=ye>>>3,be=(1<<me)-1,Ce=le[xe]>>>ge;return me<8-ge||(Ce|=le[xe+1]<<8-ge,me<16-ge)||(Ce|=le[xe+2]<<16-ge,me<24-ge)||(Ce|=le[xe+3]<<24-ge),Ce&be}function et(le,ye,me){var ge=ye&7,xe=ye>>>3;return ge<=5?le[xe]|=(me&7)<<ge:(le[xe]|=me<<ge&255,le[xe+1]=(me&7)>>8-ge),ye+3}function tt(le,ye,me){var ge=ye&7,xe=ye>>>3;return me=(me&1)<<ge,le[xe]|=me,ye+1}function Ye(le,ye,me){var ge=ye&7,xe=ye>>>3;return me<<=ge,le[xe]|=me&255,me>>>=8,le[xe+1]=me,ye+8}function ze(le,ye,me){var ge=ye&7,xe=ye>>>3;return me<<=ge,le[xe]|=me&255,me>>>=8,le[xe+1]=me&255,le[xe+2]=me>>>8,ye+16}function Ze(le,ye){var me=le.length,ge=2*me>ye?2*me:ye+5,xe=0;if(me>=ye)return le;if(has_buf){var be=new_unsafe_buf(ge);if(le.copy)le.copy(be);else for(;xe<le.length;++xe)be[xe]=le[xe];return be}else if(ke){var Ce=new Uint8Array(ge);if(Ce.set)Ce.set(le);else for(;xe<me;++xe)Ce[xe]=le[xe];return Ce}return le.length=ge,le}function He(le){for(var ye=new Array(le),me=0;me<le;++me)ye[me]=0;return ye}function rt(le,ye,me){var ge=1,xe=0,be=0,Ce=0,Re=0,Ee=le.length,_e=ke?new Uint16Array(32):He(32);for(be=0;be<32;++be)_e[be]=0;for(be=Ee;be<me;++be)le[be]=0;Ee=le.length;var Ae=ke?new Uint16Array(Ee):He(Ee);for(be=0;be<Ee;++be)_e[xe=le[be]]++,ge<xe&&(ge=xe),Ae[be]=0;for(_e[0]=0,be=1;be<=ge;++be)_e[be+16]=Re=Re+_e[be-1]<<1;for(be=0;be<Ee;++be)Re=le[be],Re!=0&&(Ae[be]=_e[Re+16]++);var Fe=0;for(be=0;be<Ee;++be)if(Fe=le[be],Fe!=0)for(Re=pe(Ae[be],ge)>>ge-Fe,Ce=(1<<ge+4-Fe)-1;Ce>=0;--Ce)ye[Re|Ce<<Fe]=Fe&15|be<<4;return ge}var it=ke?new Uint16Array(512):He(512),st=ke?new Uint16Array(32):He(32);if(!ke){for(var at=0;at<512;++at)it[at]=0;for(at=0;at<32;++at)st[at]=0}(function(){for(var le=[],ye=0;ye<32;ye++)le.push(5);rt(le,st,32);var me=[];for(ye=0;ye<=143;ye++)me.push(8);for(;ye<=255;ye++)me.push(9);for(;ye<=279;ye++)me.push(7);for(;ye<=287;ye++)me.push(8);rt(me,it,288)})();var ot=function(){for(var ye=ke?new Uint8Array(32768):[],me=0,ge=0;me<Te.length-1;++me)for(;ge<Te[me+1];++ge)ye[ge]=me;for(;ge<32768;++ge)ye[ge]=29;var xe=ke?new Uint8Array(259):[];for(me=0,ge=0;me<ve.length-1;++me)for(;ge<ve[me+1];++ge)xe[ge]=me;function be(Re,Ee){for(var _e=0;_e<Re.length;){var Ae=Math.min(65535,Re.length-_e),Fe=_e+Ae==Re.length;for(Ee.write_shift(1,+Fe),Ee.write_shift(2,Ae),Ee.write_shift(2,~Ae&65535);Ae-- >0;)Ee[Ee.l++]=Re[_e++]}return Ee.l}function Ce(Re,Ee){for(var _e=0,Ae=0,Fe=ke?new Uint16Array(32768):[];Ae<Re.length;){var Oe=Math.min(65535,Re.length-Ae);if(Oe<10){for(_e=et(Ee,_e,+(Ae+Oe==Re.length)),_e&7&&(_e+=8-(_e&7)),Ee.l=_e/8|0,Ee.write_shift(2,Oe),Ee.write_shift(2,~Oe&65535);Oe-- >0;)Ee[Ee.l++]=Re[Ae++];_e=Ee.l*8;continue}_e=et(Ee,_e,+(Ae+Oe==Re.length)+2);for(var Ke=0;Oe-- >0;){var Ne=Re[Ae];Ke=(Ke<<5^Ne)&32767;var Ve=-1,nt=0;if((Ve=Fe[Ke])&&(Ve|=Ae&-32768,Ve>Ae&&(Ve-=32768),Ve<Ae))for(;Re[Ve+nt]==Re[Ae+nt]&&nt<250;)++nt;if(nt>2){Ne=xe[nt],Ne<=22?_e=Ye(Ee,_e,we[Ne+1]>>1)-1:(Ye(Ee,_e,3),_e+=5,Ye(Ee,_e,we[Ne-23]>>5),_e+=3);var lt=Ne<8?0:Ne-4>>2;lt>0&&(ze(Ee,_e,nt-ve[Ne]),_e+=lt),Ne=ye[Ae-Ve],_e=Ye(Ee,_e,we[Ne]>>3),_e-=3;var ct=Ne<4?0:Ne-2>>1;ct>0&&(ze(Ee,_e,Ae-Ve-Te[Ne]),_e+=ct);for(var dt=0;dt<nt;++dt)Fe[Ke]=Ae&32767,Ke=(Ke<<5^Re[Ae])&32767,++Ae;Oe-=nt-1}else Ne<=143?Ne=Ne+48:_e=tt(Ee,_e,1),_e=Ye(Ee,_e,we[Ne]),Fe[Ke]=Ae&32767,++Ae}_e=Ye(Ee,_e,0)-1}return Ee.l=(_e+7)/8|0,Ee.l}return function(Ee,_e){return Ee.length<8?be(Ee,_e):Ce(Ee,_e)}}();function je(le){var ye=new_buf(50+Math.floor(le.length*1.1)),me=ot(le,ye);return ye.slice(0,me)}var Be=ke?new Uint16Array(32768):He(32768),Qe=ke?new Uint16Array(32768):He(32768),Ge=ke?new Uint16Array(128):He(128),We=1,mt=1;function xt(le,ye){var me=qe(le,ye)+257;ye+=5;var ge=qe(le,ye)+1;ye+=5;var xe=Ue(le,ye)+4;ye+=4;for(var be=0,Ce=ke?new Uint8Array(19):He(19),Re=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],Ee=1,_e=ke?new Uint8Array(8):He(8),Ae=ke?new Uint8Array(8):He(8),Fe=Ce.length,Oe=0;Oe<xe;++Oe)Ce[fe[Oe]]=be=Pe(le,ye),Ee<be&&(Ee=be),_e[be]++,ye+=3;var Ke=0;for(_e[0]=0,Oe=1;Oe<=Ee;++Oe)Ae[Oe]=Ke=Ke+_e[Oe-1]<<1;for(Oe=0;Oe<Fe;++Oe)(Ke=Ce[Oe])!=0&&(Re[Oe]=Ae[Ke]++);var Ne=0;for(Oe=0;Oe<Fe;++Oe)if(Ne=Ce[Oe],Ne!=0){Ke=we[Re[Oe]]>>8-Ne;for(var Ve=(1<<7-Ne)-1;Ve>=0;--Ve)Ge[Ke|Ve<<Ne]=Ne&7|Oe<<3}var nt=[];for(Ee=1;nt.length<me+ge;)switch(Ke=Ge[Ie(le,ye)],ye+=Ke&7,Ke>>>=3){case 16:for(be=3+Me(le,ye),ye+=2,Ke=nt[nt.length-1];be-- >0;)nt.push(Ke);break;case 17:for(be=3+Pe(le,ye),ye+=3;be-- >0;)nt.push(0);break;case 18:for(be=11+Ie(le,ye),ye+=7;be-- >0;)nt.push(0);break;default:nt.push(Ke),Ee<Ke&&(Ee=Ke);break}var lt=nt.slice(0,me),ct=nt.slice(me);for(Oe=me;Oe<286;++Oe)lt[Oe]=0;for(Oe=ge;Oe<30;++Oe)ct[Oe]=0;return We=rt(lt,Be,286),mt=rt(ct,Qe,30),ye}function vt(le,ye){if(le[0]==3&&!(le[1]&3))return[new_raw_buf(ye),2];for(var me=0,ge=0,xe=new_unsafe_buf(ye||1<<18),be=0,Ce=xe.length>>>0,Re=0,Ee=0;!(ge&1);){if(ge=Pe(le,me),me+=3,ge>>>1)ge>>1==1?(Re=9,Ee=5):(me=xt(le,me),Re=We,Ee=mt);else{me&7&&(me+=8-(me&7));var _e=le[me>>>3]|le[(me>>>3)+1]<<8;if(me+=32,_e>0)for(!ye&&Ce<be+_e&&(xe=Ze(xe,be+_e),Ce=xe.length);_e-- >0;)xe[be++]=le[me>>>3],me+=8;continue}for(;;){!ye&&Ce<be+32767&&(xe=Ze(xe,be+32767),Ce=xe.length);var Ae=Xe(le,me,Re),Fe=ge>>>1==1?it[Ae]:Be[Ae];if(me+=Fe&15,Fe>>>=4,!(Fe>>>8&255))xe[be++]=Fe;else{if(Fe==256)break;Fe-=257;var Oe=Fe<8?0:Fe-4>>2;Oe>5&&(Oe=0);var Ke=be+ve[Fe];Oe>0&&(Ke+=Xe(le,me,Oe),me+=Oe),Ae=Xe(le,me,Ee),Fe=ge>>>1==1?st[Ae]:Qe[Ae],me+=Fe&15,Fe>>>=4;var Ne=Fe<4?0:Fe-2>>1,Ve=Te[Fe];for(Ne>0&&(Ve+=Xe(le,me,Ne),me+=Ne),!ye&&Ce<Ke&&(xe=Ze(xe,Ke+100),Ce=xe.length);be<Ke;)xe[be]=xe[be-Ve],++be}}}return ye?[xe,me+7>>>3]:[xe.slice(0,be),me+7>>>3]}function yt(le,ye){var me=le.slice(le.l||0),ge=vt(me,ye);return le.l+=ge[1],ge[0]}function Je(le,ye){if(le)typeof console<"u"&&console.error(ye);else throw new Error(ye)}function De(le,ye){var me=le;prep_blob(me,0);var ge=[],xe=[],be={FileIndex:ge,FullPaths:xe};K(be,{root:ye.root});for(var Ce=me.length-4;(me[Ce]!=80||me[Ce+1]!=75||me[Ce+2]!=5||me[Ce+3]!=6)&&Ce>=0;)--Ce;me.l=Ce+4,me.l+=4;var Re=me.read_shift(2);me.l+=6;var Ee=me.read_shift(4);for(me.l=Ee,Ce=0;Ce<Re;++Ce){me.l+=20;var _e=me.read_shift(4),Ae=me.read_shift(4),Fe=me.read_shift(2),Oe=me.read_shift(2),Ke=me.read_shift(2);me.l+=8;var Ne=me.read_shift(4),Ve=P(me.slice(me.l+Fe,me.l+Fe+Oe));me.l+=Fe+Oe+Ke;var nt=me.l;me.l=Ne+4,$e(me,_e,Ae,be,Ve),me.l=nt}return be}function $e(le,ye,me,ge,xe){le.l+=2;var be=le.read_shift(2),Ce=le.read_shift(2),Re=_(le);if(be&8257)throw new Error("Unsupported ZIP encryption");for(var Ee=le.read_shift(4),_e=le.read_shift(4),Ae=le.read_shift(4),Fe=le.read_shift(2),Oe=le.read_shift(2),Ke="",Ne=0;Ne<Fe;++Ne)Ke+=String.fromCharCode(le[le.l++]);if(Oe){var Ve=P(le.slice(le.l,le.l+Oe));(Ve[21589]||{}).mt&&(Re=Ve[21589].mt),((xe||{})[21589]||{}).mt&&(Re=xe[21589].mt)}le.l+=Oe;var nt=le.slice(le.l,le.l+_e);switch(Ce){case 8:nt=ue(le,Ae);break;case 0:break;default:throw new Error("Unsupported ZIP Compression method "+Ce)}var lt=!1;be&8&&(Ee=le.read_shift(4),Ee==134695760&&(Ee=le.read_shift(4),lt=!0),_e=le.read_shift(4),Ae=le.read_shift(4)),_e!=ye&&Je(lt,"Bad compressed size: "+ye+" != "+_e),Ae!=me&&Je(lt,"Bad uncompressed size: "+me+" != "+Ae),Pt(ge,Ke,nt,{unsafe:!0,mt:Re})}function ht(le,ye){var me=ye||{},ge=[],xe=[],be=new_buf(1),Ce=me.compression?8:0,Re=0,Ee=0,_e=0,Ae=0,Fe=0,Oe=le.FullPaths[0],Ke=Oe,Ne=le.FileIndex[0],Ve=[],nt=0;for(Ee=1;Ee<le.FullPaths.length;++Ee)if(Ke=le.FullPaths[Ee].slice(Oe.length),Ne=le.FileIndex[Ee],!(!Ne.size||!Ne.content||Ke=="�Sh33tJ5")){var lt=Ae,ct=new_buf(Ke.length);for(_e=0;_e<Ke.length;++_e)ct.write_shift(1,Ke.charCodeAt(_e)&127);ct=ct.slice(0,ct.l),Ve[Fe]=CRC32.buf(Ne.content,0);var dt=Ne.content;Ce==8&&(dt=ce(dt)),be=new_buf(30),be.write_shift(4,67324752),be.write_shift(2,20),be.write_shift(2,Re),be.write_shift(2,Ce),Ne.mt?C(be,Ne.mt):be.write_shift(4,0),be.write_shift(-4,Ve[Fe]),be.write_shift(4,dt.length),be.write_shift(4,Ne.content.length),be.write_shift(2,ct.length),be.write_shift(2,0),Ae+=be.length,ge.push(be),Ae+=ct.length,ge.push(ct),Ae+=dt.length,ge.push(dt),be=new_buf(46),be.write_shift(4,33639248),be.write_shift(2,0),be.write_shift(2,20),be.write_shift(2,Re),be.write_shift(2,Ce),be.write_shift(4,0),be.write_shift(-4,Ve[Fe]),be.write_shift(4,dt.length),be.write_shift(4,Ne.content.length),be.write_shift(2,ct.length),be.write_shift(2,0),be.write_shift(2,0),be.write_shift(2,0),be.write_shift(2,0),be.write_shift(4,0),be.write_shift(4,lt),nt+=be.l,xe.push(be),nt+=ct.length,xe.push(ct),++Fe}return be=new_buf(22),be.write_shift(4,101010256),be.write_shift(2,0),be.write_shift(2,0),be.write_shift(2,Fe),be.write_shift(2,Fe),be.write_shift(4,nt),be.write_shift(4,Ae),be.write_shift(2,0),bconcat([bconcat(ge),bconcat(xe),be])}var ut={htm:"text/html",xml:"text/xml",gif:"image/gif",jpg:"image/jpeg",png:"image/png",mso:"application/x-mso",thmx:"application/vnd.ms-officetheme",sh33tj5:"application/octet-stream"};function ft(le,ye){if(le.ctype)return le.ctype;var me=le.name||"",ge=me.match(/\.([^\.]+)$/);return ge&&ut[ge[1]]||ye&&(ge=(me=ye).match(/[\.\\]([^\.\\])+$/),ge&&ut[ge[1]])?ut[ge[1]]:"application/octet-stream"}function Ct(le){for(var ye=Base64_encode(le),me=[],ge=0;ge<ye.length;ge+=76)me.push(ye.slice(ge,ge+76));return me.join(`\r 208`)+`\r 209`}function Et(le){var ye=le.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g,function(_e){var Ae=_e.charCodeAt(0).toString(16).toUpperCase();return"="+(Ae.length==1?"0"+Ae:Ae)});ye=ye.replace(/ $/mg,"=20").replace(/\t$/mg,"=09"),ye.charAt(0)==` 210`&&(ye="=0D"+ye.slice(1)),ye=ye.replace(/\r(?!\n)/mg,"=0D").replace(/\n\n/mg,` 211=0A`).replace(/([^\r\n])\n/mg,"$1=0A");for(var me=[],ge=ye.split(`\r 212`),xe=0;xe<ge.length;++xe){var be=ge[xe];if(be.length==0){me.push("");continue}for(var Ce=0;Ce<be.length;){var Re=76,Ee=be.slice(Ce,Ce+Re);Ee.charAt(Re-1)=="="?Re--:Ee.charAt(Re-2)=="="?Re-=2:Ee.charAt(Re-3)=="="&&(Re-=3),Ee=be.slice(Ce,Ce+Re),Ce+=Re,Ce<be.length&&(Ee+="="),me.push(Ee)}}return me.join(`\r 213`)}function _t(le){for(var ye=[],me=0;me<le.length;++me){for(var ge=le[me];me<=le.length&&ge.charAt(ge.length-1)=="=";)ge=ge.slice(0,ge.length-1)+le[++me];ye.push(ge)}for(var xe=0;xe<ye.length;++xe)ye[xe]=ye[xe].replace(/[=][0-9A-Fa-f]{2}/g,function(be){return String.fromCharCode(parseInt(be.slice(1),16))});return s2a(ye.join(`\r 214`))}function At(le,ye,me){for(var ge="",xe="",be="",Ce,Re=0;Re<10;++Re){var Ee=ye[Re];if(!Ee||Ee.match(/^\s*$/))break;var _e=Ee.match(/^(.*?):\s*([^\s].*)$/);if(_e)switch(_e[1].toLowerCase()){case"content-location":ge=_e[2].trim();break;case"content-type":be=_e[2].trim();break;case"content-transfer-encoding":xe=_e[2].trim();break}}switch(++Re,xe.toLowerCase()){case"base64":Ce=s2a(Base64_decode(ye.slice(Re).join("")));break;case"quoted-printable":Ce=_t(ye.slice(Re));break;default:throw new Error("Unsupported Content-Transfer-Encoding "+xe)}var Ae=Pt(le,ge.slice(me.length),Ce,{unsafe:!0});be&&(Ae.ctype=be)}function It(le,ye){if(X(le.slice(0,13)).toLowerCase()!="mime-version:")throw new Error("Unsupported MAD header");var me=ye&&ye.root||"",ge=(has_buf&&Buffer.isBuffer(le)?le.toString("binary"):X(le)).split(`\r 215`),xe=0,be="";for(xe=0;xe<ge.length;++xe)if(be=ge[xe],!!/^Content-Location:/i.test(be)&&(be=be.slice(be.indexOf("file")),me||(me=be.slice(0,be.lastIndexOf("/")+1)),be.slice(0,me.length)!=me))for(;me.length>0&&(me=me.slice(0,me.length-1),me=me.slice(0,me.lastIndexOf("/")+1),be.slice(0,me.length)!=me););var Ce=(ge[1]||"").match(/boundary="(.*?)"/);if(!Ce)throw new Error("MAD cannot find boundary");var Re="--"+(Ce[1]||""),Ee=[],_e=[],Ae={FileIndex:Ee,FullPaths:_e};K(Ae);var Fe,Oe=0;for(xe=0;xe<ge.length;++xe){var Ke=ge[xe];Ke!==Re&&Ke!==Re+"--"||(Oe++&&At(Ae,ge.slice(Fe,xe),me),Fe=xe)}return Ae}function Lt(le,ye){var me=ye||{},ge=me.boundary||"SheetJS";ge="------="+ge;for(var xe=["MIME-Version: 1.0",'Content-Type: multipart/related; boundary="'+ge.slice(2)+'"',"","",""],be=le.FullPaths[0],Ce=be,Re=le.FileIndex[0],Ee=1;Ee<le.FullPaths.length;++Ee)if(Ce=le.FullPaths[Ee].slice(be.length),Re=le.FileIndex[Ee],!(!Re.size||!Re.content||Ce=="�Sh33tJ5")){Ce=Ce.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g,function(nt){return"_x"+nt.charCodeAt(0).toString(16)+"_"}).replace(/[\u0080-\uFFFF]/g,function(nt){return"_u"+nt.charCodeAt(0).toString(16)+"_"});for(var _e=Re.content,Ae=has_buf&&Buffer.isBuffer(_e)?_e.toString("binary"):X(_e),Fe=0,Oe=Math.min(1024,Ae.length),Ke=0,Ne=0;Ne<=Oe;++Ne)(Ke=Ae.charCodeAt(Ne))>=32&&Ke<128&&++Fe;var Ve=Fe>=Oe*4/5;xe.push(ge),xe.push("Content-Location: "+(me.root||"file:///C:/SheetJS/")+Ce),xe.push("Content-Transfer-Encoding: "+(Ve?"quoted-printable":"base64")),xe.push("Content-Type: "+ft(Re,Ce)),xe.push(""),xe.push(Ve?Et(Ae):Ct(Ae))}return xe.push(ge+`--\r 216`),xe.join(`\r 217`)}function jt(le){var ye={};return K(ye,le),ye}function Pt(le,ye,me,ge){var xe=ge&&ge.unsafe;xe||K(le);var be=!xe&&CFB.find(le,ye);if(!be){var Ce=le.FullPaths[0];ye.slice(0,Ce.length)==Ce?Ce=ye:(Ce.slice(-1)!="/"&&(Ce+="/"),Ce=(Ce+ye).replace("//","/")),be={name:E(ye),type:2},le.FileIndex.push(be),le.FullPaths.push(Ce),xe||CFB.utils.cfb_gc(le)}return be.content=me,be.size=me?me.length:0,ge&&(ge.CLSID&&(be.clsid=ge.CLSID),ge.mt&&(be.mt=ge.mt),ge.ct&&(be.ct=ge.ct)),be}function Mt(le,ye){K(le);var me=CFB.find(le,ye);if(me){for(var ge=0;ge<le.FileIndex.length;++ge)if(le.FileIndex[ge]==me)return le.FileIndex.splice(ge,1),le.FullPaths.splice(ge,1),!0}return!1}function Ft(le,ye,me){K(le);var ge=CFB.find(le,ye);if(ge){for(var xe=0;xe<le.FileIndex.length;++xe)if(le.FileIndex[xe]==ge)return le.FileIndex[xe].name=E(me),le.FullPaths[xe]=me,!0}return!1}function Dt(le){ee(le,!0)}return u.find=se,u.read=W,u.parse=L,u.write=de,u.writeFile=Z,u.utils={cfb_new:jt,cfb_add:Pt,cfb_del:Mt,cfb_mov:Ft,cfb_gc:Dt,ReadShift,CheckField,prep_blob,bconcat,use_zlib:ne,_deflateRaw:je,_inflateRaw:yt,consts:te},u}();let _fs;function set_fs(o){_fs=o}function blobify(o){return typeof o=="string"?s2ab(o):Array.isArray(o)?a2u(o):o}function write_dl(o,u,T){if(typeof _fs<"u"&&_fs.writeFileSync)return T?_fs.writeFileSync(o,u,T):_fs.writeFileSync(o,u);if(typeof Deno<"u"){if(T&&typeof u=="string")switch(T){case"utf8":u=new TextEncoder(T).encode(u);break;case"binary":u=s2ab(u);break;default:throw new Error("Unsupported encoding "+T)}return Deno.writeFileSync(o,u)}var S=T=="utf8"?utf8write(u):u;if(typeof IE_SaveFile<"u")return IE_SaveFile(S,o);if(typeof Blob<"u"){var E=new Blob([blobify(S)],{type:"application/octet-stream"});if(typeof navigator<"u"&&navigator.msSaveBlob)return navigator.msSaveBlob(E,o);if(typeof saveAs<"u")return saveAs(E,o);if(typeof URL<"u"&&typeof document<"u"&&document.createElement&&URL.createObjectURL){var C=URL.createObjectURL(E);if(typeof chrome=="object"&&typeof(chrome.downloads||{}).download=="function")return URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(C)},6e4),chrome.downloads.download({url:C,filename:o,saveAs:!0});var _=document.createElement("a");if(_.download!=null)return _.download=o,_.href=C,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(C)},6e4),C}}if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var P=File(o);return P.open("w"),P.encoding="binary",Array.isArray(u)&&(u=a2s(u)),P.write(u),P.close(),u}catch(R){if(!R.message||!R.message.match(/onstruct/))throw R}throw new Error("cannot save file "+o)}function read_binary(o){if(typeof _fs<"u")return _fs.readFileSync(o);if(typeof Deno<"u")return Deno.readFileSync(o);if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var u=File(o);u.open("r"),u.encoding="binary";var T=u.read();return u.close(),T}catch(S){if(!S.message||!S.message.match(/onstruct/))throw S}throw new Error("Cannot access file "+o)}function keys(o){for(var u=Object.keys(o),T=[],S=0;S<u.length;++S)Object.prototype.hasOwnProperty.call(o,u[S])&&T.push(u[S]);return T}function evert_key(o,u){for(var T=[],S=keys(o),E=0;E!==S.length;++E)T[o[S[E]][u]]==null&&(T[o[S[E]][u]]=S[E]);return T}function evert(o){for(var u=[],T=keys(o),S=0;S!==T.length;++S)u[o[T[S]]]=T[S];return u}function evert_num(o){for(var u=[],T=keys(o),S=0;S!==T.length;++S)u[o[T[S]]]=parseInt(T[S],10);return u}function evert_arr(o){for(var u=[],T=keys(o),S=0;S!==T.length;++S)u[o[T[S]]]==null&&(u[o[T[S]]]=[]),u[o[T[S]]].push(T[S]);return u}var basedate=new Date(1899,11,30,0,0,0);function datenum(o,u){var T=o.getTime(),S=basedate.getTime()+(o.getTimezoneOffset()-basedate.getTimezoneOffset())*6e4;return(T-S)/(24*60*60*1e3)}var refdate=new Date,dnthresh=basedate.getTime()+(refdate.getTimezoneOffset()-basedate.getTimezoneOffset())*6e4,refoffset=refdate.getTimezoneOffset();function numdate(o){var u=new Date;return u.setTime(o*24*60*60*1e3+dnthresh),u.getTimezoneOffset()!==refoffset&&u.setTime(u.getTime()+(u.getTimezoneOffset()-refoffset)*6e4),u}function parse_isodur(o){var u=0,T=0,S=!1,E=o.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/);if(!E)throw new Error("|"+o+"| is not an ISO8601 Duration");for(var C=1;C!=E.length;++C)if(E[C]){switch(T=1,C>3&&(S=!0),E[C].slice(E[C].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+E[C].slice(E[C].length-1));case"D":T*=24;case"H":T*=60;case"M":if(S)T*=60;else throw new Error("Unsupported ISO Duration Field: M")}u+=T*parseInt(E[C],10)}return u}var good_pd_date_1=new Date("2017-02-19T19:06:09.000Z"),good_pd_date=isNaN(good_pd_date_1.getFullYear())?new Date("2/19/17"):good_pd_date_1,good_pd=good_pd_date.getFullYear()==2017;function parseDate(o,u){var T=new Date(o);if(good_pd)return u>0?T.setTime(T.getTime()+T.getTimezoneOffset()*60*1e3):u<0&&T.setTime(T.getTime()-T.getTimezoneOffset()*60*1e3),T;if(o instanceof Date)return o;if(good_pd_date.getFullYear()==1917&&!isNaN(T.getFullYear())){var S=T.getFullYear();return o.indexOf(""+S)>-1||T.setFullYear(T.getFullYear()+100),T}var E=o.match(/\d+/g)||["2017","2","19","0","0","0"],C=new Date(+E[0],+E[1]-1,+E[2],+E[3]||0,+E[4]||0,+E[5]||0);return o.indexOf("Z")>-1&&(C=new Date(C.getTime()-C.getTimezoneOffset()*60*1e3)),C}function cc2str(o,u){if(has_buf&&Buffer.isBuffer(o)){if(u){if(o[0]==255&&o[1]==254)return utf8write(o.slice(2).toString("utf16le"));if(o[1]==254&&o[2]==255)return utf8write(utf16beread(o.slice(2).toString("binary")))}return o.toString("binary")}if(typeof TextDecoder<"u")try{if(u){if(o[0]==255&&o[1]==254)return utf8write(new TextDecoder("utf-16le").decode(o.slice(2)));if(o[0]==254&&o[1]==255)return utf8write(new TextDecoder("utf-16be").decode(o.slice(2)))}var T={"â¬":"Â","â":"Â",Æ:"Â","â":"Â","â¦":" ","â ":"Â","â¡":"Â","Ë":"Â","â°":"Â",Å :"Â","â¹":"Â",Å:"Â",Ž:"Â","â":"Â","â":"Â","â":"Â","â":"Â","â¢":"Â","â":"Â","â":"Â","Ë":"Â","â¢":"Â",Å¡:"Â","âº":"Â",Å:"Â",ž:"Â",Ÿ:"Â"};return Array.isArray(o)&&(o=new Uint8Array(o)),new TextDecoder("latin1").decode(o).replace(/[â¬âÆââ¦â â¡Ëâ°Å â¹ÅŽâââââ¢ââËâ¢Å¡âºÅžŸ]/g,function(C){return T[C]||C})}catch{}for(var S=[],E=0;E!=o.length;++E)S.push(String.fromCharCode(o[E]));return S.join("")}
217function dup(o){if(typeof JSON<"u"&&!Array.isArray(o))return JSON.parse(JSON.stringify(o));if(typeof o!="object"||o==null)return o;if(o instanceof Date)return new Date(o.getTime());var u={};for(var T in o)Object.prototype.hasOwnProperty.call(o,T)&&(u[T]=dup(o[T]));return u}function fill(o,u){for(var T="";T.length<u;)T+=o;return T}function fuzzynum(o){var u=Number(o);if(!isNaN(u))return isFinite(u)?u:NaN;if(!/\d/.test(o))return u;var T=1,S=o.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g,function(){return T*=100,""});return!isNaN(u=Number(S))||(S=S.replace(/[(](.*)[)]/,function(E,C){return T=-T,C}),!isNaN(u=Number(S)))?u/T:u}var lower_months=["january","february","march","april","may","june","july","august","september","october","november","december"];function fuzzydate(o){var u=new Date(o),T=new Date(NaN),S=u.getYear(),E=u.getMonth(),C=u.getDate();if(isNaN(C))return T;var _=o.toLowerCase();if(_.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)){if(_=_.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""),_.length>3&&lower_months.indexOf(_)==-1)return T}else if(_.match(/[a-z]/))return T;return S<0||S>8099?T:(E>0||C>1)&&S!=101?u:o.match(/[^-0-9:,\/\\]/)?T:u}var split_regex=function(){var o="abacaba".split(/(:?b)/i).length==5;return function(T,S,E){if(o||typeof S=="string")return T.split(S);for(var C=T.split(S),_=[C[0]],P=1;P<C.length;++P)_.push(E),_.push(C[P]);return _}}();function getdatastr(o){return o?o.content&&o.type?cc2str(o.content,!0):o.data?debom(o.data):o.asNodeBuffer&&has_buf?debom(o.asNodeBuffer().toString("binary")):o.asBinary?debom(o.asBinary()):o._data&&o._data.getContent?debom(cc2str(Array.prototype.slice.call(o._data.getContent(),0))):null:null}function getdatabin(o){if(!o)return null;if(o.data)return char_codes(o.data);if(o.asNodeBuffer&&has_buf)return o.asNodeBuffer();if(o._data&&o._data.getContent){var u=o._data.getContent();return typeof u=="string"?char_codes(u):Array.prototype.slice.call(u)}return o.content&&o.type?o.content:null}function getdata(o){return o&&o.name.slice(-4)===".bin"?getdatabin(o):getdatastr(o)}function safegetzipfile(o,u){for(var T=o.FullPaths||keys(o.files),S=u.toLowerCase().replace(/[\/]/g,"\\"),E=S.replace(/\\/g,"/"),C=0;C<T.length;++C){var _=T[C].replace(/^Root Entry[\/]/,"").toLowerCase();if(S==_||E==_)return o.files?o.files[T[C]]:o.FileIndex[C]}return null}function getzipfile(o,u){var T=safegetzipfile(o,u);if(T==null)throw new Error("Cannot find file "+u+" in zip");return T}function getzipdata(o,u,T){if(!T)return getdata(getzipfile(o,u));if(!u)return null;try{return getzipdata(o,u)}catch{return null}}function getzipstr(o,u,T){if(!T)return getdatastr(getzipfile(o,u));if(!u)return null;try{return getzipstr(o,u)}catch{return null}}function getzipbin(o,u,T){return getdatabin(getzipfile(o,u))}function zipentries(o){for(var u=o.FullPaths||keys(o.files),T=[],S=0;S<u.length;++S)u[S].slice(-1)!="/"&&T.push(u[S].replace(/^Root Entry[\/]/,""));return T.sort()}function zip_add_file(o,u,T){if(o.FullPaths){if(typeof T=="string"){var S;return has_buf?S=Buffer_from(T):S=utf8decode(T),CFB.utils.cfb_add(o,u,S)}CFB.utils.cfb_add(o,u,T)}else o.file(u,T)}function zip_new(){return CFB.utils.cfb_new()}function zip_read(o,u){switch(u.type){case"base64":return CFB.read(o,{type:"base64"});case"binary":return CFB.read(o,{type:"binary"});case"buffer":case"array":return CFB.read(o,{type:"buffer"})}throw new Error("Unrecognized type "+u.type)}function resolve_path(o,u){if(o.charAt(0)=="/")return o.slice(1);var T=u.split("/");u.slice(-1)!="/"&&T.pop();for(var S=o.split("/");S.length!==0;){var E=S.shift();E===".."?T.pop():E!=="."&&T.push(E)}return T.join("/")}var XML_HEADER=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r 218`,attregexg=/([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g,tagregex1=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg,tagregex2=/<[^>]*>/g,tagregex=XML_HEADER.match(tagregex1)?tagregex1:tagregex2,nsregex=/<\w*:/,nsregex2=/<(\/?)\w+:/;function parsexmltag(o,u,T){for(var S={},E=0,C=0;
218E!==o.length&&!((C=o.charCodeAt(E))===32||C===10||C===13);++E);if(u||(S[0]=o.slice(0,E)),E===o.length)return S;var _=o.match(attregexg),P=0,R="",I=0,L="",j="",M=1;if(_)for(I=0;I!=_.length;++I){for(j=_[I],C=0;C!=j.length&&j.charCodeAt(C)!==61;++C);for(L=j.slice(0,C).trim();j.charCodeAt(C+1)==32;)++C;for(M=(E=j.charCodeAt(C+1))==34||E==39?1:0,R=j.slice(C+1+M,j.length-M),P=0;P!=L.length&&L.charCodeAt(P)!==58;++P);if(P===L.length)L.indexOf("_")>0&&(L=L.slice(0,L.indexOf("_"))),S[L]=R,S[L.toLowerCase()]=R;else{var D=(P===5&&L.slice(0,5)==="xmlns"?"xmlns":"")+L.slice(P+1);if(S[D]&&L.slice(P-3,P)=="ext")continue;S[D]=R,S[D.toLowerCase()]=R}}return S}function strip_ns(o){return o.replace(nsregex2,"<$1")}var encodings={""":'"',"'":"'",">":">","<":"<","&":"&"},rencoding=evert(encodings),unescapexml=function(){var o=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig,u=/_x([\da-fA-F]{4})_/ig;return function T(S){var E=S+"",C=E.indexOf("<![CDATA[");if(C==-1)return E.replace(o,function(P,R){return encodings[P]||String.fromCharCode(parseInt(R,P.indexOf("x")>-1?16:10))||P}).replace(u,function(P,R){return String.fromCharCode(parseInt(R,16))});var _=E.indexOf("]]>");return T(E.slice(0,C))+E.slice(C+9,_)+T(E.slice(_+3))}}(),decregex=/[&<>'"]/g,charegex=/[\u0000-\u0008\u000b-\u001f]/g;function escapexml(o){var u=o+"";return u.replace(decregex,function(T){return rencoding[T]}).replace(charegex,function(T){return"_x"+("000"+T.charCodeAt(0).toString(16)).slice(-4)+"_"})}function escapexmltag(o){return escapexml(o).replace(/ /g,"_x0020_")}var htmlcharegex=/[\u0000-\u001f]/g;function escapehtml(o){var u=o+"";return u.replace(decregex,function(T){return rencoding[T]}).replace(/\n/g,"<br/>").replace(htmlcharegex,function(T){return"&#x"+("000"+T.charCodeAt(0).toString(16)).slice(-4)+";"})}function escapexlml(o){var u=o+"";return u.replace(decregex,function(T){return rencoding[T]}).replace(htmlcharegex,function(T){return"&#x"+T.charCodeAt(0).toString(16).toUpperCase()+";"})}var xlml_fixstr=function(){var o=/&#(\d+);/g;function u(T,S){return String.fromCharCode(parseInt(S,10))}return function(S){return S.replace(o,u)}}();function xlml_unfixstr(o){return o.replace(/(\r\n|[\r\n])/g," ")}function parsexmlbool(o){switch(o){case 1:case!0:case"1":case"true":case"TRUE":return!0;default:return!1}}function utf8reada(o){for(var u="",T=0,S=0,E=0,C=0,_=0,P=0;T<o.length;){if(S=o.charCodeAt(T++),S<128){u+=String.fromCharCode(S);continue}if(E=o.charCodeAt(T++),S>191&&S<224){_=(S&31)<<6,_|=E&63,u+=String.fromCharCode(_);continue}if(C=o.charCodeAt(T++),S<240){u+=String.fromCharCode((S&15)<<12|(E&63)<<6|C&63);continue}
218_=o.charCodeAt(T++),P=((S&7)<<18|(E&63)<<12|(C&63)<<6|_&63)-65536,u+=String.fromCharCode(55296+(P>>>10&1023)),u+=String.fromCharCode(56320+(P&1023))}return u}function utf8readb(o){var u=new_raw_buf(2*o.length),T,S,E=1,C=0,_=0,P;for(S=0;S<o.length;S+=E)E=1,(P=o.charCodeAt(S))<128?T=P:P<224?(T=(P&31)*64+(o.charCodeAt(S+1)&63),E=2):P<240?(T=(P&15)*4096+(o.charCodeAt(S+1)&63)*64+(o.charCodeAt(S+2)&63),E=3):(E=4,T=(P&7)*262144+(o.charCodeAt(S+1)&63)*4096+(o.charCodeAt(S+2)&63)*64+(o.charCodeAt(S+3)&63),T-=65536,_=55296+(T>>>10&1023),T=56320+(T&1023)),_!==0&&(u[C++]=_&255,u[C++]=_>>>8,_=0),u[C++]=T%256,u[C++]=T>>>8;return u.slice(0,C).toString("ucs2")}function utf8readc(o){return Buffer_from(o,"binary").toString("utf8")}var utf8corpus="foo bar bazâÂÂð£",utf8read=has_buf&&(utf8readc(utf8corpus)==utf8reada(utf8corpus)&&utf8readc||utf8readb(utf8corpus)==utf8reada(utf8corpus)&&utf8readb)||utf8reada,utf8write=has_buf?function(o){return Buffer_from(o,"utf8").toString("binary")}:function(o){for(var u=[],T=0,S=0,E=0;T<o.length;)switch(S=o.charCodeAt(T++),!0){case S<128:u.push(String.fromCharCode(S));break;case S<2048:u.push(String.fromCharCode(192+(S>>6))),u.push(String.fromCharCode(128+(S&63)));break;case(S>=55296&&S<57344):S-=55296,E=o.charCodeAt(T++)-56320+(S<<10),u.push(String.fromCharCode(240+(E>>18&7))),u.push(String.fromCharCode(144+(E>>12&63))),u.push(String.fromCharCode(128+(E>>6&63))),u.push(String.fromCharCode(128+(E&63)));break;default:u.push(String.fromCharCode(224+(S>>12))),u.push(String.fromCharCode(128+(S>>6&63))),u.push(String.fromCharCode(128+(S&63)))}return u.join("")},matchtag=function(){var o={};return function(T,S){var E=T+"|"+(S||"");return o[E]?o[E]:o[E]=new RegExp("<(?:\\w+:)?"+T+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)</(?:\\w+:)?'+T+">",S||"")}}(),htmldecode=function(){var o=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(u){return[new RegExp("&"+u[0]+";","ig"),u[1]]});return function(T){for(var S=T.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+</g,"<").replace(/[\t\n\r ]+/g," ").replace(/<\s*[bB][rR]\s*\/?>/g,` 219`).replace(/<[^>]*>/g,""),E=0;E<o.length;++E)S=S.replace(o[E][0],o[E][1]);return S}}(),vtregex=function(){var o={};return function(T){return o[T]!==void 0?o[T]:o[T]=new RegExp("<(?:vt:)?"+T+">([\\s\\S]*?)</(?:vt:)?"+T+">","g")}}(),vtvregex=/<\/?(?:vt:)?variant>/g,vtmregex=/<(?:vt:)([^>]*)>([\s\S]*)</;function parseVector(o,u){var T=parsexmltag(o),S=o.match(vtregex(T.baseType))||[],E=[];if(S.length!=T.size){if(u.WTF)throw new Error("unexpected vector length "+S.length+" != "+T.size);return E}return S.forEach(function(C){var _=C.replace(vtvregex,"").match(vtmregex);_&&E.push({v:utf8read(_[2]),t:_[1]})}),E}var wtregex=/(^\s|\s$|\n)/;function writetag(o,u){return"<"+o+(u.match(wtregex)?' xml:space="preserve"':"")+">"+u+"</"+o+">"}function wxt_helper(o){return keys(o).map(function(u){return" "+u+'="'+o[u]+'"'}).join("")}function writextag(o,u,T){return"<"+o+(T!=null?wxt_helper(T):"")+(u!=null?(u.match(wtregex)?' xml:space="preserve"':"")+">"+u+"</"+o:"/")+">"}function write_w3cdtf(o,u){try{return o.toISOString().replace(/\.\d*/,"")}catch(T){if(u)throw T}return""}function write_vt(o,u){switch(typeof o){case"string":var T=writextag("vt:lpwstr",escapexml(o));return T=T.replace(/"/g,"_x0022_"),T;case"number":return writextag((o|0)==o?"vt:i4":"vt:r8",escapexml(String(o)));case"boolean":return writextag("vt:bool",o?"true":"false")}if(o instanceof Date)return writextag("vt:filetime",write_w3cdtf(o));throw new Error("Unable to serialize "+o)}function xlml_normalize(o){if(has_buf&&Buffer.isBuffer(o))return o.toString("utf8");if(typeof o=="string")return o;if(typeof Uint8Array<"u"&&o instanceof Uint8Array)return utf8read(a2s(ab2a(o)));throw new Error("Bad input format: expected Buffer or string")}var xlmlregex=/<(\/?)([^\s?><!\/:]*:|)([^\s?<>:\/]+)(?:[\s?:\/][^>]*)?>/mg,XMLNS={CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",CT:"http://schemas.openxmlformats.org/package/2006/content-types",RELS:"http://schemas.openxmlformats.org/package/2006/relationships",TCMNT
219:"http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},XMLNS_main=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"],XLMLNS={o:"urn:schemas-microsoft-com:office:office",x:"urn:schemas-microsoft-com:office:excel",ss:"urn:schemas-microsoft-com:office:spreadsheet",dt:"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882",mv:"http://macVmlSchemaUri",v:"urn:schemas-microsoft-com:vml",html:"http://www.w3.org/TR/REC-html40"};function read_double_le(o,u){for(var T=1-2*(o[u+7]>>>7),S=((o[u+7]&127)<<4)+(o[u+6]>>>4&15),E=o[u+6]&15,C=5;C>=0;--C)E=E*256+o[u+C];return S==2047?E==0?T*(1/0):NaN:(S==0?S=-1022:(S-=1023,E+=Math.pow(2,52)),T*Math.pow(2,S-52)*E)}function write_double_le(o,u,T){var S=(u<0||1/u==-1/0?1:0)<<7,E=0,C=0,_=S?-u:u;isFinite(_)?_==0?E=C=0:(E=Math.floor(Math.log(_)/Math.LN2),C=_*Math.pow(2,52-E),E<=-1023&&(!isFinite(C)||C<Math.pow(2,52))?E=-1022:(C-=Math.pow(2,52),E+=1023)):(E=2047,C=isNaN(u)?26985:0);for(var P=0;P<=5;++P,C/=256)o[T+P]=C&255;o[T+6]=(E&15)<<4|C&15,o[T+7]=E>>4|S}var ___toBuffer=function(o){for(var u=[],T=10240,S=0;S<o[0].length;++S)if(o[0][S])for(var E=0,C=o[0][S].length;E<C;E+=T)u.push.apply(u,o[0][S].slice(E,E+T));return u},__toBuffer=has_buf?function(o){return o[0].length>0&&Buffer.isBuffer(o[0][0])?Buffer.concat(o[0].map(function(u){return Buffer.isBuffer(u)?u:Buffer_from(u)})):___toBuffer(o)}:___toBuffer,___utf16le=function(o,u,T){for(var S=[],E=u;E<T;E+=2)S.push(String.fromCharCode(__readUInt16LE(o,E)));return S.join("").replace(chr0,"")},__utf16le=has_buf?function(o,u,T){return Buffer.isBuffer(o)?o.toString("utf16le",u,T).replace(chr0,""):___utf16le(o,u,T)}:___utf16le,___hexlify=function(o,u,T){for(var S=[],E=u;E<u+T;++E)S.push(("0"+o[E].toString(16)).slice(-2));return S.join("")},__hexlify=has_buf?function(o,u,T){return Buffer.isBuffer(o)?o.toString("hex",u,u+T):___hexlify(o,u,T)}:___hexlify,___utf8=function(o,u,T){for(var S=[],E=u;E<T;E++)S.push(String.fromCharCode(__readUInt8(o,E)));return S.join("")},__utf8=has_buf?function(u,T,S){return Buffer.isBuffer(u)?u.toString("utf8",T,S):___utf8(u,T,S)}:___utf8,___lpstr=function(o,u){var T=__readUInt32LE(o,u);return T>0?__utf8(o,u+4,u+4+T-1):""},__lpstr=___lpstr,___cpstr=function(o,u){var T=__readUInt32LE(o,u);return T>0?__utf8(o,u+4,u+4+T-1):""},__cpstr=___cpstr,___lpwstr=function(o,u){var T=2*__readUInt32LE(o,u);return T>0?__utf8(o,u+4,u+4+T-1):""},__lpwstr=___lpwstr,___lpp4=function(u,T){var S=__readUInt32LE(u,T);return S>0?__utf16le(u,T+4,T+4+S):""},__lpp4=___lpp4,___8lpp4=function(o,u){var T=__readUInt32LE(o,u);return T>0?__utf8(o,u+4,u+4+T):""},__8lpp4=___8lpp4,___double=function(o,u){return read_double_le(o,u)},__double=___double,is_buf=function(u){return Array.isArray(u)||typeof Uint8Array<"u"&&u instanceof Uint8Array};has_buf&&(__lpstr=function(u,T){if(!Buffer.isBuffer(u))return ___lpstr(u,T);var S=u.readUInt32LE(T);return S>0?u.toString("utf8",T+4,T+4+S-1):""},__cpstr=function(u,T){if(!Buffer.isBuffer(u))return ___cpstr(u,T);var S=u.readUInt32LE(T);return S>0?u.toString("utf8",T+4,T+4+S-1):""},__lpwstr=function(u,T){if(!Buffer.isBuffer(u))return ___lpwstr(u,T);var S=2*u.readUInt32LE(T);return u.toString("utf16le",T+4,T+4+S-1)},__lpp4=function(u,T){if(!Buffer.isBuffer(u))return ___lpp4(u,T);var S=u.readUInt32LE(T);return u.toString("utf16le",T+4,T+4+S)},__8lpp4=function(u,T){if(!Buffer.isBuffer(u))return ___8lpp4(u,T);var S=u.readUInt32LE(T);return u.toString("utf8",T+4,T+4+S)},__double=function(u,T){return Buffer.isBuffer(u)?u.readDoubleLE(T):___double(u,T)},is_buf=function(u){return Buffer.isBuffer(u)||Array.isArray(u)||typeof Uint8Array<"u"&&u instanceof Uint8Array});function cpdoit(){__utf16le=function(o,u,T){return $cptable.utils.decode(1200,o.slice(u,T)).replace(chr0,"")},__utf8=function(o,u,T){return $cptable.utils.decode(65001,o.slice(u,T))},__lpstr=function(o,u){var T=__readUInt32LE(o,u);return T>
2190?$cptable.utils.decode(current_ansi,o.slice(u+4,u+4+T-1)):""},__cpstr=function(o,u){var T=__readUInt32LE(o,u);return T>0?$cptable.utils.decode(current_codepage,o.slice(u+4,u+4+T-1)):""},__lpwstr=function(o,u){var T=2*__readUInt32LE(o,u);return T>0?$cptable.utils.decode(1200,o.slice(u+4,u+4+T-1)):""},__lpp4=function(o,u){var T=__readUInt32LE(o,u);return T>0?$cptable.utils.decode(1200,o.slice(u+4,u+4+T)):""},__8lpp4=function(o,u){var T=__readUInt32LE(o,u);return T>0?$cptable.utils.decode(65001,o.slice(u+4,u+4+T)):""}}typeof $cptable<"u"&&cpdoit();var __readUInt8=function(o,u){return o[u]},__readUInt16LE=function(o,u){return o[u+1]*256+o[u]},__readInt16LE=function(o,u){var T=o[u+1]*256+o[u];return T<32768?T:(65535-T+1)*-1},__readUInt32LE=function(o,u){return o[u+3]*(1<<24)+(o[u+2]<<16)+(o[u+1]<<8)+o[u]},__readInt32LE=function(o,u){return o[u+3]<<24|o[u+2]<<16|o[u+1]<<8|o[u]},__readInt32BE=function(o,u){return o[u]<<24|o[u+1]<<16|o[u+2]<<8|o[u+3]};function ReadShift(o,u){var T="",S,E,C=[],_,P,R,I;switch(u){case"dbcs":if(I=this.l,has_buf&&Buffer.isBuffer(this))T=this.slice(this.l,this.l+2*o).toString("utf16le");else for(R=0;R<o;++R)T+=String.fromCharCode(__readUInt16LE(this,I)),I+=2;o*=2;break;case"utf8":T=__utf8(this,this.l,this.l+o);break;case"utf16le":o*=2,T=__utf16le(this,this.l,this.l+o);break;case"wstr":if(typeof $cptable<"u")T=$cptable.utils.decode(current_codepage,this.slice(this.l,this.l+2*o));else return ReadShift.call(this,o,"dbcs");o=2*o;break;case"lpstr-ansi":T=__lpstr(this,this.l),o=4+__readUInt32LE(this,this.l);break;case"lpstr-cp":T=__cpstr(this,this.l),o=4+__readUInt32LE(this,this.l);break;case"lpwstr":T=__lpwstr(this,this.l),o=4+2*__readUInt32LE(this,this.l);break;case"lpp4":o=4+__readUInt32LE(this,this.l),T=__lpp4(this,this.l),o&2&&(o+=2);break;case"8lpp4":o=4+__readUInt32LE(this,this.l),T=__8lpp4(this,this.l),o&3&&(o+=4-(o&3));break;case"cstr":for(o=0,T="";(_=__readUInt8(this,this.l+o++))!==0;)C.push(_getchar(_));T=C.join("");break;case"_wstr":for(o=0,T="";(_=__readUInt16LE(this,this.l+o))!==0;)C.push(_getchar(_)),o+=2;o+=2,T=C.join("");break;case"dbcs-cont":for(T="",I=this.l,R=0;R<o;++R){if(this.lens&&this.lens.indexOf(I)!==-1)return _=__readUInt8(this,I),this.l=I+1,P=ReadShift.call(this,o-R,_?"dbcs-cont":"sbcs-cont"),C.join("")+P;C.push(_getchar(__readUInt16LE(this,I))),I+=2}T=C.join(""),o*=2;break;case"cpstr":if(typeof $cptable<"u"){T=$cptable.utils.decode(current_codepage,this.slice(this.l,this.l+o));break}case"sbcs-cont":for(T="",I=this.l,R=0;R!=o;++R){if(this.lens&&this.lens.indexOf(I)!==-1)return _=__readUInt8(this,I),this.l=I+1,P=ReadShift.call(this,o-R,_?"dbcs-cont":"sbcs-cont"),C.join("")+P;C.push(_getchar(__readUInt8(this,I))),I+=1}T=C.join("");break;default:switch(o){case 1:return S=__readUInt8(this,this.l),this.l++,S;case 2:return S=(u==="i"?__readInt16LE:__readUInt16LE)(this,this.l),this.l+=2,S;case 4:case-4:return u==="i"||!(this[this.l+3]&128)?(S=(o>0?__readInt32LE:__readInt32BE)(this,this.l),this.l+=4,S):(E=__readUInt32LE(this,this.l),this.l+=4,E);case 8:case-8:if(u==="f")return o==8?E=__double(this,this.l):E=__double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0),this.l+=8,E;o=8;case 16:T=__hexlify(this,this.l,o);break}}return this.l+=o,T}var __writeUInt32LE=function(o,u,T){o[T]=u&255,o[T+1]=u>>>8&255,o[T+2]=u>>>16&255,o[T+3]=u>>>24&255},__writeInt32LE=function(o,u,T){o[T]=u&255,o[T+1]=u>>8&255,o[T+2]=u>>16&255,o[T+3]=u>>24&255},__writeUInt16LE=function(o,u,T){o[T]=u&255,o[T+1]=u>>>8&255};function WriteShift(o,u,T){var S=0,E=0;if(T==="dbcs"){for(E=0;E!=u.length;++E)__writeUInt16LE(this,u.charCodeAt(E),this.l+2*E);S=2*u.length}else if(T==="sbcs"){if(typeof $cptable<"u"&¤t_ansi==874)for(E=0;E!=u.length;++E){var C=$cptable.utils.encode(current_ansi,u.charAt(E));this[this.l+E]=C[0]}else for(u=u.replace(/[^\x00-\x7F]/g,"_"),E=0;E!=u.length;++E)this[this.l+E]=u.charCodeAt(E)&255;S=u.length}else if(T==="hex"){for(;E<o;++E)this[this.l++]=parseInt(u.slice(2*E,2*E+2),16)||0;return this}else if(T==="utf16le"){var _=Math.min(this.l+o,this.length);for(E=0;E<Math.min(u.length,o);++E){var P=u.charCodeAt(E);this[this.l++]=P&255,this[this.l++]=P>>8}for(;this.l<_;)this[this.l++]=0;return this}else switch(o){case 1:S=1,this[this.l]=u&255;break;case 2:S=2,this[this.l]=u&255,u>>>=8,this[this.l+1]=u&255;break;case 3:S=3,this[this.l]=u&255,u>>>=8,this[this.l+1]=u&255,u>>>=8,this[this.l+2]=u&255;break;case 4:S=4,__writeUInt32LE(this,u,this.l);break;case 8:if(S=8,T==="f"){write_double_le(this,u,this.l);break}case 16:break;case-4:S=4,__writeInt32LE(this,u,this.l);break}return this.l+=S,this}function CheckField(o,u){var T=__hexlify(this,this.l,o.length>>1);if(T!==o)throw new Error(u+"Expected "+o+" saw "+T);this.l+=o.length>>1}function prep_blob(o,u){o.l=u,o.read_shift=ReadShift,o.chk=CheckField,o.write_shift=WriteShift}
219function parsenoop(o,u){o.l+=u}function new_buf(o){var u=new_raw_buf(o);return prep_blob(u,0),u}function recordhopper(o,u,T){if(o){var S,E,C;prep_blob(o,o.l||0);for(var _=o.length,P=0,R=0;o.l<_;){P=o.read_shift(1),P&128&&(P=(P&127)+((o.read_shift(1)&127)<<7));var I=XLSBRecordEnum[P]||XLSBRecordEnum[65535];for(S=o.read_shift(1),C=S&127,E=1;E<4&&S&128;++E)C+=((S=o.read_shift(1))&127)<<7*E;R=o.l+C;var L=I.f&&I.f(o,C,T);if(o.l=R,u(L,I,P))return}}}function buf_array(){var o=[],u=has_buf?256:2048,T=function(I){var L=new_buf(I);return prep_blob(L,0),L},S=T(u),E=function(){S&&(S.length>S.l&&(S=S.slice(0,S.l),S.l=S.length),S.length>0&&o.push(S),S=null)},C=function(I){return S&&I<S.length-S.l?S:(E(),S=T(Math.max(I+1,u)))},_=function(){return E(),bconcat(o)},P=function(I){E(),S=I,S.l==null&&(S.l=S.length),C(u)};return{next:C,push:P,end:_,_bufs:o}}function write_record(o,u,T,S){var E=+u,C;if(!isNaN(E)){S||(S=XLSBRecordEnum[E].p||(T||[]).length||0),C=1+(E>=128?1:0)+1,S>=128&&++C,S>=16384&&++C,S>=2097152&&++C;var _=o.next(C);E<=127?_.write_shift(1,E):(_.write_shift(1,(E&127)+128),_.write_shift(1,E>>7));for(var P=0;P!=4;++P)if(S>=128)_.write_shift(1,(S&127)+128),S>>=7;else{_.write_shift(1,S);break}S>0&&is_buf(T)&&o.push(T)}}function shift_cell_xls(o,u,T){var S=dup(o);if(u.s?(S.cRel&&(S.c+=u.s.c),S.rRel&&(S.r+=u.s.r)):(S.cRel&&(S.c+=u.c),S.rRel&&(S.r+=u.r)),!T||T.biff<12){for(;S.c>=256;)S.c-=256;for(;S.r>=65536;)S.r-=65536}return S}function shift_range_xls(o,u,T){var S=dup(o);return S.s=shift_cell_xls(S.s,u.s,T),S.e=shift_cell_xls(S.e,u.s,T),S}function encode_cell_xls(o,u){if(o.cRel&&o.c<0)for(o=dup(o);o.c<0;)o.c+=u>8?16384:256;if(o.rRel&&o.r<0)for(o=dup(o);o.r<0;)o.r+=u>8?1048576:u>5?65536:16384;var T=encode_cell(o);return!o.cRel&&o.cRel!=null&&(T=fix_col(T)),!o.rRel&&o.rRel!=null&&(T=fix_row(T)),T}function encode_range_xls(o,u){return o.s.r==0&&!o.s.rRel&&o.e.r==(u.biff>=12?1048575:u.biff>=8?65536:16384)&&!o.e.rRel?(o.s.cRel?"":"$")+encode_col(o.s.c)+":"+(o.e.cRel?"":"$")+encode_col(o.e.c):o.s.c==0&&!o.s.cRel&&o.e.c==(u.biff>=12?16383:255)&&!o.e.cRel?(o.s.rRel?"":"$")+encode_row(o.s.r)+":"+(o.e.rRel?"":"$")+encode_row(o.e.r):encode_cell_xls(o.s,u.biff)+":"+encode_cell_xls(o.e,u.biff)}function decode_row(o){return parseInt(unfix_row(o),10)-1}function encode_row(o){return""+(o+1)}function fix_row(o){return o.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function unfix_row(o){return o.replace(/\$(\d+)$/,"$1")}function decode_col(o){for(var u=unfix_col(o),T=0,S=0;S!==u.length;++S)T=26*T+u.charCodeAt(S)-64;return T-1}function encode_col(o){if(o<0)throw new Error("invalid column "+o);var u="";for(++o;o;o=Math.floor((o-1)/26))u=String.fromCharCode((o-1)%26+65)+u;return u}function fix_col(o){return o.replace(/^([A-Z])/,"$$$1")}function unfix_col(o){return o.replace(/^\$([A-Z])/,"$1")}function split_cell(o){return o.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function decode_cell(o){for(var u=0,T=0,S=0;S<o.length;++S){var E=o.charCodeAt(S);E>=48&&E<=57?u=10*u+(E-48):E>=65&&E<=90&&(T=26*T+(E-64))}return{c:T-1,r:u-1}}function encode_cell(o){for(var u=o.c+1,T="";u;u=(u-1)/26|0)T=String.fromCharCode((u-1)%26+65)+T;return T+(o.r+1)}function decode_range(o){var u=o.indexOf(":");return u==-1?{s:decode_cell(o),e:decode_cell(o)}:{s:decode_cell(o.slice(0,u)),e:decode_cell(o.slice(u+1))}}function encode_range(o,u){return typeof u>"u"||typeof u=="number"?encode_range(o.s,o.e):(typeof o!="string"&&(o=encode_cell(o)),typeof u!="string"&&(u=encode_cell(u)),o==u?o:o+":"+u)}function safe_decode_range(o){var u={s:{c:0,r:0},e:{c:0,r:0}},T=0,S=0,E=0,C=o.length;for(T=0;S<C&&!((E=o.charCodeAt(S)-64)<1||E>26);++S)T=26*T+E;for(u.s.c=--T,T=0;S<C&&!((E=o.charCodeAt(S)-48)<0||E>9);++S)T=10*T+E;if(u.s.r=--T,S===C||E!=10)return u.e.c=u.s.c,u.e.r=u.s.r,u;for(++S,T=0;S!=C&&!((E=o.charCodeAt(S)-64)<1||E>26);++S)T=26*T+E;for(u.e.c=--T,T=0;S!=C&&!((E=o.charCodeAt(S)-48)<0||E>9);++S)T=10*T+E;return u.e.r=--T,u}function safe_format_cell(o,u){var T=o.t=="d"&&u instanceof Date;if(o.z!=null)try{return o.w=SSF_format(o.z,T?datenum(u):u)}catch{}try{return o.w=SSF_format((o.XF||{}).numFmtId||(T?14:0),T?datenum(u):u)}catch{return""+u}}function format_cell(o,u,T){return o==null||o.t==null||o.t=="z"?"":o.w!==void 0?o.w:(o.t=="d"&&!o.z&&T&&T.dateNF&&(o.z=T.dateNF),o.t=="e"?BErr[o.v]||o.v:u==null?safe_format_cell(o,o.v):safe_format_cell(o,u))}function sheet_to_workbook(o,u){var T=u&&u.sheet?u.sheet:"Sheet1",S={};return S[T]=o,{SheetNames:[T],Sheets:S}}function sheet_add_aoa(o,u,T){var S=T||{},E=o?Array.isArray(o):S.dense,C=o||(E?[]:{}),_=0,P=0;if(C&&S.origin!=null){if(typeof S.origin=="number")_=S.origin;
vendor: 8,577 bytes, line 219
219else{var R=typeof S.origin=="string"?decode_cell(S.origin):S.origin;_=R.r,P=R.c}C["!ref"]||(C["!ref"]="A1:A1")}var I={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(C["!ref"]){var L=safe_decode_range(C["!ref"]);I.s.c=L.s.c,I.s.r=L.s.r,I.e.c=Math.max(I.e.c,L.e.c),I.e.r=Math.max(I.e.r,L.e.r),_==-1&&(I.e.r=_=L.e.r+1)}for(var j=0;j!=u.length;++j)if(u[j]){if(!Array.isArray(u[j]))throw new Error("aoa_to_sheet expects an array of arrays");for(var M=0;M!=u[j].length;++M)if(!(typeof u[j][M]>"u")){var D={v:u[j][M]},F=_+j,N=P+M;if(I.s.r>F&&(I.s.r=F),I.s.c>N&&(I.s.c=N),I.e.r<F&&(I.e.r=F),I.e.c<N&&(I.e.c=N),u[j][M]&&typeof u[j][M]=="object"&&!Array.isArray(u[j][M])&&!(u[j][M]instanceof Date))D=u[j][M];else if(Array.isArray(D.v)&&(D.f=u[j][M][1],D.v=D.v[0]),D.v===null)if(D.f)D.t="n";else if(S.nullError)D.t="e",D.v=0;else if(S.sheetStubs)D.t="z";else continue;else typeof D.v=="number"?D.t="n":typeof D.v=="boolean"?D.t="b":D.v instanceof Date?(D.z=S.dateNF||table_fmt[14],S.cellDates?(D.t="d",D.w=SSF_format(D.z,datenum(D.v))):(D.t="n",D.v=datenum(D.v),D.w=SSF_format(D.z,D.v))):D.t="s";if(E)C[F]||(C[F]=[]),C[F][N]&&C[F][N].z&&(D.z=C[F][N].z),C[F][N]=D;else{var G=encode_cell({c:N,r:F});C[G]&&C[G].z&&(D.z=C[G].z),C[G]=D}}}return I.s.c<1e7&&(C["!ref"]=encode_range(I)),C}function aoa_to_sheet(o,u){return sheet_add_aoa(null,o,u)}function parse_Int32LE(o){return o.read_shift(4,"i")}function write_UInt32LE(o,u){return u||(u=new_buf(4)),u.write_shift(4,o),u}function parse_XLWideString(o){var u=o.read_shift(4);return u===0?"":o.read_shift(u,"dbcs")}function write_XLWideString(o,u){var T=!1;return u==null&&(T=!0,u=new_buf(4+2*o.length)),u.write_shift(4,o.length),o.length>0&&u.write_shift(0,o,"dbcs"),T?u.slice(0,u.l):u}function parse_StrRun(o){return{ich:o.read_shift(2),ifnt:o.read_shift(2)}}function write_StrRun(o,u){return u||(u=new_buf(4)),u.write_shift(2,0),u.write_shift(2,0),u}function parse_RichStr(o,u){var T=o.l,S=o.read_shift(1),E=parse_XLWideString(o),C=[],_={t:E,h:E};if(S&1){for(var P=o.read_shift(4),R=0;R!=P;++R)C.push(parse_StrRun(o));_.r=C}else _.r=[{ich:0,ifnt:0}];return o.l=T+u,_}function write_RichStr(o,u){var T=!1;return u==null&&(T=!0,u=new_buf(15+4*o.t.length)),u.write_shift(1,0),write_XLWideString(o.t,u),T?u.slice(0,u.l):u}var parse_BrtCommentText=parse_RichStr;function write_BrtCommentText(o,u){var T=!1;return u==null&&(T=!0,u=new_buf(23+4*o.t.length)),u.write_shift(1,1),write_XLWideString(o.t,u),u.write_shift(4,1),write_StrRun({},u),T?u.slice(0,u.l):u}function parse_XLSBCell(o){var u=o.read_shift(4),T=o.read_shift(2);return T+=o.read_shift(1)<<16,o.l++,{c:u,iStyleRef:T}}function write_XLSBCell(o,u){return u==null&&(u=new_buf(8)),u.write_shift(-4,o.c),u.write_shift(3,o.iStyleRef||o.s),u.write_shift(1,0),u}function parse_XLSBShortCell(o){var u=o.read_shift(2);return u+=o.read_shift(1)<<16,o.l++,{c:-1,iStyleRef:u}}function write_XLSBShortCell(o,u){return u==null&&(u=new_buf(4)),u.write_shift(3,o.iStyleRef||o.s),u.write_shift(1,0),u}var parse_XLSBCodeName=parse_XLWideString,write_XLSBCodeName=write_XLWideString;function parse_XLNullableWideString(o){var u=o.read_shift(4);return u===0||u===4294967295?"":o.read_shift(u,"dbcs")}function write_XLNullableWideString(o,u){var T=!1;return u==null&&(T=!0,u=new_buf(127)),u.write_shift(4,o.length>0?o.length:4294967295),o.length>0&&u.write_shift(0,o,"dbcs"),T?u.slice(0,u.l):u}var parse_XLNameWideString=parse_XLWideString,parse_RelID=parse_XLNullableWideString,write_RelID=write_XLNullableWideString;function parse_RkNumber(o){var u=o.slice(o.l,o.l+4),T=u[0]&1,S=u[0]&2;o.l+=4;var E=S===0?__double([0,0,0,0,u[0]&252,u[1],u[2],u[3]],0):__readInt32LE(u,0)>>2;return T?E/100:E}function write_RkNumber(o,u){u==null&&(u=new_buf(4));var T=0,S=0,E=o*100;if(o==(o|0)&&o>=-536870912&&o<1<<29?S=1:E==(E|0)&&E>=-536870912&&E<1<<29&&(S=1,T=1),S)u.write_shift(-4,((T?E:o)<<2)+(T+2));else throw new Error("unsupported RkNumber "+o)}function parse_RfX(o){var u={s:{},e:{}};return u.s.r=o.read_shift(4),u.e.r=o.read_shift(4),u.s.c=o.read_shift(4),u.e.c=o.read_shift(4),u}function write_RfX(o,u){return u||(u=new_buf(16)),u.write_shift(4,o.s.r),u.write_shift(4,o.e.r),u.write_shift(4,o.s.c),u.write_shift(4,o.e.c),u}var parse_UncheckedRfX=parse_RfX,write_UncheckedRfX=write_RfX;function parse_Xnum(o){if(o.length-o.l<8)throw"XLS Xnum Buffer underflow";return o.read_shift(8,"f")}function write_Xnum(o,u){return(u||new_buf(8)).write_shift(8,o,"f")}function parse_BrtColor(o){var u={},T=o.read_shift(1),S=T>>>1,E=o.read_shift(1),C=o.read_shift(2,"i"),_=o.read_shift(1),P=o.read_shift(1),R=o.read_shift(1);switch(o.l++,S){case 0:u.auto=1;break;case 1:u.index=E;var I=XLSIcv[E];I&&(u.rgb=rgb2Hex(I));break;case 2:u.rgb=rgb2Hex([_,P,R]);break;case 3:u.theme=E;break}return C!=0&&(u.tint=C>0?C/32767:C/32768),u}function write_BrtColor(o,u){if(u||(u=new_buf(8)),!o||o.auto)return u.write_shift(4,0),u.write_shift(4,0),u;o.index!=null?(u.write_shift(1,2),u.write_shift(1,o.index)):o.theme!=null?(u.write_shift(1,6),u.write_shift(1,o.theme)):(u.write_shift(1,5),u.write_shift(1,0));var T=o.tint||0;if(T>0?T*=32767:T<0&&(T*=32768),u.write_shift(2,T),!o.rgb||o.theme!=null)u.write_shift(2,0),u.write_shift(1,0),u.write_shift(1,0);else{var S=o.rgb||"FFFFFF";typeof S=="number"&&(S=("000000"+S.toString(16)).slice(-6)),u.write_shift(1,parseInt(S.slice(0,2),16)),u.write_shift(1,parseInt(S.slice(2,4),16)),u.write_shift(1,parseInt(S.slice(4,6),16)),u.write_shift(1,255)}return u}function parse_FontFlags(o){var u=o.read_shift(1);o.l++;var T={fBold:u&1,fItalic:u&2,fUnderline:u&4,fStrikeout:u&8,fOutline:u&16,fShadow:u&32,fCondense:u&64,fExtend:u&128};return T}function write_FontFlags(o,u){u||(u=new_buf(2));var T=(o.italic?2:0)|(o.strike?8:0)|(o.outline?16:0)|(o.shadow?32:0)|(o.condense?64:0)|(o.extend?128:0);return u.write_shift(1,T),u.write_shift(1,0),u}function parse_ClipboardFormatOrString(o,u){var T={2:"BITMAP",3:"METAFILEPICT",8:"DIB",14:"ENHMETAFILE"},S=o.read_shift(4);switch(S){case 0:return"";case 4294967295:case 4294967294:return T[o.read_shift(4)]||""}if(S>400)throw new Error("Unsupported Clipboard: "+S.toString(16));return o.l-=4,o.read_shift(0,u==1?"lpstr":"lpwstr")}function parse_ClipboardFormatOrAnsiString(o){return parse_ClipboardFormatOrString(o,1)}function parse_ClipboardFormatOrUnicodeString(o){return parse_ClipboardFormatOrString(o,2)}var VT_I2=2,VT_I4=3,VT_BOOL=11,VT_VARIANT=12,VT_UI4=19,VT_FILETIME=64,VT_BLOB=65,VT_CF=71,VT_VECTOR_VARIANT=4108,VT_VECTOR_LPSTR=4126,VT_STRING=80,VT_USTR=81,VT_CUSTOM=[VT_STRING,VT_USTR],DocSummaryPIDDSI={1:{n:"CodePage",t:VT_I2},2:{n:"Category",t:VT_STRING},3:{n:"PresentationFormat",t:VT_STRING},4:{n:"ByteCount",t:VT_I4},5:{n:"LineCount",t:VT_I4},6:{n:"ParagraphCount",t:VT_I4},7:{n:"SlideCount",t:VT_I4},8:{n:"NoteCount",t:VT_I4},9:{n:"HiddenCount",t:VT_I4},10:{n:"MultimediaClipCount",t:VT_I4},11:{n:"ScaleCrop",t:VT_BOOL},12:{n:"HeadingPairs",t:VT_VECTOR_VARIANT},13:{n:"TitlesOfParts",t:VT_VECTOR_LPSTR},14:{n:"Manager",t:VT_STRING},15:{n:"Company",t:VT_STRING},16:{n:"LinksUpToDate",t:VT_BOOL},17:{n:"CharacterCount",t:VT_I4},19:{n:"SharedDoc",t:VT_BOOL},22:{n:"HyperlinksChanged",t:VT_BOOL},23:{n:"AppVersion",t:VT_I4,p:"version"},24:{n:"DigSig",t:VT_BLOB},26:{n:"ContentType",t:VT_STRING},27:{n:"ContentStatus",t:VT_STRING},28:{n:"Language",t:VT_STRING},29:{n:"Version",t:VT_STRING},255:{},2147483648:{n:"Locale",t:VT_UI4},2147483651:{n:"Behavior",t:VT_UI4},1919054434:{}},SummaryPIDSI={1:{n:"CodePage",t:VT_I2},2:{n:"Title",t:VT_STRING},3:{n:"Subject",t:VT_STRING},4:{n:"Author",t:VT_STRING},5:{n:"Keywords",t:VT_STRING},6:{n:"Comments",t:VT_STRING},7:{n:"Template",t:VT_STRING},8:{n:"LastAuthor",t:VT_STRING},9:{n:"RevNumber",t:VT_STRING},10:{n:"EditTime",t:VT_FILETIME},11:{n:"LastPrinted",t:VT_FILETIME},12:{n:"CreatedDate",t:VT_FILETIME},13:{n:"ModifiedDate",t:VT_FILETIME},14:{n:"PageCount",t:VT_I4},15:{n:"WordCount",t:VT_I4},16:{n:"CharCount",t:VT_I4},17:{n:"Thumbnail",t:VT_CF},18:{n:"Application",t:VT_STRING},19:{n:"DocSecurity",t:VT_I4},255:{},2147483648:{n:"Locale",t:VT_UI4},2147483651:{n:"Behavior",t:VT_UI4},1919054434:{}},CountryEnum={1:"US",2:"CA",3:"",7:"RU",20:"EG",30:"GR",31:"NL",32:"BE",33:"FR",34:"ES",36:"HU",39:"IT",41:"CH",43:"AT",44:"GB",45:"DK",46:"SE",47:"NO",48:"PL",49:"DE",52:"MX",55:"BR",61:"AU",64:"NZ",66:"TH",81:"JP",82:"KR",84:"VN",86:"CN",90:"TR",105:"JS",213:"DZ",216:"MA",218:"LY",351:"PT",354:"IS",358:"FI",420:"CZ",886:"TW",961:"LB",962:"JO",963:"SY",964:"IQ",965:"KW",966:"SA",971:"AE",972:"IL",974:"QA",981:"IR",65535:"US"},XLSFillPattern=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","dar
219kVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];function rgbify(o){return o.map(function(u){return[u>>16&255,u>>8&255,u&255]})}var _XLSIcv=rgbify([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),XLSIcv=dup(_XLSIcv),BErr={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"},RBErr={"#NULL!":0,"#DIV/0!":7,"#VALUE!":15,"#REF!":23,"#NAME?":29,"#NUM!":36,"#N/A":42,"#GETTING_DATA":43,"#WTF?":255},ct2type={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.sheet.macroEnabled.main+xml":"workbooks","application/vnd.ms-excel.sheet.binary.macroEnabled.main":"workbooks","application/vnd.ms-excel.addin.macroEnabled.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":"sheets","application/vnd.ms-excel.worksheet":"sheets","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":"charts","application/vnd.ms-excel.chartsheet":"charts","application/vnd.ms-excel.macrosheet+xml":"macros","application/vnd.ms-excel.macrosheet":"macros","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":"dialogs","application/vnd.ms-excel.dialogsheet":"dialogs","application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml":"strs","application/vnd.ms-excel.sharedStrings":"strs","application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":"styles","application/vnd.ms-excel.styles":"styles","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":"comments","application/vnd.ms-excel.comments":"comments","application/vnd.ms-excel.threadedcomments+xml":"threadedcomments","application/vnd.ms-excel.person+xml":"people","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"metadata","application/vnd.ms-excel.sheetMetadata":"metadata","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"},CT_LIST={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"}
vendor: 2,390 bytes, line 219
219,comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},metadata:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml",xlsb:"application/vnd.ms-excel.sheetMetadata"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};function new_ct(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""}}function parse_ct(o){var u=new_ct();if(!o||!o.match)return u;var T={};if((o.match(tagregex)||[]).forEach(function(S){var E=parsexmltag(S);switch(E[0].replace(nsregex,"<")){case"<?xml":break;case"<Types":u.xmlns=E["xmlns"+(E[0].match(/<(\w+):/)||["",""])[1]];break;case"<Default":T[E.Extension]=E.ContentType;break;case"<Override":u[ct2type[E.ContentType]]!==void 0&&u[ct2type[E.ContentType]].push(E.PartName);break}}),u.xmlns!==XMLNS.CT)throw new Error("Unknown Namespace: "+u.xmlns);return u.calcchain=u.calcchains.length>0?u.calcchains[0]:"",u.sst=u.strs.length>0?u.strs[0]:"",u.style=u.styles.length>0?u.styles[0]:"",u.defaults=T,delete u.calcchains,u}function write_ct(o,u){var T=evert_arr(ct2type),S=[],E;S[S.length]=XML_HEADER,S[S.length]=writextag("Types",null,{xmlns:XMLNS.CT,"xmlns:xsd":XMLNS.xsd,"xmlns:xsi":XMLNS.xsi}),S=S.concat([["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["t
219if","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels","application/vnd.openxmlformats-package.relationships+xml"]].map(function(R){return writextag("Default",null,{Extension:R[0],ContentType:R[1]})}));var C=function(R){o[R]&&o[R].length>0&&(E=o[R][0],S[S.length]=writextag("Override",null,{PartName:(E[0]=="/"?"":"/")+E,ContentType:CT_LIST[R][u.bookType]||CT_LIST[R].xlsx}))},_=function(R){(o[R]||[]).forEach(function(I){S[S.length]=writextag("Override",null,{PartName:(I[0]=="/"?"":"/")+I,ContentType:CT_LIST[R][u.bookType]||CT_LIST[R].xlsx})})},P=function(R){(o[R]||[]).forEach(function(I){S[S.length]=writextag("Override",null,{PartName:(I[0]=="/"?"":"/")+I,ContentType:T[R][0]})})};return C("workbooks"),_("sheets"),_("charts"),P("themes"),["strs","styles"].forEach(C),["coreprops","extprops","custprops"].forEach(P),P("vba"),P("comments"),P("threadedcomments"),P("drawings"),_("metadata"),P("people"),S.length>2&&(S[S.length]="</Types>",S[1]=S[1].replace("/>",">")),S.join("")}var RELS
vendor: 2,399 bytes, line 219
219={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument",HLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",VML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",CMNT:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties",SST:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",STY:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",THEME:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",CHART:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",CHARTEX:"http://schemas.microsoft.com/office/2014/relationships/chartEx",CS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",WS:["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"],DS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",MS:"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",IMG:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",DRAW:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",XLMETA:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata",TCMNT:"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment",PEOPLE:"http://schemas.microsoft.com/office/2017/10/relationships/person",
vendor: 17,696 bytes, lines 219-229
219VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function get_rels_path(o){var u=o.lastIndexOf("/");return o.slice(0,u+1)+"_rels/"+o.slice(u+1)+".rels"}function parse_rels(o,u){var T={"!id":{}};if(!o)return T;u.charAt(0)!=="/"&&(u="/"+u);var S={};return(o.match(tagregex)||[]).forEach(function(E){var C=parsexmltag(E);if(C[0]==="<Relationship"){var _={};_.Type=C.Type,_.Target=C.Target,_.Id=C.Id,C.TargetMode&&(_.TargetMode=C.TargetMode);var P=C.TargetMode==="External"?C.Target:resolve_path(C.Target,u);T[P]=_,S[C.Id]=_}}),T["!id"]=S,T}function write_rels(o){var u=[XML_HEADER,writextag("Relationships",null,{xmlns:XMLNS.RELS})];return keys(o["!id"]).forEach(function(T){u[u.length]=writextag("Relationship",null,o["!id"][T])}),u.length>2&&(u[u.length]="</Relationships>",u[1]=u[1].replace("/>",">")),u.join("")}function add_rels(o,u,T,S,E,C){if(E||(E={}),o["!id"]||(o["!id"]={}),o["!idx"]||(o["!idx"]=1),u<0)for(u=o["!idx"];o["!id"]["rId"+u];++u);if(o["!idx"]=u+1,E.Id="rId"+u,E.Type=S,E.Target=T,[RELS.HLINK,RELS.XPATH,RELS.XMISS].indexOf(E.Type)>-1&&(E.TargetMode="External"),o["!id"][E.Id])throw new Error("Cannot rewrite rId "+u);return o["!id"][E.Id]=E,o[("/"+E.Target).replace("//","/")]=E,u}var CT_ODS="application/vnd.oasis.opendocument.spreadsheet";function parse_manifest(o,u){for(var T=xlml_normalize(o),S,E;S=xlmlregex.exec(T);)switch(S[3]){case"manifest":break;case"file-entry":if(E=parsexmltag(S[0],!1),E.path=="/"&&E.type!==CT_ODS)throw new Error("This OpenDocument is not a spreadsheet");break;case"encryption-data":case"algorithm":case"start-key-generation":case"key-derivation":throw new Error("Unsupported ODS Encryption");default:if(u&&u.WTF)throw S}}function write_manifest(o){var u=[XML_HEADER];u.push(`<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2"> 220`),u.push(` <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/> 221`);for(var T=0;T<o.length;++T)u.push(' <manifest:file-entry manifest:full-path="'+o[T][0]+'" manifest:media-type="'+o[T][1]+`"/> 222`);return u.push("</manifest:manifest>"),u.join("")}function write_rdf_type(o,u,T){return[' <rdf:Description rdf:about="'+o+`"> 223`,' <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/'+(T||"odf")+"#"+u+`"/> 224`,` </rdf:Description> 225`].join("")}function write_rdf_has(o,u){return[' <rdf:Description rdf:about="'+o+`"> 226`,' <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="'+u+`"/> 227`,` </rdf:Description> 228`].join("")}function write_rdf(o){var u=[XML_HEADER];u.push(`<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 229`);for(var T=0;T!=o.length;++T)u.push(write_rdf_type(o[T][0],o[T][1])),u.push(write_rdf_has("",o[T][0]));return u.push(write_rdf_type("","Document","pkg")),u.push("</rdf:RDF>"),u.join("")}function write_meta_ods(){return'<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2"><office:meta><meta:generator>SheetJS '+XLSX.version+"</meta:generator></office:meta></office:document-meta>"}var CORE_PROPS=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]],CORE_PROPS_REGEX=function(){for(var o=new Array(CORE_PROPS.length),u=0;u<CORE_PROPS.length;++u){var T=CORE_PROPS[u],S="(?:"+T[0].slice(0,T[0].indexOf(":"))+":)"+T[0].slice(T[0].indexOf(":")+1);o[u]=new RegExp("<"+S+"[^>]*>([\\s\\S]*?)</"+S+">")}return o}();function parse_core_props(o){var u={};o=utf8read(o);for(var T=0;T<CORE_PROPS.length;++T){var S=CORE_PROPS[T],E=o.match(CORE_PROPS_REGEX[T]);E!=null&&E.length>0&&(u[S[1]]=unescapexml(E[1])),S[2]==="date"&&u[S[1]]&&(u[S[1]]=parseDate(u[S[1]]))}return u}function cp_doit(o,u,T,S,E){E[o]!=null||u==null||u===""||(E[o]=u,u=escapexml(u),S[S.length]=T?writextag(o,u,T):writetag(o,u))}function write_core_props(o,u){var T=u||{},S=[XML_HEADER,writextag("cp:coreProperties",null,{"xmlns:cp":XMLNS.CORE_PROPS,"xmlns:dc":XMLNS.dc,"xmlns:dcterms":XMLNS.dcterms,"xmlns:dcmitype":XMLNS.dcmitype,"xmlns:xsi":XMLNS.xsi})],E={};if(!o&&!T.Props)return S.join("");o&&(o.CreatedDate!=null&&cp_doit("dcterms:created",typeof o.CreatedDate=="string"?o.CreatedDate:write_w3cdtf(o.CreatedDate,T.WTF),{"xsi:type":"dcterms:W3CDTF"},S,E),o.ModifiedDate!=null&&cp_doit("dcterms:modified",typeof o.ModifiedDate=="string"?o.ModifiedDate:write_w3cdtf(o.ModifiedDate,T.WTF),{"xsi:type":"dcterms:W3CDTF"},S,E));for(var C=0;C!=CORE_PROPS.length;++C){var _=CORE_PROPS[C],P=T.Props&&T.Props[_[1]]!=null?T.Props[_[1]]:o?o[_[1]]:null;P===!0?P="1":P===!1?P="0":typeof P=="number"&&(P=String(P)),P!=null&&cp_doit(_[0],P,null,S,E)}return S.length>2&&(S[S.length]="</cp:coreProperties>",S[1]=S[1].replace("/>",">")),S.join("")}var EXT_PROPS=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]],PseudoPropsPairs=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function load_props_pairs(o,u,T,S){var E=[];if(typeof o=="string")E=parseVector(o,S);else for(var C=0;C<o.length;++C)E=E.concat(o[C].map(function(L){return{v:L}}));var _=typeof u=="string"?parseVector(u,S).map(function(L){return L.v}):u,P=0,R=0;if(_.length>0)for(var I=0;I!==E.length;I+=2){switch(R=+E[I+1].v,E[I].v){case"Worksheets":case"å·¥ä½è¡¨":case"ÐиÑÑÑ":case"Ø£ÙØ±Ø§Ù Ø§ÙØ¹Ù Ù":case"ã¯ã¼ã¯ã·ã¼ã":case"××××× ×ת ×¢××××":case"Arbeitsblätter":case"ÃalıÅma Sayfaları":case"Feuilles de calcul":case"Fogli di lavoro":case"Folhas de cálculo":case"Planilhas":case"Regneark":case"Hojas de cálculo":case"Werkbladen":T.Worksheets=R,T.SheetNames=_.slice(P,P+R);break;case"Named Ranges":case"Rangos con nombre":case"ååä»ãä¸è¦§":case"Benannte Bereiche":case"Navngivne omrÃ¥der":T.NamedRanges=R,T.DefinedNames=_.slice(P,P+R);break;case"Charts":case"Diagramme":T.Chartsheets=R,T.ChartNames=_.slice(P,P+R);break}P+=R}}function parse_ext_props(o,u,T){var S={};return u||(u={}),o=utf8read(o),EXT_PROPS.forEach(function(E){var C=(o.match(matchtag(E[0]))||[])[1];switch(E[2]){case"string":C&&(u[E[1]]=unescapexml(C));break;case"bool":u[E[1]]=C==="true";break;case"raw":var _=o.match(new RegExp("<"+E[0]+"[^>]*>([\\s\\S]*?)</"+E[0]+">"));_&&_.length>0&&(S[E[1]]=_[1]);break}}),S.HeadingPairs&&S.TitlesOfParts&&load_props_pairs(S.HeadingPairs,S.TitlesOfParts,u,T),u}function write_ext_props(o){var u=[],T=writextag;return o||(o={}),o.Application="SheetJS",u[u.length]=XML_HEADER,u[u.length]=writextag("Properties",null,{xmlns:XMLNS.EXT_PROPS,"xmlns:vt":XMLNS.vt}),EXT_PROPS.forEach(function(S){if(o[S[1]]!==void 0){var E;switch(S[2]){case"string":E=escapexml(String(o[S[1]]));break;case"bool":E=o[S[1]]?"true":"false";break}E!==void 0&&(u[u.length]=T(S[0],E))}}),u[u.length]=T("HeadingPairs",T("vt:vector",T("vt:variant","<vt:lpstr>Worksheets</vt:lpstr>")+T("vt:variant",T("vt:i4",String(o.Worksheets))),{size:2,baseType:"variant"})),u[u.length]=T("TitlesOfParts",T("vt:vector",o.SheetNames.map(function(S){return"<vt:lpstr>"+escapexml(S)+"</vt:lpstr>"}).join(""),{size:o.Worksheets,baseType:"lpstr"})),u.length>2&&(u[u.length]="</Properties>",u[1]=u[1].replace("/>",">")),u.join("")}var custregex=/<[^>]+>[^<]*/g;function parse_cust_props(o,u){var T={},S="",E=o.match(custregex);if(E)for(var C=0;C!=E.length;++C){var _=E[C],P=parsexmltag(_);switch(P[0]){case"<?xml":break;case"<Properties":break;case"<property":S=unescapexml(P.name);break;case"</property>":S=null;break;default:if(_.indexOf("<vt:")===0){var R=_.split(">"),I=R[0].slice(4),L=R[1];switch(I){case"lpstr":case"bstr":case"lpwstr":T[S]=unescapexml(L);break;case"bool":T[S]=parsexmlbool(L);break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":T[S]=parseInt(L,10);break;case"r4":case"r8":case"decimal":T[S]=parseFloat(L);break;case"filetime":case"date":T[S]=parseDate(L);break;case"cy":case"error":T[S]=unescapexml(L);break;default:if(I.slice(-1)=="/")break;u.WTF&&typeof console<"u"&&console.warn("Unexpected",_,I,R)}}else if(_.slice(0,2)!=="</"){if(u.WTF)throw new Error(_)}}}return T}function write_cust_props(o){var u=[XML_HEADER,writextag("Properties",null,{xmlns:XMLNS.CUST_PROPS,"xmlns:vt":XMLNS.vt})];if(!o)return u.join("");var T=1;return keys(o).forEach(function(E){++T,u[u.length]=writextag("property",write_vt(o[E]),{fmtid:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:T,name:escapexml(E)})}),u.length>2&&(u[u.length]="</Properties>",u[1]=u[1].replace("/>",">")),u.join("")}var XLMLDocPropsMap={Title:"Title",Subject:"Subject",Author:"Author",Keywords:"Keywords",Comments:"Description",LastAuthor:"LastAuthor",RevNumber:"Revision",Application:"AppName",LastPrinted:"LastPrinted",CreatedDate:"Created",ModifiedDate:"LastSaved",Category:"Category",Manager:"Manager",Company:"Company",AppVersion:"Version",ContentStatus:"ContentStatus",Identifier:"Identifier",Language:"Language"},evert_XLMLDPM;function xlml_set_prop(o,u,T){evert_XLMLDPM||(evert_XLMLDPM=evert(XLMLDocPropsMap)),u=evert_XLMLDPM[u]||u,o[u]=T}function xlml_write_docprops(o,u){var T=[];return keys(XLMLDocPropsMap).map(function(S){for(var E=0;E<CORE_PROPS.length;++E)if(CORE_PROPS[E][1]==S)return CORE_PROPS[E];for(E=0;E<EXT_PROPS.length;++E)if(EXT_PROPS[E][1]==S)return EXT_PROPS[E];throw S}).forEach(function(S){if(o[S[1]]!=null){var E=u&&u.Props&&u.Props[S[1]]!=null?u.Props[S[1]]:o[S[1]];switch(S[2]){case"date":E=new Date(E).toISOString().replace(/\.\d*Z/,"Z");break}typeof E=="number"?E=String(E):E===!0||E===!1?E=E?"1":"0":E instanceof Date&&(E=new Date(E).toISOString().replace(/\.\d*Z/,"")),T.push(writetag(XLMLDocPropsMap[S[1]]||S[1],E))}}),writextag("DocumentProperties",T.join(""),{xmlns:XLMLNS.o})}function xlml_write_custprops(o,u){var T=["Worksheets","SheetNames"],S="CustomDocumentProperties",E=[];return o&&keys(o).forEach(function(C){if(Object.prototype.hasOwnProperty.call(o,C)){for(var _=0;_<CORE_PROPS.length;++_)if(C==CORE_PROPS[_][1])return;for(_=0;_<EXT_PROPS.length;++_)if(C==EXT_PROPS[_][1])return;for(_=0;_<T.length;++_)if(C==T[_])return;var P=o[C],R="string";typeof P=="number"?(R="float",P=String(P)):P===!0||P===!1?(R="boolean",P=P?"1":"0"):P=String(P),E.push(writextag(escapexmltag(C),P,{"dt:dt":R}))}}),u&&keys(u).forEach(function(C){if(Object.prototype.hasOwnProperty.call(u,C)&&!(o&&Object.prototype.hasOwnProperty.call(o,C))){var _=u[C],P="string";typeof _=="number"?(P="float",_=String(_)):_===!0||_===!1?(P="boolean",_=_?"1":"0"):_ instanceof Date?(P="dateTime.tz",_=_.toISOString()):_=String(_),E.push(writextag(escapexmltag(C),_,{"dt:dt":P}))}}),"<"+S+' xmlns="'+XLMLNS.o+'">'+E.join("")+"</"+S+">"}function parse_FILETIME(o){var u=o.read_shift(4),T=o.read_shift(4);return new Date((T/1e7*Math.pow(2,32)+u/1e7-11644473600)*1e3).toISOString().replace(/\.000/,"")}function write_FILETIME(o){var u=typeof o=="string"?new Date(Date.parse(o)):o,T=u.getTime()/1e3+11644473600,S=T%Math.pow(2,32),E=(T-S)/Math.pow(2,32);S*=1e7,E*=1e7;var C=S/Math.pow(2,32)|0;C>0&&(S=S%Math.pow(2,32),E+=C);var _=new_buf(8);return _.write_shift(4,S),_.write_shift(4,E),_}function parse_lpstr(o,u,T){var S=o.l,E=o.read_shift(0,"lpstr-cp");if(T)for(;o.l-S&3;)++o.l;return E}function parse_lpwstr(o,u,T){var S=o.read_shift(0,"lpwstr");return S}function parse_VtStringBase(o,u,T){return u===31?parse_lpwstr(o):parse_lpstr(o,u,T)}function parse_VtString(o,u,T){return parse_VtStringBase(o,u,T===!1?0:4)}function parse_VtUnalignedString(o,u){if(!u)throw new Error("VtUnalignedString must have positive length");return parse_VtStringBase(o,u,0)}function parse_VtVecLpwstrValue(o){for(var u=o.read_shift(4),T=[],S=0;S!=u;++S){var E=o.l;T[S]=o.read_shift(0,"lpwstr").replace(chr0,""),o.l-E&2&&(o.l+=2)}return T}function parse_VtVecUnalignedLpstrValue(o){for(var u=o.read_shift(4),T=[],S=0;S!=u;++S)T[S]=o.read_shift(0,"lpstr-cp").replace(chr0,"");return T}function parse_VtHeadingPair(o){var u=o.l,T=parse_TypedPropertyValue(o,VT_USTR);o[o.l]==0&&o[o.l+1]==0&&o.l-u&2&&(o.l+=2);var S=parse_TypedPropertyValue(o,VT_I4);return[T,S]}function parse_VtVecHeadingPairValue(o){for(var u=o.read_shift(4),T=[],S=0;S<u/2;++S)T.push(parse_VtHeadingPair(o));return T}function parse_dictionary(o,u){for(var T=o.read_shift(4),S={},E=0;E!=T;++E){var C=o.read_shift(4),_=o.read_shift(4);S[C]=o.read_shift(_,u===1200?"utf16le":"utf8").replace(chr0,"").replace(chr1,"!"),u===1200&&_%2&&(o.l+=2)}return o.l&3&&(o.l=o.l>>3<<2),S}function parse_BLOB(o){var u=o.read_shift(4),T=o.slice(o.l,o.l+u);return o.l+=u,(u&3)>0&&(o.l+=4-(u&3)&3),T}function parse_ClipboardData(o){var u={};return u.Size=o.read_shift(4),o.l+=u.Size+3-(u.Size-1)%4,u}function parse_TypedPropertyValue(o,u,T){var S=o.read_shift(2),E,C=T||{};if(o.l+=2,u!==VT_VARIANT&&S!==u&&VT_CUSTOM.indexOf(u)===-1&&!((u&65534)==4126&&(S&65534)==4126))throw new Error("Expected type "+u+" saw "+S);switch(u===VT_VARIANT?S:u){case 2:return E=o.read_shift(2,"i"),C.raw||(o.l+=2),E;case 3:return E=o.read_shift(4,"i"),E;case 11:return o.read_shift(4)!==0;case 19:return E=o.read_shift(4),E;case 30:return parse_lpstr(o,S,4).replace(chr0,"");case 31:return parse_lpwstr(o);case 64:return parse_FILETIME(o);case 65:return parse_BLOB(o);case 71:return parse_ClipboardData(o);case 80:return parse_VtString(o,S,!C.raw).replace(chr0,"");case 81:return parse_VtUnalignedString(o,S).replace(chr0,"");case 4108:return parse_VtVecHeadingPairValue(o);case 4126:case 4127:return S==4127?parse_VtVecLpwstrValue(o):parse_VtVecUnalignedLpstrValue(o);default:throw new Error("TypedPropertyValue unrecognized type "+u+" "+S)}}function write_TypedPropertyValue(o,u){var T=new_buf(4),S=new_buf(4);switch(T.write_shift(4,o==80?31:o),o){case 3:S.write_shift(-4,u);break;case 5:S=new_buf(8),S.write_shift(8,u,"f");break;case 11:S.write_shift(4,u?1:0);break;case 64:S=write_FILETIME(u);break;case 31:case 80:for(S=new_buf(4+2*(u.length+1)+(u.length%2?0:2)),S.write_shift(4,u.length+1),S.write_shift(0,u,"dbcs");S.l!=S.length;)S.write_shift(1,0);break;default:throw new Error("TypedPropertyValue unrecognized type "+o+" "+u)}return bconcat([T,S])}function parse_PropertySet(o,u){var T=o.l,S=o.read_shift(4),E=o.read_shift(4),C=[],_=0,P=0,R=-1,I={};for(_=0;_!=E;++_){var L=o.read_shift(4),j=o.read_shift(4);C[_]=[L,j+T]}C.sort(function(H,O){return H[1]-O[1]});var M={};for(_=0;_!=E;++_){if(o.l!==C[_][1]){var D=!0;if(_>0&&u)switch(u[C[_-1][0]].t){case 2:o.l+2===C[_][1]&&(o.l+=2,D=!1);break;case 80:o.l<=C[_][1]&&(o.l=C[_][1],D=!1);break;case 4108:o.l<=C[_][1]&&(o.l=C[_][1],D=!1);break}if((!u||_==0)&&o.l<=C[_][1]&&(D=!1,o.l=C[_][1]),D)throw new Error("Read Error: Expected address "+C[_][1]+" at "+o.l+" :"+_)}if(u){var F=u[C[_][0]];if(M[F.n]=parse_TypedPropertyValue(o,F.t,{raw:!0}),F.p==="version"&&(M[F.n]=String(M[F.n]>>16)+"."+("0000"+String(M[F.n]&65535)).slice(-4)),F.n=="CodePage")switch(M[F.n]){case 0:M[F.n]=1252;case 874:case 932:case 936:case 949:case 950:case 1250:case 1251:case 1253:case 1254:case 1255:case 1256:case 1257:case 1258:case 1e4:case 1200:case 1201:case 1252:case 65e3:case-536:case 65001:case-535:set_cp(P=M[F.n]>>>0&65535);break;default:throw new Error("Unsupported CodePage: "+M[F.n])}}else if(C[_][0]===1){if(P=M.CodePage=parse_TypedPropertyValue(o,VT_I2),set_cp(P),R!==-1){var N=o.l;o.l=C[R][1],I=parse_dictionary(o,P),o.l=N}}else if(C[_][0]===0){if(P===0){R=_,o.l=C[_+1][1];continue}I=parse_dictionary(o,P)}else{var G=I[C[_][0]],B;switch(o[o.l]){case 65:o.l+=4,B=parse_BLOB(o);break;case 30:o.l+=4,B=parse_VtString(o,o[o.l-4]).replace(/\u0000+$/,"");break;case 31:o.l+=4,B=parse_VtString(o,o[o.l-4]).replace(/\u0000+$/,"");break;case 3:o.l+=4,B=o.read_shift(4,"i");break;case 19:o.l+=4,B=o.read_shift(4);break;case 5:o.l+=4,B=o.read_shift(8,"f");break;case 11:o.l+=4,B=parsebool(o,4);break;case 64:o.l+=4,B=parseDate(parse_FILETIME(o));break;default:throw new Error("unparsed value: "+o[o.l])}M[G]=B}}return o.l=T+S,M}var XLSPSSkip=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"];function guess_property_type(o){switch(typeof o){case"boolean":return 11;case"number":return(o|0)==o?3:5;case"string":return 31;case"object":if(o instanceof Date)return 64;break}return-1}function write_PropertySet(o,u,T){var S=new_buf(8),E=[],C=[],_=8,P=0,R=new_buf(8),I=new_buf(8);if(R.write_shift(4,2),R.write_shift(4,1200),I.write_shift(4,1),C.push(R),E.push(I),_+=8+R.length,!u){I=new_buf(8),I.write_shift(4,0),E.unshift(I);var L=[new_buf(4)];for(L[0].write_shift(4,o.length),P=0;P<o.length;++P){var j=o[P][0];for(R=new_buf(8+2*(j.length+1)+(j.length%2?0:2)),R.write_shift(4,P+2),R.write_shift(4,j.length+1),R.write_shift(0,j,"dbcs");R.l!=R.length;)R.write_shift(1,0);L.push(R)}R=bconcat(L),C.unshift(R),_+=8+R.length}for(P=0;P<o.length;++P)if(!(u&&!u[o[P][0]])&&!(XLSPSSkip.indexOf(o[P][0])>-1||PseudoPropsPairs.indexOf(o[P][0])>-1)&&o[P][1]!=null){var M=o[P][1],D=0;if(u){D=+u[o[P][0]];var F=T[D];
229if(F.p=="version"&&typeof M=="string"){var N=M.split(".");M=(+N[0]<<16)+(+N[1]||0)}R=write_TypedPropertyValue(F.t,M)}else{var G=guess_property_type(M);G==-1&&(G=31,M=String(M)),R=write_TypedPropertyValue(G,M)}C.push(R),I=new_buf(8),I.write_shift(4,u?D:2+P),E.push(I),_+=8+R.length}var B=8*(C.length+1);for(P=0;P<C.length;++P)E[P].write_shift(4,B),B+=C[P].length;return S.write_shift(4,_),S.write_shift(4,C.length),bconcat([S].concat(E).concat(C))}function parse_PropertySetStream(o,u,T){var S=o.content;if(!S)return{};prep_blob(S,0);var E,C,_,P,R=0;S.chk("feff","Byte Order: "),S.read_shift(2);var I=S.read_shift(4),L=S.read_shift(16);if(L!==CFB.utils.consts.HEADER_CLSID&&L!==T)throw new Error("Bad PropertySet CLSID "+L);if(E=S.read_shift(4),E!==1&&E!==2)throw new Error("Unrecognized #Sets: "+E);if(C=S.read_shift(16),P=S.read_shift(4),E===1&&P!==S.l)throw new Error("Length mismatch: "+P+" !== "+S.l);E===2&&(_=S.read_shift(16),R=S.read_shift(4));var j=parse_PropertySet(S,u),M={SystemIdentifier:I};for(var D in j)M[D]=j[D];if(M.FMTID=C,E===1)return M;if(R-S.l==2&&(S.l+=2),S.l!==R)throw new Error("Length mismatch 2: "+S.l+" !== "+R
vendor: 5,789 bytes, line 229
229);var F;try{F=parse_PropertySet(S,null)}catch{}for(D in F)M[D]=F[D];return M.FMTID=[C,_],M}function write_PropertySetStream(o,u,T,S,E,C){var _=new_buf(E?68:48),P=[_];_.write_shift(2,65534),_.write_shift(2,0),_.write_shift(4,842412599),_.write_shift(16,CFB.utils.consts.HEADER_CLSID,"hex"),_.write_shift(4,E?2:1),_.write_shift(16,u,"hex"),_.write_shift(4,E?68:48);var R=write_PropertySet(o,T,S);if(P.push(R),E){var I=write_PropertySet(E,null,null);_.write_shift(16,C,"hex"),_.write_shift(4,68+R.length),P.push(I)}return bconcat(P)}function parsenoop2(o,u){return o.read_shift(u),null}function writezeroes(o,u){u||(u=new_buf(o));for(var T=0;T<o;++T)u.write_shift(1,0);return u}function parslurp(o,u,T){for(var S=[],E=o.l+u;o.l<E;)S.push(T(o,E-o.l));if(E!==o.l)throw new Error("Slurp error");return S}function parsebool(o,u){return o.read_shift(u)===1}function writebool(o,u){return u||(u=new_buf(2)),u.write_shift(2,+!!o),u}function parseuint16(o){return o.read_shift(2,"u")}function writeuint16(o,u){return u||(u=new_buf(2)),u.write_shift(2,o),u}function parseuint16a(o,u){return parslurp(o,u,parseuint16)}function parse_Bes(o){var u=o.read_shift(1),T=o.read_shift(1);return T===1?u:u===1}function write_Bes(o,u,T){return T||(T=new_buf(2)),T.write_shift(1,u=="e"?+o:+!!o),T.write_shift(1,u=="e"?1:0),T}function parse_ShortXLUnicodeString(o,u,T){var S=o.read_shift(T&&T.biff>=12?2:1),E="sbcs-cont",C=current_codepage;if(T&&T.biff>=8&&(current_codepage=1200),!T||T.biff==8){var _=o.read_shift(1);_&&(E="dbcs-cont")}else T.biff==12&&(E="wstr");T.biff>=2&&T.biff<=5&&(E="cpstr");var P=S?o.read_shift(S,E):"";return current_codepage=C,P}function parse_XLUnicodeRichExtendedString(o){var u=current_codepage;current_codepage=1200;var T=o.read_shift(2),S=o.read_shift(1),E=S&4,C=S&8,_=1+(S&1),P=0,R,I={};C&&(P=o.read_shift(2)),E&&(R=o.read_shift(4));var L=_==2?"dbcs-cont":"sbcs-cont",j=T===0?"":o.read_shift(T,L);return C&&(o.l+=4*P),E&&(o.l+=R),I.t=j,C||(I.raw="<t>"+I.t+"</t>",I.r=I.t),current_codepage=u,I}function write_XLUnicodeRichExtendedString(o){var u=o.t||"",T=new_buf(3);T.write_shift(2,u.length),T.write_shift(1,1);var S=new_buf(2*u.length);S.write_shift(2*u.length,u,"utf16le");var E=[T,S];return bconcat(E)}function parse_XLUnicodeStringNoCch(o,u,T){var S;if(T){if(T.biff>=2&&T.biff<=5)return o.read_shift(u,"cpstr");if(T.biff>=12)return o.read_shift(u,"dbcs-cont")}var E=o.read_shift(1);return E===0?S=o.read_shift(u,"sbcs-cont"):S=o.read_shift(u,"dbcs-cont"),S}function parse_XLUnicodeString(o,u,T){var S=o.read_shift(T&&T.biff==2?1:2);return S===0?(o.l++,""):parse_XLUnicodeStringNoCch(o,S,T)}function parse_XLUnicodeString2(o,u,T){if(T.biff>5)return parse_XLUnicodeString(o,u,T);var S=o.read_shift(1);return S===0?(o.l++,""):o.read_shift(S,T.biff<=4||!o.lens?"cpstr":"sbcs-cont")}function write_XLUnicodeString(o,u,T){return T||(T=new_buf(3+2*o.length)),T.write_shift(2,o.length),T.write_shift(1,1),T.write_shift(31,o,"utf16le"),T}function parse_ControlInfo(o){var u=o.read_shift(1);o.l++;var T=o.read_shift(2);return o.l+=2,[u,T]}function parse_URLMoniker(o){var u=o.read_shift(4),T=o.l,S=!1;u>24&&(o.l+=u-24,o.read_shift(16)==="795881f43b1d7f48af2c825dc4852763"&&(S=!0),o.l=T);var E=o.read_shift((S?u-24:u)>>1,"utf16le").replace(chr0,"");return S&&(o.l+=24),E}function parse_FileMoniker(o){for(var u=o.read_shift(2),T="";u-- >0;)T+="../";var S=o.read_shift(0,"lpstr-ansi");if(o.l+=2,o.read_shift(2)!=57005)throw new Error("Bad FileMoniker");var E=o.read_shift(4);if(E===0)return T+S.replace(/\\/g,"/");var C=o.read_shift(4);if(o.read_shift(2)!=3)throw new Error("Bad FileMoniker");var _=o.read_shift(C>>1,"utf16le").replace(chr0,"");return T+_}function parse_HyperlinkMoniker(o,u){var T=o.read_shift(16);switch(T){case"e0c9ea79f9bace118c8200aa004ba90b":return parse_URLMoniker(o);case"0303000000000000c000000000000046":return parse_FileMoniker(o);default:throw new Error("Unsupported Moniker "+T)}}function parse_HyperlinkString(o){var u=o.read_shift(4),T=u>0?o.read_shift(u,"utf16le").replace(chr0,""):"";return T}function write_HyperlinkString(o,u){u||(u=new_buf(6+o.length*2)),u.write_shift(4,1+o.length);for(var T=0;T<o.length;++T)u.write_shift(2,o.charCodeAt(T));return u.write_shift(2,0),u}function parse_Hyperlink(o,u){var T=o.l+u,S=o.read_shift(4);if(S!==2)throw new Error("Unrecognized streamVersion: "+S);var E=o.read_shift(2);o.l+=2;var C,_,P,R,I="",L,j;E&16&&(C=parse_HyperlinkString(o,T-o.l)),E&128&&(_=parse_HyperlinkString(o,T-o.l)),(E&257)===257&&(P=parse_HyperlinkString(o,T-o.l)),(E&257)===1&&(R=parse_HyperlinkMoniker(o,T-o.l)),E&8&&(I=parse_HyperlinkString(o,T-o.l)),E&32&&(L=o.read_shift(16)),E&64&&(j=parse_FILETIME(o)),o.l=T;var M=_||P||R||"";M&&I&&(M+="#"+I),M||(M="#"+I),E&2&&M.charAt(0)=="/"&&M.charAt(1)!="/"&&(M="file://"+M);var D={Target:M};return L&&(D.guid=L),j&&(D.time=j),C&&(D.Tooltip=C),D}function write_Hyperlink(o){var u=new_buf(512),T=0,S=o.Target;S.slice(0,7)=="file://"&&(S=S.slice(7));var E=S.indexOf("#"),C=E>-1?31:23;switch(S.charAt(0)){case"#":C=28;break;case".":C&=-3;break}u.write_shift(4,2),u.write_shift(4,C);var _=[8,6815827,6619237,4849780,83];for(T=0;T<_.length;++T)u.write_shift(4,_[T]);if(C==28)S=S.slice(1),write_HyperlinkString(S,u);else if(C&2){for(_="e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),T=0;T<_.length;++T)u.write_shift(1,parseInt(_[T],16));var P=E>-1?S.slice(0,E):S;for(u.write_shift(4,2*(P.length+1)),T=0;T<P.length;++T)u.write_shift(2,P.charCodeAt(T));u.write_shift(2,0),C&8&&write_HyperlinkString(E>-1?S.slice(E+1):"",u)}else{for(_="03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "),T=0;T<_.length;++T)u.write_shift(1,parseInt(_[T],16));for(var R=0;S.slice(R*3,R*3+3)=="../"||S.slice(R*3,R*3+3)=="..\\";)++R;for(u.write_shift(2,R),u.write_shift(4,S.length-3*R+1),T=0;T<S.length-3*R;
229++T)u.write_shift(1,S.charCodeAt(T+3*R)&255);for(u.write_shift(1,0),u.write_shift(2,65535),u.write_shift(2,57005),T=0;T<6;++T)u.write_shift(4,0)}return u.slice(0,u.l)}function parse_LongRGBA(o){var u=o.read_shift(1),T=o.read_shift(1),S=o.read_shift(1),E=o.read_shift(1);return[u,T,S,E]}function parse_LongRGB(o,u){var T=parse_LongRGBA(o);return T[3]=0,T}function parse_XLSCell(o){var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(2);return{r:u,c:T,ixfe:S}}function write_XLSCell(o,u,T,S){return S||(S=new_buf(6)),S.write_shift(2,o),S.write_shift(2,u),S.write_shift(2,T||0),S}function parse_frtHeader(o){var u=o.read_shift(2),T=o.read_shift(2);return o.l+=8,{type:u,flags:T}}function parse_OptXLUnicodeString(o,u,T){return u===0?"":parse_XLUnicodeString2(o,u,T)}function parse_XTI(o,u,T){var S=T.biff>8?4:2,E=o.read_shift(S),C=o.read_shift(S,"i"),_=o.read_shift(S,"i");return[E,C,_]}function parse_RkRec(o){var u=o.read_shift(2),T=parse_RkNumber(o);return[u,T]}function parse_AddinUdf(o,u,T){o.l+=4,u-=4;var S=o.l+u,E=parse_ShortXLUnicodeString(o,u,T),C=o.read_shift(2);if(S-=o.l,C!==S)throw new Error("Malformed AddinUdf: padding = "+S+" != "+C);return o.l+=C,E}function parse_Ref8U(o){var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(2),E=o.read_shift(2);return{s:{c:S,r:u},e:{c:E,r:T}}}function write_Ref8U(o,u){return u||(u=new_buf(8)),u.write_shift(2,o.s.r),u.write_shift(2,o.e.r),u.write_shift(2,o.s.c),u.write_shift(2,o.e.c),u}function parse_RefU(o){var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(1),E=o.read_shift(1);return{s:{c:S,r:u},e:{c:E,r:T}}}var parse_Ref=parse_RefU;function parse_FtCmo(o){o.l+=4;var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(2);return o.l+=12,[T,u,S]}function parse_FtNts(o){var u={};return o.l+=4,o.l+=16,u.fSharedNote=o.read_shift(2),o.l+=4,u}function parse_FtCf(o){var u={};return o.l+=4,o.cf=o.read_shift(2),u}function parse_FtSkip(o){o.l+=2,o.l+=o.read_shift(2)}var FtTab={0:parse_FtSkip,4:parse_FtSkip,5:parse_FtSkip,6:parse_FtSkip,7:parse_FtCf,8:parse_FtSkip,9:parse_FtSkip,10:parse_FtSkip,11:parse_FtSkip,12:parse_FtSkip,13:parse_FtNts,14:parse_FtSkip,15:parse_FtSkip,16:parse_FtSkip,17:parse_FtSkip,18:parse_FtSkip,19:parse_FtSkip,20:parse_FtSkip,21:parse_FtCmo};function parse_FtArray(o,u){for(var T=o.l+u,S=[];o.l<T;){var E=o.read_shift(2);o.l-=2;try{S.push(FtTab[E](o,T-o.l))}catch{return o.l=T,S}}return o.l!=T&&(o.l=T),S}function parse_BOF(o,u){var T={BIFFVer:0,dt:0};switch(T.BIFFVer=o.read_shift(2),u-=2,u>=2&&(T.dt=o.read_shift(2),o.l-=2),T.BIFFVer){case 1536:case 1280:case 1024:case 768:case 512:case 2:case 7:break;default:if(u>6)throw new Error("Unexpected BIFF Ver "+T.BIFFVer)}return o.read_shift(u),T}function write_BOF(o,u,T){var S=1536,E=16;switch(T.bookType){case"biff8":break;case"biff5":S=1280,E=8;break;case"biff4":S=4,E=6;break;case"biff3":S=3,E=6;break;case"biff2":S=2,E=4;break;case"xla":break;default:throw new Error("unsupported BIFF version")}var C=new_buf(E);return C.write_shift(2,S),C.write_shift(2,u),E>4&&C.write_shift(2,29282),E>6&&C.write_shift(2,1997),E>8&&(C.write_shift(2,49161),C.write_shift(2,1),C.write_shift(2,1798),C.write_shift(2,0)),C}function parse_InterfaceHdr(o,u){return u===0||o.read_shift(2),1200}function parse_WriteAccess(o,u,T){if(T.enc)return o.l+=u,"";var S=o.l,E=parse_XLUnicodeString2(o,0,T);return o.read_shift(u+S-o.l),E}function write_WriteAccess(o,u){var T=!u||u.biff==8,S=new_buf(T?112:54);for(S.write_shift(u.biff==8?2:1,7),T&&S.write_shift(1,0),S.write_shift(4,859007059),S.write_shift(4,5458548|(T?0:536870912));S.l<S.length;)S.write_shift(1,T?0:32);return S}function parse_WsBool(o,u,T){var S=T&&T.biff==8||u==2?o.read_shift(2):(o.l+=u,0);return{fDialog:S&16,fBelow:S&64,fRight:S&128}}function parse_BoundSheet8(o,u,T){var S=o.read_shift(4),E=o.read_shift(1)&3,C=o.read_shift(1);switch(C){case 0:C="Worksheet";break;case 1:C="Macrosheet";break;case 2:C="Chartsheet";break;case 6:C="VBAModule";break}var _=parse_ShortXLUnicodeString(o,0,T);return _.length===0&&(_="Sheet1"),{pos:S,hs:E,dt:C,name:_}}function write_BoundSheet8(o,u){var T=!u||u.biff>=8?2:1,S=new_buf(8+T*o.name.length);S.write_shift(4,o.pos),S.write_shift(1,o.hs||0),S.write_shift(1,o.dt),S.write_shift(1,o.name.length),u.biff>=8&&S.write_shift(1,1),S.write_shift(T*o.name.length,o.name,u.biff<8?"sbcs":"utf16le");var E=S.slice(0,S.l);return E.l=S.l,E}function parse_SST(o,u){for(var T=o.l+u,S=o.read_shift(4),E=o.read_shift(4),C=[],_=0;_!=E&&o.l<T;++_)C.push(parse_XLUnicodeRichExtendedString(o));return C.Count=S,C.Unique=E,C}function write_SST(o,u){var T=new_buf(8);T.write_shift(4,o.Count),T.write_shift(4,o.Unique);for(var S=[],E=0;E<o.length;++E)S[E]=write_XLUnicodeRichExtendedString(o[E]);var C=bconcat([T].concat(S));return C.parts=[T.length].concat(S.map(function(_){return _.length})),C}function parse_ExtSST(o,u){var T={};return T.dsst=o.read_shift(2),o.l+=u-2,T}function parse_Row(o){var u={};u.r=o.read_shift(2),u.c=o.read_shift(2),u.cnt=o.read_shift(2)-u.c;var T=o.read_shift(2);o.l+=4;var S=o.read_shift(1);return o.l+=3,S&7&&(u.level=S&7),S&32&&(u.hidden=!0),S&64&&(u.hpt=T/20),u}function parse_ForceFullCalculation(o){var u=parse_frtHeader(o);if(u.type!=2211)throw new Error("Invalid Future Record "+u.type);var T=o.read_shift(4);return T!==0}function parse_RecalcId(o){return o.read_shift(2),o.read_shift(4)}function parse_DefaultRowHeight(o,u,T){var S=0;T&&T.biff==2||(S=o.read_shift(2));var E=o.read_shift(2);T&&T.biff==2&&(S=1-(E>>15),E&=32767);var C={Unsynced:S&1,DyZero:(S&2)>>1,ExAsc:(S&4)>>2,ExDsc:(S&8)>>3};return[C,E]}function parse_Window1(o){var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(2),E=o.read_shift(2),C=o.read_shift(2),_=o.read_shift(2),P=o.read_shift(2),R=o.read_shift(2),I=o.read_shift(2);return{Pos:[u,T],Dim:[S,E],Flags:C,CurTab:_,FirstTab:P,Selected:R,TabRatio:I}}function write_Window1(){var o=new_buf(18);return o.write_shift(2,0),o.write_shift(2,0),o.write_shift(2,29280),o.write_shift(2,17600),o.write_shift(2,56),o.write_shift(2,0),o.write_shift(2,0),o.write_shift(2,1),o.write_shift(2,500),o}
vendor: 6,504 bytes, line 229
229function parse_Window2(o,u,T){if(T&&T.biff>=2&&T.biff<5)return{};var S=o.read_shift(2);return{RTL:S&64}}function write_Window2(o){var u=new_buf(18),T=1718;return o&&o.RTL&&(T|=64),u.write_shift(2,T),u.write_shift(4,0),u.write_shift(4,64),u.write_shift(4,0),u.write_shift(4,0),u}function parse_Pane(){}function parse_Font(o,u,T){var S={dyHeight:o.read_shift(2),fl:o.read_shift(2)};switch(T&&T.biff||8){case 2:break;case 3:case 4:o.l+=2;break;default:o.l+=10;break}return S.name=parse_ShortXLUnicodeString(o,0,T),S}function write_Font(o,u){var T=o.name||"Arial",S=u&&u.biff==5,E=S?15+T.length:16+2*T.length,C=new_buf(E);return C.write_shift(2,o.sz*20),C.write_shift(4,0),C.write_shift(2,400),C.write_shift(4,0),C.write_shift(2,0),C.write_shift(1,T.length),S||C.write_shift(1,1),C.write_shift((S?1:2)*T.length,T,S?"sbcs":"utf16le"),C}function parse_LabelSst(o){var u=parse_XLSCell(o);return u.isst=o.read_shift(4),u}function write_LabelSst(o,u,T,S){var E=new_buf(10);return write_XLSCell(o,u,S,E),E.write_shift(4,T),E}function parse_Label(o,u,T){T.biffguess&&T.biff==2&&(T.biff=5);var S=o.l+u,E=parse_XLSCell(o);T.biff==2&&o.l++;var C=parse_XLUnicodeString(o,S-o.l,T);return E.val=C,E}function write_Label(o,u,T,S,E){var C=!E||E.biff==8,_=new_buf(8+ +C+(1+C)*T.length);return write_XLSCell(o,u,S,_),_.write_shift(2,T.length),C&&_.write_shift(1,1),_.write_shift((1+C)*T.length,T,C?"utf16le":"sbcs"),_}function parse_Format(o,u,T){var S=o.read_shift(2),E=parse_XLUnicodeString2(o,0,T);return[S,E]}function write_Format(o,u,T,S){var E=T&&T.biff==5;S||(S=new_buf(E?3+u.length:5+2*u.length)),S.write_shift(2,o),S.write_shift(E?1:2,u.length),E||S.write_shift(1,1),S.write_shift((E?1:2)*u.length,u,E?"sbcs":"utf16le");var C=S.length>S.l?S.slice(0,S.l):S;return C.l==null&&(C.l=C.length),C}var parse_BIFF2Format=parse_XLUnicodeString2;function parse_Dimensions(o,u,T){var S=o.l+u,E=T.biff==8||!T.biff?4:2,C=o.read_shift(E),_=o.read_shift(E),P=o.read_shift(2),R=o.read_shift(2);return o.l=S,{s:{r:C,c:P},e:{r:_,c:R}}}function write_Dimensions(o,u){var T=u.biff==8||!u.biff?4:2,S=new_buf(2*T+6);return S.write_shift(T,o.s.r),S.write_shift(T,o.e.r+1),S.write_shift(2,o.s.c),S.write_shift(2,o.e.c+1),S.write_shift(2,0),S}function parse_RK(o){var u=o.read_shift(2),T=o.read_shift(2),S=parse_RkRec(o);return{r:u,c:T,ixfe:S[0],rknum:S[1]}}function parse_MulRk(o,u){for(var T=o.l+u-2,S=o.read_shift(2),E=o.read_shift(2),C=[];o.l<T;)C.push(parse_RkRec(o));if(o.l!==T)throw new Error("MulRK read error");var _=o.read_shift(2);if(C.length!=_-E+1)throw new Error("MulRK length mismatch");return{r:S,c:E,C:_,rkrec:C}}function parse_MulBlank(o,u){for(var T=o.l+u-2,S=o.read_shift(2),E=o.read_shift(2),C=[];o.l<T;)C.push(o.read_shift(2));if(o.l!==T)throw new Error("MulBlank read error");var _=o.read_shift(2);if(C.length!=_-E+1)throw new Error("MulBlank length mismatch");return{r:S,c:E,C:_,ixfe:C}}function parse_CellStyleXF(o,u,T,S){var E={},C=o.read_shift(4),_=o.read_shift(4),P=o.read_shift(4),R=o.read_shift(2);return E.patternType=XLSFillPattern[P>>26],S.cellStyles&&(E.alc=C&7,E.fWrap=C>>3&1,E.alcV=C>>4&7,E.fJustLast=C>>7&1,E.trot=C>>8&255,E.cIndent=C>>16&15,E.fShrinkToFit=C>>20&1,E.iReadOrder=C>>22&2,E.fAtrNum=C>>26&1,E.fAtrFnt=C>>27&1,E.fAtrAlc=C>>28&1,E.fAtrBdr=C>>29&1,E.fAtrPat=C>>30&1,E.fAtrProt=C>>31&1,E.dgLeft=_&15,E.dgRight=_>>4&15,E.dgTop=_>>8&15,E.dgBottom=_>>12&15,E.icvLeft=_>>16&127,E.icvRight=_>>23&127,E.grbitDiag=_>>30&3,E.icvTop=P&127,E.icvBottom=P>>7&127,E.icvDiag=P>>14&127,E.dgDiag=P>>21&15,E.icvFore=R&127,E.icvBack=R>>7&127,E.fsxButton=R>>14&1),E}function parse_XF(o,u,T){var S={};return S.ifnt=o.read_shift(2),S.numFmtId=o.read_shift(2),S.flags=o.read_shift(2),S.fStyle=S.flags>>2&1,u-=6,S.data=parse_CellStyleXF(o,u,S.fStyle,T),S}function write_XF(o,u,T,S){var E=T&&T.biff==5;S||(S=new_buf(E?16:20)),S.write_shift(2,0),o.style?(S.write_shift(2,o.numFmtId||0),S.write_shift(2,65524)):(S.write_shift(2,o.numFmtId||0),S.write_shift(2,u<<4));var C=0;return o.numFmtId>0&&E&&(C|=1024),S.write_shift(4,C),S.write_shift(4,0),E||S.write_shift(4,0),S.write_shift(2,0),S}function parse_Guts(o){o.l+=4;var u=[o.read_shift(2),o.read_shift(2)];if(u[0]!==0&&u[0]--,u[1]!==0&&u[1]--,u[0]>7||u[1]>7)throw new Error("Bad Gutters: "+u.join("|"));return u}function write_Guts(o){var u=new_buf(8);return u.write_shift(4,0),u.write_shift(2,0),u.write_shift(2,0),u}function parse_BoolErr(o,u,T){var S=parse_XLSCell(o);(T.biff==2||u==9)&&++o.l;var E=parse_Bes(o);return S.val=E,S.t=E===!0||E===!1?"b":"e",S}function write_BoolErr(o,u,T,S,E,C){var _=new_buf(8);return write_XLSCell(o,u,S,_),write_Bes(T,C,_),_}function parse_Number(o,u,T){T.biffguess&&T.biff==2&&(T.biff=5);var S=parse_XLSCell(o),E=parse_Xnum(o);return S.val=E,S}function write_Number(o,u,T,S){var E=new_buf(14);return write_XLSCell(o,u,S,E),write_Xnum(T,E),E}var parse_XLHeaderFooter=parse_OptXLUnicodeString;function parse_SupBook(o,u,T){var S=o.l+u,E=o.read_shift(2),C=o.read_shift(2);if(T.sbcch=C,C==1025||C==14849)return[C,E];if(C<1||C>255)throw new Error("Unexpected SupBook type: "+C);for(var _=parse_XLUnicodeStringNoCch(o,C),P=[];S>o.l;)P.push(parse_XLUnicodeString(o));return[C,E,_,P]}function parse_ExternName(o,u,T){var S=o.read_shift(2),E,C={fBuiltIn:S&1,fWantAdvise:S>>>1&1,fWantPict:S>>>2&1,fOle:S>>>3&1,fOleLink:S>>>4&1,cf:S>>>5&1023,fIcon:S>>>15&1};return T.sbcch===14849&&(E=parse_AddinUdf(o,u-2,T)),C.body=E||o.read_shift(u-2),typeof E=="string"&&(C.Name=E),C}var XLSLblBuiltIn=["_xlnm.Consolidate_Area","_xlnm.Auto_Open","_xlnm.Auto_Close","_xlnm.Extract","_xlnm.Database","_xlnm.Criteria","_xlnm.Print_Area","_xlnm.Print_Titles","_xlnm.Recorder","_xlnm.Data_Form","_xlnm.Auto_Activate","_xlnm.Auto_Deactivate","_xlnm.Sheet_Title","_xlnm._FilterDatabase"];function parse_Lbl(o,u,T){var S=o.l+u,E=o.read_shift(2),C=o.read_shift(1),_=o.read_shift(1),P=o.read_shift(T&&T.biff==2?1:2),R=0;(!T||T.biff>=5)&&(T.biff!=5&&(o.l+=2),R=o.read_shift(2),T.biff==5&&(o.l+=2),o.l+=4);var I=parse_XLUnicodeStringNoCch(o,_,T);E&32&&(I=XLSLblBuiltIn[I.charCodeAt(0)]);var L=S-o.l;T&&T.biff==2&&--L;var j=S==o.l||P===0||!(L>0)?[]:parse_NameParsedFormula(o,L,T,P);return{chKey:C,Name:I,itab:R,rgce:j}}function parse_ExternSheet(o,u,T){if(T.biff<8)return parse_BIFF5ExternSheet(o,u,T);for(var S=[],E=o.l+u,C=o.read_shift(T.biff>8?4:2);C--!==0;)S.push(parse_XTI(o,T.biff>8?12:6,T));if(o.l!=E)throw new Error("Bad ExternSheet: "+o.l+" != "+E);return S}function parse_BIFF5ExternSheet(o,u,T){o[o.l+1]==3&&o[o.l]++;var S=parse_ShortXLUnicodeString(o,u,T);
229return S.charCodeAt(0)==3?S.slice(1):S}function parse_NameCmt(o,u,T){if(T.biff<8){o.l+=u;return}var S=o.read_shift(2),E=o.read_shift(2),C=parse_XLUnicodeStringNoCch(o,S,T),_=parse_XLUnicodeStringNoCch(o,E,T);return[C,_]}function parse_ShrFmla(o,u,T){var S=parse_RefU(o);o.l++;var E=o.read_shift(1);return u-=8,[parse_SharedParsedFormula(o,u,T),E,S]}function parse_Array(o,u,T){var S=parse_Ref(o);switch(T.biff){case 2:o.l++,u-=7;break;case 3:case 4:o.l+=2,u-=8;break;default:o.l+=6,u-=12}return[S,parse_ArrayParsedFormula(o,u,T)]}function parse_MTRSettings(o){var u=o.read_shift(4)!==0,T=o.read_shift(4)!==0,S=o.read_shift(4);return[u,T,S]}function parse_NoteSh(o,u,T){if(!(T.biff<8)){var S=o.read_shift(2),E=o.read_shift(2),C=o.read_shift(2),_=o.read_shift(2),P=parse_XLUnicodeString2(o,0,T);return T.biff<8&&o.read_shift(1),[{r:S,c:E},P,_,C]}}function parse_Note(o,u,T){return parse_NoteSh(o,u,T)}function parse_MergeCells(o,u){for(var T=[],S=o.read_shift(2);S--;)T.push(parse_Ref8U(o));return T}function write_MergeCells(o){var u=new_buf(2+o.length*8);u.write_shift(2,o.length);for(var T=0;T<o.length;++T)write_Ref8U(o[T],u);return u}function parse_Obj(o,u,T){if(T&&T.biff<8)return parse_BIFF5Obj(o,u,T);var S=parse_FtCmo(o),E=parse_FtArray(o,u-22,S[1]);return{cmo:S,ft:E}}var parse_BIFF5OT={8:function(o,u){var T=o.l+u;o.l+=10;var S=o.read_shift(2);o.l+=4,o.l+=2,o.l+=2,o.l+=2,o.l+=4;var E=o.read_shift(1);return o.l+=E,o.l=T,{fmt:S}}};function parse_BIFF5Obj(o,u,T){o.l+=4;var S=o.read_shift(2),E=o.read_shift(2),C=o.read_shift(2);o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=2,o.l+=6,u-=36;var _=[];return _.push((parse_BIFF5OT[S]||parsenoop)(o,u,T)),{cmo:[E,S,C],ft:_}}function parse_TxO(o,u,T){var S=o.l,E="";try{o.l+=4;var C=(T.lastobj||{cmo:[0,0]}).cmo[1],_;[0,5,7,11,12,14].indexOf(C)==-1?o.l+=6:_=parse_ControlInfo(o,6,T);var P=o.read_shift(2);o.read_shift(2),parseuint16(o,2);var R=o.read_shift(2);o.l+=R;for(var I=1;I<o.lens.length-1;++I){if(o.l-S!=o.lens[I])throw new Error("TxO: bad continue record");var L=o[o.l],j=parse_XLUnicodeStringNoCch(o,o.lens[I+1]-o.lens[I]-1);if(E+=j,E.length>=(L?P:2*P))break}if(E.length!==P&&E.length!==P*2)throw new Error("cchText: "+P+" != "+E.length);return o.l=S+u,{t:E}}catch{return o.l=S+u,{t:E}}}function parse_HLink(o,u){var T=parse_Ref8U(o);o.l+=16;var S=parse_Hyperlink(o,u-24);return[T,S]}function write_HLink(o){var u=new_buf(24),T=decode_cell(o[0]);u.write_shift(2,T.r),u.write_shift(2,T.r),u.write_shift(2,T.c),u.write_shift(2,T.c);for(var S="d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),E=0;E<16;++E)u.write_shift(1,parseInt(S[E],16));return bconcat([u,write_Hyperlink(o[1])])}function parse_HLinkTooltip(o,u){o.read_shift(2);var T=parse_Ref8U(o),S=o.read_shift((u-10)/2,"dbcs-cont");return S=S.replace(chr0,""),[T,S]}function write_HLinkTooltip(o){var u=o[1].Tooltip,T=new_buf(10+2*(u.length+1));T.write_shift(2,2048);var S=decode_cell(o[0]);T.write_shift(2,S.r),T.write_shift(2,S.r),T.write_shift(2,S.c),T.write_shift(2,S.c);for(var E=0;E<u.length;++E)T.write_shift(2,u.charCodeAt(E));return T.write_shift(2,0),T}function parse_Country(o){var u=[0,0],T;return T=o.read_shift(2),u[0]=CountryEnum[T]||T,T=o.read_shift(2),u[1]=CountryEnum[T]||T,u}function write_Country(o){return o||(o=new_buf(4)),o.write_shift(2,1),o.write_shift(2,1),o}function parse_ClrtClient(o){for(var u=o.read_shift(2),T=[];u-- >0;)T.push(parse_LongRGB(o));return T}function parse_Palette(o){for(var u=o.read_shift(2),T=[];u-- >0;)T.push(parse_LongRGB(o));return T}function parse_XFCRC(o){o.l+=2;var u={cxfs:0,crc:0};return u.cxfs=o.read_shift(2),u.crc=o.read_shift(4),u}function parse_ColInfo(o,u,T){if(!T.cellStyles)return parsenoop(o,u);var S=T&&T.biff>=12?4:2,E=o.read_shift(S),C=o.read_shift(S),_=o.read_shift(S),P=o.read_shift(S),R=o.read_shift(2);S==2&&(o.l+=2);var I={s:E,e:C,w:_,ixfe:P,flags:R};return(T.biff>=5||!T.biff)&&(I.level=R>>8&7),I}function write_ColInfo(o,u){var T=new_buf(12);T.write_shift(2,u),T.write_shift(2,u),T.write_shift(2,o.width*256),T.write_shift(2,0);var S=0;return o.hidden&&(S|=1),T.write_shift(1,S),S=o.level||0,T.write_shift(1,S),T.write_shift(2,0),T}function parse_Setup(o,u){var T={};return u<32||(o.l+=16,T.header=parse_Xnum(o),T.footer=parse_Xnum(o),o.l+=2),T}function parse_ShtProps(o,u,T){var S={area:!1};if(T.biff!=5)return o.l+=u,S;var E=o.read_shift(1);return o.l+=3,E&16&&(S.area=!0),S}function write_RRTabId(o){for(var u=new_buf(2*o),T=0;T<o;++T)u.write_shift(2,T+1);return u}
vendor: 40,623 bytes, lines 229-243
229var parse_Blank=parse_XLSCell,parse_Scl=parseuint16a,parse_String=parse_XLUnicodeString;function parse_ImData(o){var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(4),E={fmt:u,env:T,len:S,data:o.slice(o.l,o.l+S)};return o.l+=S,E}function parse_BIFF2STR(o,u,T){T.biffguess&&T.biff==5&&(T.biff=2);var S=parse_XLSCell(o);++o.l;var E=parse_XLUnicodeString2(o,u-7,T);return S.t="str",S.val=E,S}function parse_BIFF2NUM(o){var u=parse_XLSCell(o);++o.l;var T=parse_Xnum(o);return u.t="n",u.val=T,u}function write_BIFF2NUM(o,u,T){var S=new_buf(15);return write_BIFF2Cell(S,o,u),S.write_shift(8,T,"f"),S}function parse_BIFF2INT(o){var u=parse_XLSCell(o);++o.l;var T=o.read_shift(2);return u.t="n",u.val=T,u}function write_BIFF2INT(o,u,T){var S=new_buf(9);return write_BIFF2Cell(S,o,u),S.write_shift(2,T),S}function parse_BIFF2STRING(o){var u=o.read_shift(1);return u===0?(o.l++,""):o.read_shift(u,"sbcs-cont")}function parse_BIFF2FONTXTRA(o,u){o.l+=6,o.l+=2,o.l+=1,o.l+=3,o.l+=1,o.l+=u-13}function parse_RString(o,u,T){var S=o.l+u,E=parse_XLSCell(o),C=o.read_shift(2),_=parse_XLUnicodeStringNoCch(o,C,T);return o.l=S,E.t="str",E.val=_,E}var DBF_SUPPORTED_VERSIONS=[2,3,48,49,131,139,140,245],DBF=function(){var o={1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127,8:865,9:437,10:850,11:437,13:437,14:850,15:437,16:850,17:437,18:850,19:932,20:850,21:437,22:850,23:865,24:437,25:437,26:850,27:437,28:863,29:850,31:852,34:852,35:852,36:860,37:850,38:866,55:850,64:852,77:936,78:949,79:950,80:874,87:1252,88:1252,89:1252,108:863,134:737,135:852,136:857,204:1257,255:16969},u=evert({1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127});function T(P,R){var I=[],L=new_raw_buf(1);switch(R.type){case"base64":L=s2a(Base64_decode(P));break;case"binary":L=s2a(P);break;case"buffer":case"array":L=P;break}prep_blob(L,0);var j=L.read_shift(1),M=!!(j&136),D=!1,F=!1;switch(j){case 2:break;case 3:break;case 48:D=!0,M=!0;break;case 49:D=!0,M=!0;break;case 131:break;case 139:break;case 140:F=!0;break;case 245:break;default:throw new Error("DBF Unsupported Version: "+j.toString(16))}var N=0,G=521;j==2&&(N=L.read_shift(2)),L.l+=3,j!=2&&(N=L.read_shift(4)),N>1048576&&(N=1e6),j!=2&&(G=L.read_shift(2));var B=L.read_shift(2),H=R.codepage||1252;j!=2&&(L.l+=16,L.read_shift(1),L[L.l]!==0&&(H=o[L[L.l]]),L.l+=1,L.l+=2),F&&(L.l+=36);for(var O=[],V={},U=Math.min(L.length,j==2?521:G-10-(D?264:0)),W=F?32:11;L.l<U&&L[L.l]!=13;)switch(V={},V.name=$cptable.utils.decode(H,L.slice(L.l,L.l+W)).replace(/[\u0000\r\n].*$/g,""),L.l+=W,V.type=String.fromCharCode(L.read_shift(1)),j!=2&&!F&&(V.offset=L.read_shift(4)),V.len=L.read_shift(1),j==2&&(V.offset=L.read_shift(2)),V.dec=L.read_shift(1),V.name.length&&O.push(V),j!=2&&(L.l+=F?13:14),V.type){case"B":(!D||V.len!=8)&&R.WTF&&console.log("Skipping "+V.name+":"+V.type);break;case"G":case"P":R.WTF&&console.log("Skipping "+V.name+":"+V.type);break;case"+":case"0":case"@":case"C":case"D":case"F":case"I":case"L":case"M":case"N":case"O":case"T":case"Y":break;default:throw new Error("Unknown Field Type: "+V.type)}if(L[L.l]!==13&&(L.l=G-1),L.read_shift(1)!==13)throw new Error("DBF Terminator not found "+L.l+" "+L[L.l]);L.l=G;var K=0,Y=0;for(I[0]=[],Y=0;Y!=O.length;++Y)I[0][Y]=O[Y].name;for(;N-- >0;){if(L[L.l]===42){L.l+=B;continue}for(++L.l,I[++K]=[],Y=0,Y=0;Y!=O.length;++Y){var ee=L.slice(L.l,L.l+O[Y].len);L.l+=O[Y].len,prep_blob(ee,0);var oe=$cptable.utils.decode(H,ee);switch(O[Y].type){case"C":oe.trim().length&&(I[K][Y]=oe.replace(/\s+$/,""));break;case"D":oe.length===8?I[K][Y]=new Date(+oe.slice(0,4),+oe.slice(4,6)-1,+oe.slice(6,8)):I[K][Y]=oe;break;case"F":I[K][Y]=parseFloat(oe.trim());break;case"+":case"I":I[K][Y]=F?ee.read_shift(-4,"i")^2147483648:ee.read_shift(4,"i");break;case"L":switch(oe.trim().toUpperCase()){case"Y":case"T":I[K][Y]=!0;break;case"N":case"F":I[K][Y]=!1;break;case"":case"?":break;default:throw new Error("DBF Unrecognized L:|"+oe+"|")}break;case"M":if(!M)throw new Error("DBF Unexpected MEMO for type "+j.toString(16));I[K][Y]="##MEMO##"+(F?parseInt(oe.trim(),10):ee.read_shift(4));break;case"N":oe=oe.replace(/\u0000/g,"").trim(),oe&&oe!="."&&(I[K][Y]=+oe||0);break;case"@":I[K][Y]=new Date(ee.read_shift(-8,"f")-621356832e5);break;case"T":I[K][Y]=new Date((ee.read_shift(4)-2440588)*864e5+ee.read_shift(4));break;case"Y":I[K][Y]=ee.read_shift(4,"i")/1e4+ee.read_shift(4,"i")/1e4*Math.pow(2,32);break;case"O":I[K][Y]=-ee.read_shift(-8,"f");break;case"B":if(D&&O[Y].len==8){I[K][Y]=ee.read_shift(8,"f");break}case"G":case"P":ee.l+=O[Y].len;break;case"0":if(O[Y].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+O[Y].type)}}}if(j!=2&&L.l<L.length&&L[L.l++]!=26)throw new Error("DBF EOF Marker missing "+(L.l-1)+" of "+L.length+" "+L[L.l-1].toString(16));return R&&R.sheetRows&&(I=I.slice(0,R.sheetRows)),R.DBF=O,I}function S(P,R){var I=R||{};I.dateNF||(I.dateNF="yyyymmdd");var L=aoa_to_sheet(T(P,I),I);return L["!cols"]=I.DBF.map(function(j){return{wch:j.len,DBF:j}}),delete I.DBF,L}function E(P,R){try{return sheet_to_workbook(S(P,R),R)}catch(I){if(R&&R.WTF)throw I}return{SheetNames:[],Sheets:{}}}var C={B:8,C:250,L:1,D:8,"?":0,"":0};function _(P,R){var I=R||{};if(+I.codepage>=0&&set_cp(+I.codepage),I.type=="string")throw new Error("Cannot write DBF to JS string");var L=buf_array(),j=sheet_to_json(P,{header:1,raw:!0,cellDates:!0}),M=j[0],D=j.slice(1),F=P["!cols"]||[],N=0,G=0,B=0,H=1;for(N=0;N<M.length;++N){if(((F[N]||{}).DBF||{}).name){M[N]=F[N].DBF.name,++B;continue}if(M[N]!=null){if(++B,typeof M[N]=="number"&&(M[N]=M[N].toString(10)),typeof M[N]!="string")throw new Error("DBF Invalid column name "+M[N]+" |"+typeof M[N]+"|");if(M.indexOf(M[N])!==N){for(G=0;G<1024;++G)if(M.indexOf(M[N]+"_"+G)==-1){M[N]+="_"+G;break}}}}var O=safe_decode_range(P["!ref"]),V=[],U=[],W=[];for(N=0;N<=O.e.c-O.s.c;++N){var K="",Y="",ee=0,oe=[];for(G=0;G<D.length;++G)D[G][N]!=null&&oe.push(D[G][N]);if(oe.length==0||M[N]==null){V[N]="?";continue}for(G=0;G<oe.length;++G){switch(typeof oe[G]){case"number":Y="B";break;case"string":Y="C";break;case"boolean":Y="L";break;case"object":Y=oe[G]instanceof Date?"D":"C";break;default:Y="C"}ee=Math.max(ee,String(oe[G]).length),K=K&&K!=Y?"C":Y}ee>250&&(ee=250),Y=((F[N]||{}).DBF||{}).type,Y=="C"&&F[N].DBF.len>ee&&(ee=F[N].DBF.len),K=="B"&&Y=="N"&&(K="N",W[N]=F[N].DBF.dec,ee=F[N].DBF.len),U[N]=K=="C"||Y=="N"?ee:C[K]||0,H+=U[N],V[N]=K}var se=L.next(32);for(se.write_shift(4,318902576),se.write_shift(4,D.length),se.write_shift(2,296+32*B),se.write_shift(2,H),N=0;N<4;++N)se.write_shift(4,0);for(se.write_shift(4,0|(+u[current_ansi]||3)<<8),N=0,G=0;N<M.length;++N)if(M[N]!=null){var Q=L.next(32),ie=(M[N].slice(-10)+"\0\0\0\0\0\0\0\0\0\0\0").slice(0,11);Q.write_shift(1,ie,"sbcs"),Q.write_shift(1,V[N]=="?"?"C":V[N],"sbcs"),Q.write_shift(4,G),Q.write_shift(1,U[N]||C[V[N]]||0),Q.write_shift(1,W[N]||0),Q.write_shift(1,2),Q.write_shift(4,0),Q.write_shift(1,0),Q.write_shift(4,0),Q.write_shift(4,0),G+=U[N]||C[V[N]]||0}var ae=L.next(264);for(ae.write_shift(4,13),N=0;N<65;++N)ae.write_shift(4,0);for(N=0;N<D.length;++N){var re=L.next(H);for(re.write_shift(1,0),G=0;G<M.length;++G)if(M[G]!=null)switch(V[G]){case"L":re.write_shift(1,D[N][G]==null?63:D[N][G]?84:70);break;case"B":re.write_shift(8,D[N][G]||0,"f");break;case"N":var J="0";for(typeof D[N][G]=="number"&&(J=D[N][G].toFixed(W[G]||0)),B=0;B<U[G]-J.length;++B)re.write_shift(1,32);re.write_shift(1,J,"sbcs");break;case"D":D[N][G]?(re.write_shift(4,("0000"+D[N][G].getFullYear()).slice(-4),"sbcs"),re.write_shift(2,("00"+(D[N][G].getMonth()+1)).slice(-2),"sbcs"),re.write_shift(2,("00"+D[N][G].getDate()).slice(-2),"sbcs")):re.write_shift(8,"00000000","sbcs");break;case"C":var te=String(D[N][G]!=null?D[N][G]:"").slice(0,U[G]);for(re.write_shift(1,te,"sbcs"),B=0;B<U[G]-te.length;++B)re.write_shift(1,32);break}}return L.next(1).write_shift(1,26),L.end()}return{to_workbook:E,to_sheet:S,from_sheet:_}}(),SYLK=function(){var o={AA:"Ã",BA:"Ã",CA:"Ã",DA:195,HA:"Ã",JA:197,AE:"Ã",BE:"Ã",CE:"Ã",HE:"Ã",AI:"Ã",BI:"Ã",CI:"Ã",HI:"Ã",AO:"Ã",BO:"Ã",CO:"Ã",DO:213,HO:"Ã",AU:"Ã",BU:"Ã",CU:"Ã",HU:"Ã",Aa:"à ",Ba:"á",Ca:"â",Da:227,Ha:"ä",Ja:229,Ae:"è",Be:"é",Ce:"ê",He:"ë",Ai:"ì",Bi:"Ã",Ci:"î",Hi:"ï",Ao:"ò",Bo:"ó",Co:"ô",Do:245,Ho:"ö",Au:"ù",Bu:"ú",Cu:"û",Hu:"ü",KC:"Ã",Kc:"ç",q:"æ",z:"Å",a:"Ã",j:"Å",DN:209,Dn:241,Hy:255,S:169,c:170,R:174,"B ":180,0:176,1:177,2:178,3:179,5:181,6:182,7:183,Q:185,k:186,b:208,i:216,l:222,s:240,y:248,"!":161,'"':162,"#":163,"(":164,"%":165,"'":167,"H ":168,"+":171,";":187,"<":188,"=":189,">":190,"?":191,"{":223},u=new RegExp("\x1BN("+keys(o).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm"),T=function(M,D){var F=o[D];return typeof F=="number"?_getansi(F):F},S=function(M,D,F){var N=D.charCodeAt(0)-32<<4|F.charCodeAt(0)-48;return N==59?M:_getansi(N)};o["|"]=254;function E(M,D){switch(D.type){case"base64":return C(Base64_decode(M),D);case"binary":return C(M,D);case"buffer":return C(has_buf&&Buffer.isBuffer(M)?M.toString("binary"):a2s(M),D);case"array":return C(cc2str(M),D)}throw new Error("Unrecognized type "+D.type)}function C(M,D){var F=M.split(/[\n\r]+/),N=-1,G=-1,B=0,H=0,O=[],V=[],U=null,W={},K=[],Y=[],ee=[],oe=0,se;for(+D.codepage>=0&&set_cp(+D.codepage);B!==F.length;++B){oe=0;var Q=F[B].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,S).replace(u,T),ie=Q.replace(/;;/g,"\0").split(";").map(function(fe){return fe.replace(/\u0000/g,";")}),ae=ie[0],re;if(Q.length>0)switch(ae){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":ie[1].charAt(0)=="P"&&V.push(Q.slice(3).replace(/;;/g,";"));break;case"C":var J=!1,te=!1,Z=!1,X=!1,de=-1,he=-1;for(H=1;H<ie.length;++H)switch(ie[H].charAt(0)){case"A":break;case"X":G=parseInt(ie[H].slice(1))-1,te=!0;break;case"Y":for(N=parseInt(ie[H].slice(1))-1,te||(G=0),se=O.length;se<=N;++se)O[se]=[];break;case"K":re=ie[H].slice(1),re.charAt(0)==='"'?re=re.slice(1,re.length-1):re==="TRUE"?re=!0:re==="FALSE"?re=!1:isNaN(fuzzynum(re))?isNaN(fuzzydate(re).getDate())||(re=parseDate(re)):(re=fuzzynum(re),U!==null&&fmt_is_date(U)&&(re=numdate(re))),typeof $cptable<"u"&&typeof re=="string"&&(D||{}).type!="string"&&(D||{}).codepage&&(re=$cptable.utils.decode(D.codepage,re)),J=!0;break;case"E":X=!0;var ne=rc_to_a1(ie[H].slice(1),{r:N,c:G});O[N][G]=[O[N][G],ne];break;case"S":Z=!0,O[N][G]=[O[N][G],"S5S"];break;case"G":break;case"R":de=parseInt(ie[H].slice(1))-1;break;case"C":he=parseInt(ie[H].slice(1))-1;break;default:if(D&&D.WTF)throw new Error("SYLK bad record "+Q)}if(J&&(O[N][G]&&O[N][G].length==2?O[N][G][0]=re:O[N][G]=re,U=null),Z){if(X)throw new Error("SYLK shared formula cannot have own formula");var ue=de>-1&&O[de][he];if(!ue||!ue[1])throw new Error("SYLK shared formula cannot find base");O[N][G][1]=shift_formula_str(ue[1],{r:N-de,c:G-he})}break;case"F":var ce=0;for(H=1;H<ie.length;++H)switch(ie[H].charAt(0)){case"X":G=parseInt(ie[H].slice(1))-1,++ce;break;case"Y":for(N=parseInt(ie[H].slice(1))-1,se=O.length;se<=N;++se)O[se]=[];break;case"M":oe=parseInt(ie[H].slice(1))/20;break;case"F":break;case"G":break;case"P":U=V[parseInt(ie[H].slice(1))];break;case"S":break;case"D":break;case"N":break;case"W":for(ee=ie[H].slice(1).split(" "),se=parseInt(ee[0],10);se<=parseInt(ee[1],10);++se)oe=parseInt(ee[2],10),Y[se-1]=oe===0?{hidden:!0}:{wch:oe},process_col(Y[se-1]);break;case"C":G=parseInt(ie[H].slice(1))-1,Y[G]||(Y[G]={});break;case"R":N=parseInt(ie[H].slice(1))-1,K[N]||(K[N]={}),oe>0?(K[N].hpt=oe,K[N].hpx=pt2px(oe)):oe===0&&(K[N].hidden=!0);break;default:if(D&&D.WTF)throw new Error("SYLK bad record "+Q)}ce<1&&(U=null);break;default:if(D&&D.WTF)throw new Error("SYLK bad record "+Q)}}return K.length>0&&(W["!rows"]=K),Y.length>0&&(W["!cols"]=Y),D&&D.sheetRows&&(O=O.slice(0,D.sheetRows)),[O,W]}function _(M,D){var F=E(M,D),N=F[0],G=F[1],B=aoa_to_sheet(N,D);return keys(G).forEach(function(H){B[H]=G[H]}),B}function P(M,D){return sheet_to_workbook(_(M,D),D)}function R(M,D,F,N){var G="C;Y"+(F+1)+";X"+(N+1)+";K";switch(M.t){case"n":G+=M.v||0,M.f&&!M.F&&(G+=";E"+a1_to_rc(M.f,{r:F,c:N}));break;case"b":G+=M.v?"TRUE":"FALSE";break;case"e":G+=M.w||M.v;break;case"d":G+='"'+(M.w||M.v)+'"';break;case"s":G+='"'+M.v.replace(/"/g,"").replace(/;/g,";;")+'"';break}return G}function I(M,D){D.forEach(function(F,N){var G="F;W"+(N+1)+" "+(N+1)+" ";F.hidden?G+="0":(typeof F.width=="number"&&!F.wpx&&(F.wpx=width2px(F.width)),typeof F.wpx=="number"&&!F.wch&&(F.wch=px2char(F.wpx)),typeof F.wch=="number"&&(G+=Math.round(F.wch))),G.charAt(G.length-1)!=" "&&M.push(G)})}function L(M,D){D.forEach(function(F,N){var G="F;";F.hidden?G+="M0;":F.hpt?G+="M"+20*F.hpt+";":F.hpx&&(G+="M"+20*px2pt(F.hpx)+";"),G.length>2&&M.push(G+"R"+(N+1))})}function j(M,D){var F=["ID;PWXL;N;E"],N=[],G=safe_decode_range(M["!ref"]),B,H=Array.isArray(M),O=`\r 230`;F.push("P;PGeneral"),F.push("F;P0;DG0G8;M255"),M["!cols"]&&I(F,M["!cols"]),M["!rows"]&&L(F,M["!rows"]),F.push("B;Y"+(G.e.r-G.s.r+1)+";X"+(G.e.c-G.s.c+1)+";D"+[G.s.c,G.s.r,G.e.c,G.e.r].join(" "));for(var V=G.s.r;V<=G.e.r;++V)for(var U=G.s.c;U<=G.e.c;++U){var W=encode_cell({r:V,c:U});B=H?(M[V]||[])[U]:M[W],!(!B||B.v==null&&(!B.f||B.F))&&N.push(R(B,M,V,U))}return F.join(O)+O+N.join(O)+O+"E"+O}return{to_workbook:P,to_sheet:_,from_sheet:j}}(),DIF=function(){function o(C,_){switch(_.type){case"base64":return u(Base64_decode(C),_);case"binary":return u(C,_);case"buffer":return u(has_buf&&Buffer.isBuffer(C)?C.toString("binary"):a2s(C),_);case"array":return u(cc2str(C),_)}throw new Error("Unrecognized type "+_.type)}function u(C,_){for(var P=C.split(` 231`),R=-1,I=-1,L=0,j=[];L!==P.length;++L){if(P[L].trim()==="BOT"){j[++R]=[],I=0;continue}if(!(R<0)){var M=P[L].trim().split(","),D=M[0],F=M[1];++L;for(var N=P[L]||"";(N.match(/["]/g)||[]).length&1&&L<P.length-1;)N+=` 232`+P[++L];switch(N=N.trim(),+D){case-1:if(N==="BOT"){j[++R]=[],I=0;continue}else if(N!=="EOD")throw new Error("Unrecognized DIF special command "+N);break;case 0:N==="TRUE"?j[R][I]=!0:N==="FALSE"?j[R][I]=!1:isNaN(fuzzynum(F))?isNaN(fuzzydate(F).getDate())?j[R][I]=F:j[R][I]=parseDate(F):j[R][I]=fuzzynum(F),++I;break;case 1:N=N.slice(1,N.length-1),N=N.replace(/""/g,'"'),N&&N.match(/^=".*"$/)&&(N=N.slice(2,-1)),j[R][I++]=N!==""?N:null;break}if(N==="EOD")break}}return _&&_.sheetRows&&(j=j.slice(0,_.sheetRows)),j}function T(C,_){return aoa_to_sheet(o(C,_),_)}function S(C,_){return sheet_to_workbook(T(C,_),_)}var E=function(){var C=function(R,I,L,j,M){R.push(I),R.push(L+","+j),R.push('"'+M.replace(/"/g,'""')+'"')},_=function(R,I,L,j){R.push(I+","+L),R.push(I==1?'"'+j.replace(/"/g,'""')+'"':j)};return function(R){var I=[],L=safe_decode_range(R["!ref"]),j,M=Array.isArray(R);C(I,"TABLE",0,1,"sheetjs"),C(I,"VECTORS",0,L.e.r-L.s.r+1,""),C(I,"TUPLES",0,L.e.c-L.s.c+1,""),C(I,"DATA",0,0,"");for(var D=L.s.r;D<=L.e.r;++D){_(I,-1,0,"BOT");for(var F=L.s.c;F<=L.e.c;++F){var N=encode_cell({r:D,c:F});if(j=M?(R[D]||[])[F]:R[N],!j){_(I,1,0,"");continue}switch(j.t){case"n":var G=j.w;!G&&j.v!=null&&(G=j.v),G==null?j.f&&!j.F?_(I,1,0,"="+j.f):_(I,1,0,""):_(I,0,G,"V");break;case"b":_(I,0,j.v?1:0,j.v?"TRUE":"FALSE");break;case"s":_(I,1,0,isNaN(j.v)?j.v:'="'+j.v+'"');break;case"d":j.w||(j.w=SSF_format(j.z||table_fmt[14],datenum(parseDate(j.v)))),_(I,0,j.w,"V");break;default:_(I,1,0,"")}}}_(I,-1,0,"EOD");var B=`\r 233`,H=I.join(B);return H}}();return{to_workbook:S,to_sheet:T,from_sheet:E}}(),ETH=function(){function o(j){return j.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,` 234`)}function u(j){return j.replace(/\\/g,"\\b").replace(/:/g,"\\c").replace(/\n/g,"\\n")}function T(j,M){for(var D=j.split(` 235`),F=-1,N=-1,G=0,B=[];G!==D.length;++G){var H=D[G].trim().split(":");if(H[0]==="cell"){var O=decode_cell(H[1]);if(B.length<=O.r)for(F=B.length;F<=O.r;++F)B[F]||(B[F]=[]);switch(F=O.r,N=O.c,H[2]){case"t":B[F][N]=o(H[3]);break;case"v":B[F][N]=+H[3];break;case"vtf":var V=H[H.length-1];case"vtc":switch(H[3]){case"nl":B[F][N]=!!+H[4];break;default:B[F][N]=+H[4];break}H[2]=="vtf"&&(B[F][N]=[B[F][N],V])}}}return M&&M.sheetRows&&(B=B.slice(0,M.sheetRows)),B}function S(j,M){return aoa_to_sheet(T(j,M),M)}function E(j,M){return sheet_to_workbook(S(j,M),M)}var C=["socialcalc:version:1.5","MIME-Version: 1.0","Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave"].join(` 236`),_=["--SocialCalcSpreadsheetControlSave","Content-type: text/plain; charset=UTF-8"].join(` 237`)+` 238`,P=["# SocialCalc Spreadsheet Control Save","part:sheet"].join(` 239`),R="--SocialCalcSpreadsheetControlSave--";function I(j){if(!j||!j["!ref"])return"";for(var M=[],D=[],F,N="",G=decode_range(j["!ref"]),B=Array.isArray(j),H=G.s.r;H<=G.e.r;++H)for(var O=G.s.c;O<=G.e.c;++O)if(N=encode_cell({r:H,c:O}),F=B?(j[H]||[])[O]:j[N],!(!F||F.v==null||F.t==="z")){switch(D=["cell",N,"t"],F.t){case"s":case"str":D.push(u(F.v));break;case"n":F.f?(D[2]="vtf",D[3]="n",D[4]=F.v,D[5]=u(F.f)):(D[2]="v",D[3]=F.v);break;case"b":D[2]="vt"+(F.f?"f":"c"),D[3]="nl",D[4]=F.v?"1":"0",D[5]=u(F.f||(F.v?"TRUE":"FALSE"));break;case"d":var V=datenum(parseDate(F.v));D[2]="vtc",D[3]="nd",D[4]=""+V,D[5]=F.w||SSF_format(F.z||table_fmt[14],V);break;case"e":continue}M.push(D.join(":"))}return M.push("sheet:c:"+(G.e.c-G.s.c+1)+":r:"+(G.e.r-G.s.r+1)+":tvf:1"),M.push("valueformat:1:text-wiki"),M.join(` 240`)}function L(j){return[C,_,P,_,I(j),R].join(` 241`)}return{to_workbook:E,to_sheet:S,from_sheet:L}}(),PRN=function(){function o(L,j,M,D,F){F.raw?j[M][D]=L:L===""||(L==="TRUE"?j[M][D]=!0:L==="FALSE"?j[M][D]=!1:isNaN(fuzzynum(L))?isNaN(fuzzydate(L).getDate())?j[M][D]=L:j[M][D]=parseDate(L):j[M][D]=fuzzynum(L))}function u(L,j){var M=j||{},D=[];if(!L||L.length===0)return D;for(var F=L.split(/[\r\n]/),N=F.length-1;N>=0&&F[N].length===0;)--N;for(var G=10,B=0,H=0;H<=N;++H)B=F[H].indexOf(" "),B==-1?B=F[H].length:B++,G=Math.max(G,B);for(H=0;H<=N;++H){D[H]=[];var O=0;for(o(F[H].slice(0,G).trim(),D,H,O,M),O=1;O<=(F[H].length-G)/10+1;++O)o(F[H].slice(G+(O-1)*10,G+O*10).trim(),D,H,O,M)}return M.sheetRows&&(D=D.slice(0,M.sheetRows)),D}var T={44:",",9:" ",59:";",124:"|"},S={44:3,9:2,59:1,124:0};function E(L){for(var j={},M=!1,D=0,F=0;D<L.length;++D)(F=L.charCodeAt(D))==34?M=!M:!M&&F in T&&(j[F]=(j[F]||0)+1);F=[];for(D in j)Object.prototype.hasOwnProperty.call(j,D)&&F.push([j[D],D]);if(!F.length){j=S;for(D in j)Object.prototype.hasOwnProperty.call(j,D)&&F.push([j[D],D])}return F.sort(function(N,G){return N[0]-G[0]||S[N[1]]-S[G[1]]}),T[F.pop()[1]]||44}function C(L,j){var M=j||{},D="",F=M.dense?[]:{},N={s:{c:0,r:0},e:{c:0,r:0}};L.slice(0,4)=="sep="?L.charCodeAt(5)==13&&L.charCodeAt(6)==10?(D=L.charAt(4),L=L.slice(7)):L.charCodeAt(5)==13||L.charCodeAt(5)==10?(D=L.charAt(4),L=L.slice(6)):D=E(L.slice(0,1024)):M&&M.FS?D=M.FS:D=E(L.slice(0,1024));var G=0,B=0,H=0,O=0,V=0,U=D.charCodeAt(0),W=!1,K=0,Y=L.charCodeAt(0);L=L.replace(/\r\n/mg,` 242`);var ee=M.dateNF!=null?dateNF_regex(M.dateNF):null;function oe(){var se=L.slice(O,V),Q={};if(se.charAt(0)=='"'&&se.charAt(se.length-1)=='"'&&(se=se.slice(1,-1).replace(/""/g,'"')),se.length===0)Q.t="z";else if(M.raw)Q.t="s",Q.v=se;else if(se.trim().length===0)Q.t="s",Q.v=se;else if(se.charCodeAt(0)==61)se.charCodeAt(1)==34&&se.charCodeAt(se.length-1)==34?(Q.t="s",Q.v=se.slice(2,-1).replace(/""/g,'"')):fuzzyfmla(se)?(Q.t="n",Q.f=se.slice(1)):(Q.t="s",Q.v=se);else if(se=="TRUE")Q.t="b",Q.v=!0;else if(se=="FALSE")Q.t="b",Q.v=!1;else if(!isNaN(H=fuzzynum(se)))Q.t="n",M.cellText!==!1&&(Q.w=se),Q.v=H;else if(!isNaN(fuzzydate(se).getDate())||ee&&se.match(ee)){Q.z=M.dateNF||table_fmt[14];var ie=0;ee&&se.match(ee)&&(se=dateNF_fix(se,M.dateNF,se.match(ee)||[]),ie=1),M.cellDates?(Q.t="d",Q.v=parseDate(se,ie)):(Q.t="n",Q.v=datenum(parseDate(se,ie))),M.cellText!==!1&&(Q.w=SSF_format(Q.z,Q.v instanceof Date?datenum(Q.v):Q.v)),M.cellNF||delete Q.z}else Q.t="s",Q.v=se;if(Q.t=="z"||(M.dense?(F[G]||(F[G]=[]),F[G][B]=Q):F[encode_cell({c:B,r:G})]=Q),O=V+1,Y=L.charCodeAt(O),N.e.c<B&&(N.e.c=B),N.e.r<G&&(N.e.r=G),K==U)++B;else if(B=0,++G,M.sheetRows&&M.sheetRows<=G)return!0}e:for(;V<L.length;++V)switch(K=L.charCodeAt(V)){case 34:Y===34&&(W=!W);break;case U:case 10:case 13:if(!W&&oe())break e;break}return V-O>0&&oe(),F["!ref"]=encode_range(N),F}function _(L,j){return!(j&&j.PRN)||j.FS||L.slice(0,4)=="sep="||L.indexOf(" ")>=0||L.indexOf(",")>=0||L.indexOf(";")>=0?C(L,j):aoa_to_sheet(u(L,j),j)}function P(L,j){var M="",D=j.type=="string"?[0,0,0,0]:firstbyte(L,j);switch(j.type){case"base64":M=Base64_decode(L);break;case"binary":M=L;break;case"buffer":j.codepage==65001?M=L.toString("utf8"):j.codepage&&typeof $cptable<"u"?M=$cptable.utils.decode(j.codepage,L):M=has_buf&&Buffer.isBuffer(L)?L.toString("binary"):a2s(L);break;case"array":M=cc2str(L);break;case"string":M=L;break;default:throw new Error("Unrecognized type "+j.type)}return D[0]==239&&D[1]==187&&D[2]==191?M=utf8read(M.slice(3)):j.type!="string"&&j.type!="buffer"&&j.codepage==65001?M=utf8read(M):j.type=="binary"&&typeof $cptable<"u"&&j.codepage&&(M=$cptable.utils.decode(j.codepage,$cptable.utils.encode(28591,M))),M.slice(0,19)=="socialcalc:version:"?ETH.to_sheet(j.type=="string"?M:utf8read(M),j):_(M,j)}function R(L,j){return sheet_to_workbook(P(L,j),j)}function I(L){for(var j=[],M=safe_decode_range(L["!ref"]),D,F=Array.isArray(L),N=M.s.r;N<=M.e.r;++N){for(var G=[],B=M.s.c;B<=M.e.c;++B){var H=encode_cell({r:N,c:B});if(D=F?(L[N]||[])[B]:L[H],!D||D.v==null){G.push(" ");continue}for(var O=(D.w||(format_cell(D),D.w)||"").slice(0,10);O.length<10;)O+=" ";G.push(O+(B===0?" ":""))}j.push(G.join(""))}return j.join(` 243`)}return{to_workbook:R,to_sheet:P,from_sheet:I}}();function read_wb_ID(o,u){var T=u||{},S=!!T.WTF;T.WTF=!0;try{var E=SYLK.to_workbook(o,T);return T.WTF=S,E}catch(C){if(T.WTF=S,!C.message.match(/SYLK bad record ID/)&&S)throw C;return PRN.to_workbook(o,u)}}var WK_=function(){function o(ne,ue,ce){if(ne){prep_blob(ne,ne.l||0);for(var fe=ce.Enum||de;ne.l<ne.length;){var ve=ne.read_shift(2),Te=fe[ve]||fe[65535],Se=ne.read_shift(2),ke=ne.l+Se,we=Te.f&&Te.f(ne,Se,ce);if(ne.l=ke,ue(we,Te,ve))return}}}function u(ne,ue){switch(ue.type){case"base64":return T(s2a(Base64_decode(ne)),ue);case"binary":return T(s2a(ne),ue);case"buffer":case"array":return T(ne,ue)}throw"Unsupported type "+ue.type}function T(ne,ue){if(!ne)return ne;var ce=ue||{},fe=ce.dense?[]:{},ve="Sheet1",Te="",Se=0,ke={},we=[],Le=[],pe={s:{r:0,c:0},e:{r:0,c:0}},Me=ce.sheetRows||0;if(ne[2]==0&&(ne[3]==8||ne[3]==9)&&ne.length>=16&&ne[14]==5&&ne[15]===108)throw new Error("Unsupported Works 3 for Mac file");if(ne[2]==2)ce.Enum=de,o(ne,function(Ie,Xe,et){switch(et){case 0:ce.vers=Ie,Ie>=4096&&(ce.qpro=!0);break;case 6:pe=Ie;break;case 204:Ie&&(Te=Ie);break;case 222:Te=Ie;break;case 15:case 51:ce.qpro||(Ie[1].v=Ie[1].v.slice(1));case 13:case 14:case 16:et==14&&(Ie[2]&112)==112&&(Ie[2]&15)>1&&(Ie[2]&15)<15&&(Ie[1].z=ce.dateNF||table_fmt[14],ce.cellDates&&(Ie[1].t="d",Ie[1].v=numdate(Ie[1].v))),ce.qpro&&Ie[3]>Se&&(fe["!ref"]=encode_range(pe),ke[ve]=fe,we.push(ve),fe=ce.dense?[]:{},pe={s:{r:0,c:0},e:{r:0,c:0}},Se=Ie[3],ve=Te||"Sheet"+(Se+1),Te="");var tt=ce.dense?(fe[Ie[0].r]||[])[Ie[0].c]:fe[encode_cell(Ie[0])];if(tt){tt.t=Ie[1].t,tt.v=Ie[1].v,Ie[1].z!=null&&(tt.z=Ie[1].z),Ie[1].f!=null&&(tt.f=Ie[1].f);break}ce.dense?(fe[Ie[0].r]||(fe[Ie[0].r]=[]),fe[Ie[0].r][Ie[0].c]=Ie[1]):fe[encode_cell(Ie[0])]=Ie[1];break}},ce);else if(ne[2]==26||ne[2]==14)ce.Enum=he,ne[2]==14&&(ce.qpro=!0,ne.l=0),o(ne,function(Ie,Xe,et){switch(et){case 204:ve=Ie;break;case 22:Ie[1].v=Ie[1].v.slice(1);case 23:case 24:case 25:case 37:case 39:case 40:if(Ie[3]>Se&&(fe["!ref"]=encode_range(pe),ke[ve]=fe,we.push(ve),fe=ce.dense?[]:{},pe={s:{r:0,c:0},e:{r:0,c:0}},Se=Ie[3],ve="Sheet"+(Se+1)),Me>0&&Ie[0].r>=Me)break;ce.dense?(fe[Ie[0].r]||(fe[Ie[0].r]=[]),fe[Ie[0].r][Ie[0].c]=Ie[1]):fe[encode_cell(Ie[0])]=Ie[1],pe.e.c<Ie[0].c&&(pe.e.c=Ie[0].c),pe.e.r<Ie[0].r&&(pe.e.r=Ie[0].r);break;case 27:Ie[14e3]&&(Le[Ie[14e3][0]]=Ie[14e3][1]);break;case 1537:Le[Ie[0]]=Ie[1],Ie[0]==Se&&(ve=Ie[1]);break}},ce);else throw new Error("Unrecognized LOTUS BOF "+ne[2]);if(fe["!ref"]=encode_range(pe),ke[Te||ve]=fe,we.push(Te||ve),!Le.length)return{SheetNames:we,Sheets:ke};for(var Pe={},Ue=[],qe=0;qe<Le.length;++qe)ke[we[qe]]?(Ue.push(Le[qe]||we[qe]),Pe[Le[qe]]=ke[Le[qe]]||ke[we[qe]]):(Ue.push(Le[qe]),Pe[Le[qe]]={"!ref":"A1"});return{SheetNames:Ue,Sheets:Pe}}function S(ne,ue){var ce=ue||{};if(+ce.codepage>=0&&set_cp(+ce.codepage),ce.type=="string")throw new Error("Cannot write WK1 to JS string");var fe=buf_array(),ve=safe_decode_range(ne["!ref"]),Te=Array.isArray(ne),Se=[];write_biff_rec(fe,0,C(1030)),write_biff_rec(fe,6,R(ve));for(var ke=Math.min(ve.e.r,8191),we=ve.s.r;we<=ke;++we)for(var Le=encode_row(we),pe=ve.s.c;pe<=ve.e.c;++pe){we===ve.s.r&&(Se[pe]=encode_col(pe));var Me=Se[pe]+Le,Pe=Te?(ne[we]||[])[pe]:ne[Me];if(!(!Pe||Pe.t=="z"))if(Pe.t=="n")(Pe.v|0)==Pe.v&&Pe.v>=-32768&&Pe.v<=32767?write_biff_rec(fe,13,D(we,pe,Pe.v)):write_biff_rec(fe,14,N(we,pe,Pe.v));else{var Ue=format_cell(Pe);write_biff_rec(fe,15,j(we,pe,Ue.slice(0,239)))}}return write_biff_rec(fe,1),fe.end()}function E(ne,ue){var ce=ue||{};if(+ce.codepage>=0&&set_cp(+ce.codepage),ce.type=="string")throw new Error("Cannot write WK3 to JS string");var fe=buf_array();write_biff_rec(fe,0,_(ne));for(var ve=0,Te=0;ve<ne.SheetNames.length;++ve)(ne.Sheets[ne.SheetNames[ve]]||{})["!ref"]&&write_biff_rec(fe,27,X(ne.SheetNames[ve],Te++));var Se=0;for(ve=0;ve<ne.SheetNames.length;++ve){var ke=ne.Sheets[ne.SheetNames[ve]];if(!(!ke||!ke["!ref"])){for(var we=safe_decode_range(ke["!ref"]),Le=Array.isArray(ke),pe=[],Me=Math.min(we.e.r,8191),Pe=we.s.r;Pe<=Me;++Pe)for(var Ue=encode_row(Pe),qe=we.s.c;qe<=we.e.c;++qe){Pe===we.s.r&&(pe[qe]=encode_col(qe));var Ie=pe[qe]+Ue,Xe=Le?(ke[Pe]||[])[qe]:ke[Ie];if(!(!Xe||Xe.t=="z"))if(Xe.t=="n")write_biff_rec(fe,23,oe(Pe,qe,Se,Xe.v));else{var et=format_cell(Xe);write_biff_rec(fe,22,K(Pe,qe,Se,et.slice(0,239)))}}++Se}}return write_biff_rec(fe,1),fe.end()}function C(ne){var ue=new_buf(2);return ue.write_shift(2,ne),ue}function _(ne){var ue=new_buf(26);ue.write_shift(2,4096),ue.write_shift(2,4),ue.write_shift(4,0);for(var ce=0,fe=0,ve=0,Te=0;Te<ne.SheetNames.length;++Te){var Se=ne.SheetNames[Te],ke=ne.Sheets[Se];if(!(!ke||!ke["!ref"])){++ve;var we=decode_range(ke["!ref"]);ce<we.e.r&&(ce=we.e.r),fe<we.e.c&&(fe=we.e.c)}}return ce>8191&&(ce=8191),ue.write_shift(2,ce),ue.write_shift(1,ve),ue.write_shift(1,fe),ue.write_shift(2,0),ue.write_shift(2,0),ue.write_shift(1,1),ue.write_shift(1,2),ue.write_shift(4,0),ue.write_shift(4,0),ue}function P(ne,ue,ce){var fe={s:{c:0,r:0},e:{c:0,r:0}};return ue==8&&ce.qpro?(fe.s.c=ne.read_shift(1),ne.l++,fe.s.r=ne.read_shift(2),fe.e.c=ne.read_shift(1),ne.l++,fe.e.r=ne.read_shift(2),fe):(fe.s.c=ne.read_shift(2),fe.s.r=ne.read_shift(2),ue==12&&ce.qpro&&(ne.l+=2),fe.e.c=ne.read_shift(2),fe.e.r=ne.read_shift(2),ue==12&&ce.qpro&&(ne.l+=2),fe.s.c==65535&&(fe.s.c=fe.e.c=fe.s.r=fe.e.r=0),fe)}function R(ne){var ue=new_buf(8);return ue.write_shift(2,ne.s.c),ue.write_shift(2,ne.s.r),ue.write_shift(2,ne.e.c),ue.write_shift(2,ne.e.r),ue}function I(ne,ue,ce){var fe=[{c:0,r:0},{t:"n",v:0},0,0];return ce.qpro&&ce.vers!=20768?(fe[0].c=ne.read_shift(1),fe[3]=ne.read_shift(1),fe[0].r=ne.read_shift(2),ne.l+=2):(fe[2]=ne.read_shift(1),fe[0].c=ne.read_shift(2),fe[0].r=ne.read_shift(2)),fe}function L(ne,ue,ce){var fe=ne.l+ue,ve=I(ne,ue,ce);if(ve[1].t="s",ce.vers==20768){ne.l++;var Te=ne.read_shift(1);return ve[1].v=ne.read_shift(Te,"utf8"),ve}return ce.qpro&&ne.l++,ve[1].v=ne.read_shift(fe-ne.l,"cstr"),ve}function j(ne,ue,ce){var fe=new_buf(7+ce.length);fe.write_shift(1,255),fe.write_shift(2,ue),fe.write_shift(2,ne),fe.write_shift(1,39);for(var ve=0;ve<fe.length;++ve){var Te=ce.charCodeAt(ve);fe.write_shift(1,Te>=128?95:Te)}return fe.write_shift(1,0),fe}function M(ne,ue,ce){var fe=I(ne,ue,ce);return fe[1].v=ne.read_shift(2,"i"),fe}function D(ne,ue,ce){var fe=new_buf(7);return fe.write_shift(1,255),fe.write_shift(2,ue),fe.write_shift(2,ne),fe.write_shift(2,ce,"i"),fe}function F(ne,ue,ce){var fe=I(ne,ue,ce);return fe[1].v=ne.read_shift(8,"f"),fe}function N(ne,ue,ce){var fe=new_buf(13);return fe.write_shift(1,255),fe.write_shift(2,ue),fe.write_shift(2,ne),fe.write_shift(8,ce,"f"),fe}function G(ne,ue,ce){var fe=ne.l+ue,ve=I(ne,ue,ce);if(ve[1].v=ne.read_shift(8,"f"),ce.qpro)ne.l=fe;else{var Te=ne.read_shift(2);V(ne.slice(ne.l,ne.l+Te),ve),ne.l+=Te}return ve}function B(ne,ue,ce){var fe=ue&32768;return ue&=-32769,ue=(fe?ne:0)+(ue>=8192?ue-16384:ue),(fe?"":"$")+(ce?encode_col(ue):encode_row(ue))}var H={51:["FALSE",0],52:["TRUE",0],70:["LEN",1],80:["SUM",69],81:["AVERAGEA",69],82:["COUNTA",69],83:["MINA",69],84:["MAXA",69],111:["T",1]},O=["","","","","","","","","","+","-","*","/","^","=","<>","<=",">=","<",">","","","","","&","","","","","","",""];function V(ne,ue){prep_blob(ne,0);for(var ce=[],fe=0,ve="",Te="",Se="",ke="";ne.l<ne.length;){var we=ne[ne.l++];switch(we){case 0:ce.push(ne.read_shift(8,"f"));break;case 1:Te=B(ue[0].c,ne.read_shift(2),!0),ve=B(ue[0].r,ne.read_shift(2),!1),ce.push(Te+ve);break;case 2:{var Le=B(ue[0].c,ne.read_shift(2),!0),pe=B(ue[0].r,ne.read_shift(2),!1);Te=B(ue[0].c,ne.read_shift(2),!0),ve=B(ue[0].r,ne.read_shift(2),!1),ce.push(Le+pe+":"+Te+ve)}break;case 3:if(ne.l<ne.length){console.error("WK1 premature formula end");return}break;case 4:ce.push("("+ce.pop()+")");break;case 5:ce.push(ne.read_shift(2));break;case 6:{for(var Me="";we=ne[ne.l++];)Me+=String.fromCharCode(we);ce.push('"'+Me.replace(/"/g,'""')+'"')}break;case 8:ce.push("-"+ce.pop());break;case 23:ce.push("+"+ce.pop());break;case 22:ce.push("NOT("+ce.pop()+")");break;case 20:case 21:ke=ce.pop(),Se=ce.pop(),ce.push(["AND","OR"][we-20]+"("+Se+","+ke+")");break;default:if(we<32&&O[we])ke=ce.pop(),Se=ce.pop(),ce.push(Se+O[we]+ke);else if(H[we]){if(fe=H[we][1],fe==69&&(fe=ne[ne.l++]),fe>ce.length){console.error("WK1 bad formula parse 0x"+we.toString(16)+":|"+ce.join("|")+"|");return}var Pe=ce.slice(-fe);ce.length-=fe,ce.push(H[we][0]+"("+Pe.join(",")+")")}else return we<=7?console.error("WK1 invalid opcode "+we.toString(16)):we<=24?console.error("WK1 unsupported op "+we.toString(16)):we<=30?console.error("WK1 invalid opcode "+we.toString(16)):we<=115?console.error("WK1 unsupported function opcode "+we.toString(16)):console.error("WK1 unrecognized opcode "+we.toString(16))}}ce.length==1?ue[1].f=""+ce[0]:console.error("WK1 bad formula parse |"+ce.join("|")+"|")}function U(ne){var ue=[{c:0,r:0},{t:"n",v:0},0];return ue[0].r=ne.read_shift(2),ue[3]=ne[ne.l++],ue[0].c=ne[ne.l++],ue}function W(ne,ue){var ce=U(ne);return ce[1].t="s",ce[1].v=ne.read_shift(ue-4,"cstr"),ce}function K(ne,ue,ce,fe){var ve=new_buf(6+fe.length);ve.write_shift(2,ne),ve.write_shift(1,ce),ve.write_shift(1,ue),ve.write_shift(1,39);for(var Te=0;Te<fe.length;++Te){var Se=fe.charCodeAt(Te);ve.write_shift(1,Se>=128?95:Se)}return ve.write_shift(1,0),ve}function Y(ne,ue){var ce=U(ne);ce[1].v=ne.read_shift(2);var fe=ce[1].v>>1;if(ce[1].v&1)switch(fe&7){case 0:fe=(fe>>3)*5e3;break;case 1:fe=(fe>>3)*500;break;case 2:fe=(fe>>3)/20;break;case 3:fe=(fe>>3)/200;break;case 4:fe=(fe>>3)/2e3;break;case 5:fe=(fe>>3)/2e4;break;case 6:fe=(fe>>3)/16;break;case 7:fe=(fe>>3)/64;break}return ce[1].v=fe,ce}function ee(ne,ue){var ce=U(ne),fe=ne.read_shift(4),ve=ne.read_shift(4),Te=ne.read_shift(2);if(Te==65535)return fe===0&&ve===3221225472?(ce[1].t="e",ce[1].v=15):fe===0&&ve===3489660928?(ce[1].t="e",ce[1].v=42):ce[1].v=0,ce;var Se=Te&32768;return Te=(Te&32767)-16446,ce[1].v=(1-Se*2)*(ve*Math.pow(2,Te+32)+fe*Math.pow(2,Te)),ce}function oe(ne,ue,ce,fe){var ve=new_buf(14);if(ve.write_shift(2,ne),ve.write_shift(1,ce),ve.write_shift(1,ue),fe==0)return ve.write_shift(4,0),ve.write_shift(4,0),ve.write_shift(2,65535),ve;var Te=0,Se=0,ke=0,we=0;return fe<0&&(Te=1,fe=-fe),Se=Math.log2(fe)|0,fe/=Math.pow(2,Se-31),we=fe>>>0,we&2147483648||(fe/=2,++Se,we=fe>>>0),fe-=we,we|=2147483648,we>>>=0,fe*=Math.pow(2,32),ke=fe>>>0,ve.write_shift(4,ke),ve.write_shift(4,we),Se+=16383+(Te?32768:0),ve.write_shift(2,Se),ve}function se(ne,ue){var ce=ee(ne);return ne.l+=ue-14,ce}function Q(ne,ue){var ce=U(ne),fe=ne.read_shift(4);return ce[1].v=fe>>6,ce}function ie(ne,ue){var ce=U(ne),fe=ne.read_shift(8,"f");return ce[1].v=fe,ce}function ae(ne,ue){var ce=ie(ne);return ne.l+=ue-10,ce}function re(ne,ue){return ne[ne.l+ue-1]==0?ne.read_shift(ue,"cstr"):""}function J(ne,ue){var ce=ne[ne.l++];ce>ue-1&&(ce=ue-1);for(var fe="";fe.length<ce;)fe+=String.fromCharCode(ne[ne.l++]);return fe}function te(ne,ue,ce){if(!(!ce.qpro||ue<21)){var fe=ne.read_shift(1);ne.l+=17,ne.l+=1,ne.l+=2;var ve=ne.read_shift(ue-21,"cstr");return[fe,ve]}}function Z(ne,ue){for(var ce={},fe=ne.l+ue;ne.l<fe;){var ve=ne.read_shift(2);if(ve==14e3){for(ce[ve]=[0,""],ce[ve][0]=ne.read_shift(2);ne[ne.l];)ce[ve][1]+=String.fromCharCode(ne[ne.l]),ne.l++;ne.l++}}return ce}function X(ne,ue){var ce=new_buf(5+ne.length);ce.write_shift(2,14e3),ce.write_shift(2,ue);for(var fe=0;fe<ne.length;++fe){var ve=ne.charCodeAt(fe);ce[ce.l++]=ve>127?95:ve}return ce[ce.l++]=0,ce}var de={0:{n:"BOF",f:parseuint16},1:{n:"EOF"},2:{n:"CALCMODE"},3:{n:"CALCORDER"},4:{n:"SPLIT"},5:{n:"SYNC"},6:{n:"RANGE",f:P},7:{n:"WINDOW1"},8:{n:"COLW1"},9:{n:"WINTWO"},10:{n:"COLW2"},11:{n:"NAME"},12:{n:"BLANK"},13:{n:"INTEGER",f:M},14:{n:"NUMBER",f:F},15:{n:"LABEL",f:L},16:{n:"FORMULA",f:G},24:{n:"TABLE"},25:{n:"ORANGE"},26:{n:"PRANGE"},27:{n:"SRANGE"},28:{n:"FRANGE"},29:{n:"KRANGE1"},32:{n:"HRANGE"},35:{n:"KRANGE2"},36:{n:"PROTEC"},37:{n:"FOOTER"},38:{n:"HEADER"},39:{n:"SETUP"},40:{n:"MARGINS"},41:{n:"LABELFMT"},42:{n:"TITLES"},43:{n:"SHEETJS"},45:{n:"GRAPH"},46:{n:"NGRAPH"},47:{n:"CALCCOUNT"},48:{n:"UNFORMATTED"},49:{n:"CURSORW12"},50:{n:"WINDOW"},51:{n:"STRING",f:L},55:{n:"PASSWORD"},56:{n:"LOCKED"},60:{n:"QUERY"},61:{n:"QUERYNAME"},62:{n:"PRINT"},63:{n:"PRINTNAME"},64:{n:"GRAPH2"},65:{n:"GRAPHNAME"},66:{n:"ZOOM"},67:{n:"SYMSPLIT"},68:{n:"NSROWS"},69:{n:"NSCOLS"},70:{n:"RULER"},71:{n:"NNAME"},72:{n:"ACOMM"},73:{n:"AMACRO"},74:{n:"PARSE"},102:{n:"PRANGES??"},103:{n:"RRANGES??"},104:{n:"FNAME??"},105:{n:"MRANGES??"},204:{n:"SHEETNAMECS",f:re},222:{n:"SHEETNAMELP",f:J},65535:{n:""}},he={0:{n:"BOF"},1:{n:"EOF"},2:{n:"PASSWORD"},3:{n:"CALCSET"},4:{n:"WINDOWSET"},5:{n:"SHEETCELLPTR"},6:{n:"SHEETLAYOUT"},7:{n:"COLUMNWIDTH"},8:{n:"HIDDENCOLUMN"},9:{n:"USERRANGE"},10:{n:"SYSTEMRANGE"},11:{n:"ZEROFORCE"},12:{n:"SORTKEYDIR"},13:{n:"FILESEAL"},14:{n:"DATAFILLNUMS"},15:{n:"PRINTMAIN"},16:{n:"PRINTSTRING"},17:{n:"GRAPHMAIN"},18:{n:"GRAPHSTRING"},19:{n:"??"},20:{n:"ERRCELL"},21:{n:"NACELL"},22:{n:"LABEL16",f:W},23:{n:"NUMBER17",f:ee},24:{n:"NUMBER18",f:Y},25:{n:"FORMULA19",f:se},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:Z},28:{n:"DTLABELMISC"},29:{n:"DTLABELCELL"},30:{n:"GRAPHWINDOW"},31:{n:"CPA"},32:{n:"LPLAUTO"},33:{n:"QUERY"},34:{n:"HIDDENSHEET"},35:{n:"??"},37:{n:"NUMBER25",f:Q},38:{n:"??"},39:{n:"NUMBER27",f:ie},40:{n:"FORMULA28",f:ae},142:{n:"??"},147:{n:"??"},150:{n:"??"},151:{n:"??"},152:{n:"??"},153:{n:"??"},154:{n:"??"},155:{n:"??"},156:{n:"??"},163:{n:"??"},174:{n:"??"},175:{n:"??"},176:{n:"??"},177:{n:"??"},184:{n:"??"},185:{n:"??"},186:{n:"??"},187:{n:"??"},188:{n:"??"},195:{n:"??"},201:{n:"??"},204:{n:"SHEETNAMECS",f:re},205:{n:"??"},206:{n:"??"},207:{n:"??"},208:{n:"??"},256:{n:"??"},259:{n:"??"},260:{n:"??"},261:{n:"??"},262:{n:"??"},263:{n:"??"},265:{n:"??"},266:{n:"??"},267:{n:"??"},268:{n:"??"},270:{n:"??"},271:{n:"??"},384:{n:"??"},389:{n:"??"},390:{n:"??"},393:{n:"??"},396:{n:"??"},512:{n:"??"},514:{n:"??"},513:{n:"??"},516:{n:"??"},517:{n:"??"},640:{n:"??"},641:{n:"??"},642:{n:"??"},643:{n:"??"},644:{n:"??"},645:{n:"??"},646:{n:"??"},647:{n:"??"},648:{n:"??"},658:{n:"??"},659:{n:"??"},660:{n:"??"},661:{n:"??"},662:{n:"??"},665:{n:"??"},666:{n:"??"},768:{n:"??"},772:{n:"??"},1537:{n:"SHEETINFOQP",f:te},1600:{n:"??"},1602:{n:"??"},1793:{n:"??"},1794:{n:"??"},1795:{n:"??"},1796:{n:"??"},1920:{n:"??"},2048:{n:"??"},2049:{n:"??"},2052:{n:"??"},2688:{n:"??"},10998:{n:"??"},12849:{n:"??"},28233:{n:"??"},28484:{n:"??"},65535:{n:""}};return{sheet_to_wk1:S,book_to_wk3:E,to_workbook:u}}();function parse_rpr(o){var u={},T=o.match(tagregex),S=0,E=!1;if(T)for(;S!=T.length;++S){var C=parsexmltag(T[S]);switch(C[0].replace(/\w*:/g,"")){case"<condense":break;case"<extend":break;case"<shadow":if(!C.val)break;case"<shadow>":case"<shadow/>":u.shadow=1;break;case"</shadow>":break;case"<charset":if(C.val=="1")break;u.cp=CS2CP[parseInt(C.val,10)];break;case"<outline":if(!C.val)break;case"<outline>":case"<outline/>":u.outline=1;break;case"</outline>":break;case"<rFont":u.name=C.val;break;case"<sz":u.sz=C.val;break;case"<strike":if(!C.val)break;case"<strike>":case"<strike/>":u.strike=1;break;case"</strike>":break;case"<u":if(!C.val)break;switch(C.val){case"double":u.uval="double";break;case"singleAccounting":u.uval="single-accounting";break;case"doubleAccounting":u.uval="double-accounting";break}case"<u>":case"<u/>":u.u=1;break;case"</u>":break;case"<b":if(C.val=="0")break;case"<b>":case"<b/>":u.b=1;break;case"</b>":break;case"<i":if(C.val=="0")break;case"<i>":case"<i/>":u.i=1;break;case"</i>":break;case"<color":C.rgb&&(u.color=C.rgb.slice(2,8));break;case"<color>":case"<color/>":case"</color>":break;case"<family":u.family=C.val;break;case"<family>":case"<family/>":case"</family>":break;case"<vertAlign":u.valign=C.val;break;case"<vertAlign>":case"<vertAlign/>":case"</vertAlign>":break;case"<scheme":break;case"<scheme>":case"<scheme/>":case"</scheme>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":E=!0;break;case"</ext>":E=!1;break;default:if(C[0].charCodeAt(1)!==47&&!E)throw new Error("Unrecognized rich format "+C[0])}}return u}var parse_rs=function(){var o=matchtag("t"),u=matchtag("rPr");function T(C){var _=C.match(o);if(!_)return{t:"s",v:""};var P={t:"s",v:unescapexml(_[1])},R=C.match(u);return R&&(P.s=parse_rpr(R[1])),P}var S=/<(?:\w+:)?r>/g,E=/<\/(?:\w+:)?r>/;return function(_){return _.replace(S,"").split(E).map(T).filter(function(P){return P.v})}}(),rs_to_html=function(){var u=/(\r\n|\n)/g;function T(E,C,_){var P=[];E.u&&P.push("text-decoration: underline;"),E.uval&&P.push("text-underline-style:"+E.uval+";"),E.sz&&P.push("font-size:"+E.sz+"pt;"),E.outline&&P.push("text-effect: outline;"),E.shadow&&P.push("text-shadow: auto;"),C.push('<span style="'+P.join("")+'">'),E.b&&(C.push("<b>"),_.push("</b>")),E.i&&(C.push("<i>"),_.push("</i>")),E.strike&&(C.push("<s>"),_.push("</s>"));var R=E.valign||"";return R=="superscript"||R=="super"?R="sup":R=="subscript"&&(R="sub"),R!=""&&(C.push("<"+R+">"),_.push("</"+R+">")),_.push("</span>"),E}function S(E){var C=[[],E.v,[]];return E.v?(E.s&&T(E.s,C[0],C[2]),C[0].join("")+C[1].replace(u,"<br/>")+C[2].join("")):""}return function(C){return C.map(S).join("")}}(),sitregex=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,sirregex=/<(?:\w+:)?r>/,sirphregex=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function parse_si(o,u){var T=u?u.cellHTML:!0,S={};return o?(o.match(/^\s*<(?:\w+:)?t[^>]*>/)?(S.t=unescapexml(utf8read(o.slice(o.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")),S.r=utf8read(o),T&&(S.h=escapehtml(S.t))):o.match(sirregex)&&(S.r=utf8read(o),S.t=unescapexml(utf8read((o.replace(sirphregex,"").match(sitregex)||[]).join("").replace(tagregex,""))),T&&(S.h=rs_to_html(parse_rs(S.r)))),S):{t:""}}var sstr0=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/,sstr1=/<(?:\w+:)?(?:si|sstItem)>/g,sstr2=/<\/(?:\w+:)?(?:si|sstItem)>/;function parse_sst_xml(o,u){var T=[],S="";if(!o)return T;var E=o.match(sstr0);if(E){S=E[2].replace(sstr1,"").split(sstr2);for(var C=0;C!=S.length;++C){var _=parse_si(S[C].trim(),u);_!=null&&(T[T.length]=_)}E=parsexmltag(E[1]),T.Count=E.count,T.Unique=E.uniqueCount}return T}var straywsregex=/^\s|\s$|[\t\n\r]/;function write_sst_xml(o,u){if(!u.bookSST)return"";var T=[XML_HEADER];T[T.length]=writextag("sst",null,{xmlns:XMLNS_main[0],count:o.Count,uniqueCount:o.Unique});for(var S=0;S!=o.length;++S)if(o[S]!=null){var E=o[S],C="<si>";E.r?C+=E.r:(C+="<t",E.t||(E.t=""),E.t.match(straywsregex)&&(C+=' xml:space="preserve"'),C+=">"+escapexml(E.t)+"</t>"),C+="</si>",T[T.length]=C}return T.length>2&&(T[T.length]="</sst>",T[1]=T[1].replace("/>",">")),T.join("")}function parse_BrtBeginSst(o){return[o.read_shift(4),o.read_shift(4)]}function parse_sst_bin(o,u){var T=[],S=!1;return recordhopper(o,function(C,_,P){switch(P){case 159:T.Count=C[0],T.Unique=C[1];break;
243case 19:T.push(C);break;case 160:return!0;case 35:S=!0;break;case 36:S=!1;break;default:if(_.T,!S||u.WTF)throw new Error("Unexpected record 0x"+P.toString(16))}}),T}function write_BrtBeginSst(o,u){return u||(u=new_buf(8)),u.write_shift(4,o.Count),u.write_shift(4,o.Unique),u}var write_BrtSSTItem=write_RichStr;function write_sst_bin(o){var u=buf_array();write_record(u,159,write_BrtBeginSst(o));for(var T=0;T<o.length;++T)write_record(u,19,write_BrtSSTItem(o[T]));return write_record(u,160),u.end()}function _JS2ANSI(o){if(typeof $cptable<"u")return $cptable.utils.encode(current_ansi,o);for(var u=[],T=o.split(""),S=0;S<T.length;++S)u[S]=T[S].charCodeAt(0);return u}function parse_CRYPTOVersion(o,u){var T={};return T.Major=o.read_shift(2),T.Minor=o.read_shift(2),u>=4&&(o.l+=u-4),T}function parse_DataSpaceVersionInfo(o){var u={};return u.id=o.read_shift(0,"lpp4"),u.R=parse_CRYPTOVersion(o,4),u.U=parse_CRYPTOVersion(o,4),u.W=parse_CRYPTOVersion(o,4),u}function parse_DataSpaceMapEntry(o){for(var u=o.read_shift(4),T=o.l+u-4,S={},E=o.read_shift(4),C=[];E-- >0;)C.push({t:o.read_shift(4),v:o.read_shift(0,"lpp4")});if(S.name=o.read_shift(0,"lpp4"),S.comps=C,o.l!=T)throw new Error("Bad DataSpaceMapEntry: "+o.l+" != "+T);return S}function parse_DataSpaceMap(o){var u=[];o.l+=4;for(var T=o.read_shift(4);T-- >0;)u.push(parse_DataSpaceMapEntry(o));return u}function parse_DataSpaceDefinition(o){var u=[];o.l+=4;for(var T=o.read_shift(4);T-- >0;)u.push(o.read_shift(0,"lpp4"));return u}function parse_TransformInfoHeader(o){var u={};return o.read_shift(4),o.l+=4,u.id=o.read_shift(0,"lpp4"),u.name=o.read_shift(0,"lpp4"),u.R=parse_CRYPTOVersion(o,4),u.U=parse_CRYPTOVersion(o,4),u.W=parse_CRYPTOVersion(o,4),u}function parse_Primary(o){var u=parse_TransformInfoHeader(o);if(u.ename=o.read_shift(0,"8lpp4"),u.blksz=o.read_shift(4),u.cmode=
vendor: 4,538 bytes, line 243
243o.read_shift(4),o.read_shift(4)!=4)throw new Error("Bad !Primary record");return u}function parse_EncryptionHeader(o,u){var T=o.l+u,S={};S.Flags=o.read_shift(4)&63,o.l+=4,S.AlgID=o.read_shift(4);var E=!1;switch(S.AlgID){case 26126:case 26127:case 26128:E=S.Flags==36;break;case 26625:E=S.Flags==4;break;case 0:E=S.Flags==16||S.Flags==4||S.Flags==36;break;default:throw"Unrecognized encryption algorithm: "+S.AlgID}if(!E)throw new Error("Encryption Flags/AlgID mismatch");return S.AlgIDHash=o.read_shift(4),S.KeySize=o.read_shift(4),S.ProviderType=o.read_shift(4),o.l+=8,S.CSPName=o.read_shift(T-o.l>>1,"utf16le"),o.l=T,S}function parse_EncryptionVerifier(o,u){var T={},S=o.l+u;return o.l+=4,T.Salt=o.slice(o.l,o.l+16),o.l+=16,T.Verifier=o.slice(o.l,o.l+16),o.l+=16,o.read_shift(4),T.VerifierHash=o.slice(o.l,S),o.l=S,T}function parse_EncryptionInfo(o){var u=parse_CRYPTOVersion(o);switch(u.Minor){case 2:return[u.Minor,parse_EncInfoStd(o)];case 3:return[u.Minor,parse_EncInfoExt()];case 4:return[u.Minor,parse_EncInfoAgl(o)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+u.Minor)}function parse_EncInfoStd(o){var u=o.read_shift(4);if((u&63)!=36)throw new Error("EncryptionInfo mismatch");var T=o.read_shift(4),S=parse_EncryptionHeader(o,T),E=parse_EncryptionVerifier(o,o.length-o.l);return{t:"Std",h:S,v:E}}function parse_EncInfoExt(){throw new Error("File is password-protected: ECMA-376 Extensible")}function parse_EncInfoAgl(o){var u=["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"];o.l+=4;var T=o.read_shift(o.length-o.l,"utf8"),S={};return T.replace(tagregex,function(C){var _=parsexmltag(C);switch(strip_ns(_[0])){case"<?xml":break;case"<encryption":case"</encryption>":break;case"<keyData":u.forEach(function(P){S[P]=_[P]});break;case"<dataIntegrity":S.encryptedHmacKey=_.encryptedHmacKey,S.encryptedHmacValue=_.encryptedHmacValue;break;case"<keyEncryptors>":case"<keyEncryptors":S.encs=[];break;case"</keyEncryptors>":break;case"<keyEncryptor":S.uri=_.uri;break;case"</keyEncryptor>":break;case"<encryptedKey":S.encs.push(_);break;default:throw _[0]}}),S}function parse_RC4CryptoHeader(o,u){var T={},S=T.EncryptionVersionInfo=parse_CRYPTOVersion(o,4);if(u-=4,S.Minor!=2)throw new Error("unrecognized minor version code: "+S.Minor);if(S.Major>4||S.Major<2)throw new Error("unrecognized major version code: "+S.Major);T.Flags=o.read_shift(4),u-=4;var E=o.read_shift(4);return u-=4,T.EncryptionHeader=parse_EncryptionHeader(o,E),u-=E,T.EncryptionVerifier=parse_EncryptionVerifier(o,u),T}function parse_RC4Header(o){var u={},T=u.EncryptionVersionInfo=parse_CRYPTOVersion(o,4);if(T.Major!=1||T.Minor!=1)throw"unrecognized version code "+T.Major+" : "+T.Minor;return u.Salt=o.read_shift(16),u.EncryptedVerifier=o.read_shift(16),u.EncryptedVerifierHash=o.read_shift(16),u}function crypto_CreatePasswordVerifier_Method1(o){var u=0,T,S=_JS2ANSI(o),E=S.length+1,C,_,P,R,I;for(T=new_raw_buf(E),T[0]=S.length,C=1;C!=E;++C)T[C]=S[C-1];for(C=E-1;C>=0;--C)_=T[C],P=u&16384?1:0,R=u<<1&32767,I=P|R,u=I^_;return u^52811}var crypto_CreateXorArray_Method1=function(){var o=[187,255,255,186,255,255,185,128,0,190,15,0,191,15,0],u=[57840,7439,52380,33984,4364,3600,61902,12606,6258,57657,54287,34041,10252,43370,20163],T=[44796,19929,39858,10053,20106,40212,10761,31585,63170,64933,60267,50935,40399,11199,17763,35526,1453,2906,5812,11624,23248,885,1770,3540,7080,14160,28320,56640,55369,41139,20807,41614,21821,43642,17621,28485,56970,44341,19019,38038,14605,29210,60195,50791,40175,10751,21502,43004,24537,18387,36774,3949,7898,15796,31592,63184,47201,24803,49606,37805,14203,28406,56812,17824,35648,1697,3394,6788,13576,27152,43601,17539,35078,557,1114,2228,4456,30388,60776,51953,34243,7079,14158,28316,14128,28256,56512,43425,17251,34502,7597,13105,26210,52420,35241,883,1766,3532,4129,8258,16516,33032,4657,9314,18628],S=function(_){return(_/2|_*128)&255},E=function(_,P){return S(_^P)},C=function(_){for(var P=u[_.length-1],R=104,I=_.length-1;I>=0;--I)for(var L=_[I],j=0;j!=7;++j)L&64&&(P^=T[R]),L*=2,--R;return P};return function(_){for(var P=_JS2ANSI(_),R=C(P),I=P.length,L=new_raw_buf(16),j=0;j!=16;++j)L[j]=0;var M,D,F;for((I&1)===1&&(M=R>>8,L[I]=E(o[0],M),--I,M=R&255,D=P[P.length-1],L[I]=E(D,M));I>0;)--I,M=R>>8,L[I]=E(P[I],M),--I,M=R&255,L[I]=E(P[I],M);for(I=15,F=15-P.length;F>0;)M=R>>8,L[I]=E(o[F],M),--I,--F,M=R&255,L[I]=E(P[I],M),--I,--F;return L}}(),crypto_DecryptData_Method1=function(o,u,T,S,E){E||(E=u),S||(S=crypto_CreateXorArray_Method1(o));var C,_;
243for(C=0;C!=u.length;++C)_=u[C],_^=S[T],_=(_>>5|_<<3)&255,E[C]=_,++T;return[E,T,S]},crypto_MakeXorDecryptor=function(o){var u=0,T=crypto_CreateXorArray_Method1(o);return function(S){var E=crypto_DecryptData_Method1("",S,u,T);return u=E[1],E[0]}};function parse_XORObfuscation(o,u,T,S){var E={key:parseuint16(o),verificationBytes:parseuint16(o)};return T.password&&(E.verifier=crypto_CreatePasswordVerifier_Method1(T.password)),S.valid=E.verificationBytes===E.verifier,S.valid&&(S.insitu=crypto_MakeXorDecryptor(T.password)),E}function parse_FilePassHeader(o,u,T){var S=T||{};return S.Info=o.read_shift(2),o.l-=2,S.Info===1?S.Data=parse_RC4Header(o):S.Data=parse_RC4CryptoHeader(o,u),S}function parse_FilePass(o,u,T){var S={Type:T.biff>=8?o.read_shift(2):0};return S.Type?parse_FilePassHeader(o,u-2,S):parse_XORObfuscation(o,T.biff>=8?u:u-2,T,S),S}var RTF=function(){function o(E,C){switch(C.type){case"base64":return u(Base64_decode(E),C);case"binary":return u(E,C);case"buffer":return u(has_buf&&Buffer.isBuffer(E)?E.toString("binary"):a2s(E),C);case"array":return u(cc2str(E),C)}throw new Error("Unrecognized type "+C.type)}function u(E,C){var _=C||{},P=_.dense?[]:{},R=E.match(/\\trowd.*?\\row\b/g);if(!R.length)throw new Error("RTF missing table");var I={s:{c:0,r:0},e:{c:0,r:R.length-1}};return R.forEach(function(L,j){Array.isArray(P)&&(P[j]=[]);for(var M=/\\\w+\b/g,D=0,F,N=-1;F=M.exec(L);){switch(F[0]){case"\\cell":var G=L.slice(D,M.lastIndex-F[0].length);if(G[0]==" "&&(G=G.slice(1)),++N,G.length){var B={v:G,t:"s"};Array.isArray(P)?P[j][N]=B:P[encode_cell({r:j,c:N})]=B}break}D=M.lastIndex}N>I.e.c&&(I.e.c=N)}),P["!ref"]=encode_range(I),P}function T(E,C){return sheet_to_workbook(o(E,C),C)}function S(E){for(var C=["{\\rtf1\\ansi"],_=safe_decode_range(E["!ref"]),P,R=Array.isArray(E),I=_.s.r;I<=_.e.r;++I){C.push("\\trowd\\trautofit1");for(var L=_.s.c;L<=_.e.c;++L)C.push("\\cellx"+(L+1));for(C.push("\\pard\\intbl"),L=_.s.c;L<=_.e.c;++L){var j=encode_cell({r:I,c:L});P=R?(E[I]||[])[L]:E[j],!(!P||P.v==null&&(!P.f||P.F))&&(C.push(" "+(P.w||(format_cell(P),P.w))),C.push("\\cell"))}C.push("\\pard\\intbl\\row")}return C.join("")+"}"}return{to_workbook:T,to_sheet:o,from_sheet:S}}();function hex2RGB(o){var u=o.slice(o[0]==="#"?1:0).slice(0,6);return[parseInt(u.slice(0,2),16),parseInt(u.slice(2,4),16),parseInt(u.slice(4,6),16)]}function rgb2Hex(o){for(var u=0,T=1;u!=3;++u)T=T*256+(o[u]>255?255:o[u]<0?0:o[u]);return T.toString(16).toUpperCase().slice(1)}function rgb2HSL(o){var u=o[0]/255,T=o[1]/255,S=o[2]/255,E=Math.max(u,T,S),C=Math.min(u,T,S),_=E-C;if(_===0)return[0,0,u];var P=0,R=0,I=E+C;switch(R=_/(I>1?2-I:I),E){case u:P=((T-S)/_+6)%6;break;case T:P=(S-u)/_+2;break;case S:P=(u-T)/_+4;break}return[P/6,R,I/2]}function hsl2RGB(o){var u=o[0],T=o[1],S=o[2],E=T*2*(S<.5?S:1-S),C=S-E/2,_=[C,C,C],P=6*u,R;if(T!==0)switch(P|0){case 0:case 6:R=E*P,_[0]+=E,_[1]+=R;break;case 1:R=E*(2-P),_[0]+=R,_[1]+=E;break;case 2:R=E*(P-2),_[1]+=E,_[2]+=R;break;case 3:R=E*(4-P),_[1]+=R,_[2]+=E;break;case 4:R=E*(P-4),_[2]+=E,_[0]+=R;break;case 5:R=E*(6-P),_[2]+=R,_[0]+=E;break}for(var I=0;I!=3;++I)_[I]=Math.round(_[I]*255);return _}function rgb_tint(o,u){if(u===0)return o;var T=rgb2HSL(hex2RGB(o));return u<0?T[2]=T[2]*(1+u):T[2]=1-(1-T[2])*(1-u),rgb2Hex(hsl2RGB(T))}var DEF_MDW=6,MAX_MDW=15,MIN_MDW=1,MDW=DEF_MDW;function width2px(o){return Math.floor((o+Math.round(128/MDW)/256)*MDW)}function px2char(o){return Math.floor((o-5)/MDW*100+.5)/100}function char2width(o){return Math.round((o*MDW+5)/MDW*256)/256}function cycle_width(o){return char2width(px2char(width2px(o)))}function find_mdw_colw(o){var u=Math.abs(o-cycle_width(o)),T=MDW;if(u>.005)for(MDW=MIN_MDW;MDW<MAX_MDW;++MDW)Math.abs(o-cycle_width(o))<=u&&(u=Math.abs(o-cycle_width(o)),T=MDW);MDW=T}function process_col(o){o.width?(o.wpx=width2px(o.width),o.wch=px2char(o.wpx),o.MDW=MDW):o.wpx?(o.wch=px2char(o.wpx),o.width=char2width(o.wch),o.MDW=MDW):typeof o.wch=="number"&&(o.width=char2width(o.wch),o.wpx=width2px(o.width),o.MDW=MDW),o.customWidth&&delete o.customWidth}var DEF_PPI=96,PPI=DEF_PPI;function px2pt(o){return o*96/PPI}function pt2px(o){return o*PPI/96}var XLMLPatternTypeMap={None:"none",Solid:"solid",Gray50:"mediumGray",Gray75:"darkGray",Gray25:"lightGray",HorzStripe:"darkHorizontal",VertStripe:"darkVertical",ReverseDiagStripe:"darkDown",DiagStripe:"darkUp",DiagCross:"darkGrid",ThickDiagCross:"darkTrellis",ThinHorzStripe:"lightHorizontal",ThinVertStripe:"lightVertical",ThinReverseDiagStripe:"lightDown",ThinHorzCross:"lightGrid"};function parse_borders(o,u,T,S){u.Borders=[];var E={},C=!1;
vendor: 17,971 bytes, line 243
243(o[0].match(tagregex)||[]).forEach(function(_){var P=parsexmltag(_);switch(strip_ns(P[0])){case"<borders":case"<borders>":case"</borders>":break;case"<border":case"<border>":case"<border/>":E={},P.diagonalUp&&(E.diagonalUp=parsexmlbool(P.diagonalUp)),P.diagonalDown&&(E.diagonalDown=parsexmlbool(P.diagonalDown)),u.Borders.push(E);break;case"</border>":break;case"<left/>":break;case"<left":case"<left>":break;case"</left>":break;case"<right/>":break;case"<right":case"<right>":break;case"</right>":break;case"<top/>":break;case"<top":case"<top>":break;case"</top>":break;case"<bottom/>":break;case"<bottom":case"<bottom>":break;case"</bottom>":break;case"<diagonal":case"<diagonal>":case"<diagonal/>":break;case"</diagonal>":break;case"<horizontal":case"<horizontal>":case"<horizontal/>":break;case"</horizontal>":break;case"<vertical":case"<vertical>":case"<vertical/>":break;case"</vertical>":break;case"<start":case"<start>":case"<start/>":break;case"</start>":break;case"<end":case"<end>":case"<end/>":break;case"</end>":break;case"<color":case"<color>":break;case"<color/>":case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":C=!0;break;case"</ext>":C=!1;break;default:if(S&&S.WTF&&!C)throw new Error("unrecognized "+P[0]+" in borders")}})}function parse_fills(o,u,T,S){u.Fills=[];var E={},C=!1;(o[0].match(tagregex)||[]).forEach(function(_){var P=parsexmltag(_);switch(strip_ns(P[0])){case"<fills":case"<fills>":case"</fills>":break;case"<fill>":case"<fill":case"<fill/>":E={},u.Fills.push(E);break;case"</fill>":break;case"<gradientFill>":break;case"<gradientFill":case"</gradientFill>":u.Fills.push(E),E={};break;case"<patternFill":case"<patternFill>":P.patternType&&(E.patternType=P.patternType);break;case"<patternFill/>":case"</patternFill>":break;case"<bgColor":E.bgColor||(E.bgColor={}),P.indexed&&(E.bgColor.indexed=parseInt(P.indexed,10)),P.theme&&(E.bgColor.theme=parseInt(P.theme,10)),P.tint&&(E.bgColor.tint=parseFloat(P.tint)),P.rgb&&(E.bgColor.rgb=P.rgb.slice(-6));break;case"<bgColor/>":case"</bgColor>":break;case"<fgColor":E.fgColor||(E.fgColor={}),P.theme&&(E.fgColor.theme=parseInt(P.theme,10)),P.tint&&(E.fgColor.tint=parseFloat(P.tint)),P.rgb!=null&&(E.fgColor.rgb=P.rgb.slice(-6));break;case"<fgColor/>":case"</fgColor>":break;case"<stop":case"<stop/>":break;case"</stop>":break;case"<color":case"<color/>":break;case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":C=!0;break;case"</ext>":C=!1;break;default:if(S&&S.WTF&&!C)throw new Error("unrecognized "+P[0]+" in fills")}})}function parse_fonts(o,u,T,S){u.Fonts=[];var E={},C=!1;(o[0].match(tagregex)||[]).forEach(function(_){var P=parsexmltag(_);switch(strip_ns(P[0])){case"<fonts":case"<fonts>":case"</fonts>":break;case"<font":case"<font>":break;case"</font>":case"<font/>":u.Fonts.push(E),E={};break;case"<name":P.val&&(E.name=utf8read(P.val));break;case"<name/>":case"</name>":break;case"<b":E.bold=P.val?parsexmlbool(P.val):1;break;case"<b/>":E.bold=1;break;case"<i":E.italic=P.val?parsexmlbool(P.val):1;break;case"<i/>":E.italic=1;break;case"<u":switch(P.val){case"none":E.underline=0;break;case"single":E.underline=1;break;case"double":E.underline=2;break;case"singleAccounting":E.underline=33;break;case"doubleAccounting":E.underline=34;break}break;case"<u/>":E.underline=1;break;case"<strike":E.strike=P.val?parsexmlbool(P.val):1;break;case"<strike/>":E.strike=1;break;case"<outline":E.outline=P.val?parsexmlbool(P.val):1;break;case"<outline/>":E.outline=1;break;case"<shadow":E.shadow=P.val?parsexmlbool(P.val):1;break;case"<shadow/>":E.shadow=1;break;case"<condense":E.condense=P.val?parsexmlbool(P.val):1;break;case"<condense/>":E.condense=1;break;case"<extend":E.extend=P.val?parsexmlbool(P.val):1;break;case"<extend/>":E.extend=1;break;case"<sz":P.val&&(E.sz=+P.val);break;case"<sz/>":case"</sz>":break;case"<vertAlign":P.val&&(E.vertAlign=P.val);break;case"<vertAlign/>":case"</vertAlign>":break;case"<family":P.val&&(E.family=parseInt(P.val,10));break;case"<family/>":case"</family>":break;case"<scheme":P.val&&(E.scheme=P.val);break;case"<scheme/>":case"</scheme>":break;case"<charset":if(P.val=="1")break;P.codepage=CS2CP[parseInt(P.val,10)];break;case"<color":if(E.color||(E.color={}),P.auto&&(E.color.auto=parsexmlbool(P.auto)),P.rgb)E.color.rgb=P.rgb.slice(-6);else if(P.indexed){E.color.index=parseInt(P.indexed,10);var R=XLSIcv[E.color.index];E.color.index==81&&(R=XLSIcv[1]),R||(R=XLSIcv[1]),E.color.rgb=R[0].toString(16)+R[1].toString(16)+R[2].toString(16)}else P.theme&&(E.color.theme=parseInt(P.theme,10),P.tint&&(E.color.tint=parseFloat(P.tint)),P.theme&&T.themeElements&&T.themeElements.clrScheme&&(E.color.rgb=rgb_tint(T.themeElements.clrScheme[E.color.theme].rgb,E.color.tint||0)));break;case"<color/>":case"</color>":break;case"<AlternateContent":C=!0;break;case"</AlternateContent>":C=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":C=!0;break;case"</ext>":C=!1;break;default:if(S&&S.WTF&&!C)throw new Error("unrecognized "+P[0]+" in fonts")}})}function parse_numFmts(o,u,T){u.NumberFmt=[];for(var S=keys(table_fmt),E=0;E<S.length;++E)u.NumberFmt[S[E]]=table_fmt[S[E]];var C=o[0].match(tagregex);if(C)for(E=0;E<C.length;++E){var _=parsexmltag(C[E]);switch(strip_ns(_[0])){case"<numFmts":case"</numFmts>":case"<numFmts/>":case"<numFmts>":break;case"<numFmt":{var P=unescapexml(utf8read(_.formatCode)),R=parseInt(_.numFmtId,10);if(u.NumberFmt[R]=P,R>0){if(R>392){for(R=392;R>60&&u.NumberFmt[R]!=null;--R);u.NumberFmt[R]=P}SSF_load(P,R)}}break;case"</numFmt>":break;default:if(T.WTF)throw new Error("unrecognized "+_[0]+" in numFmts")}}}function write_numFmts(o){var u=["<numFmts>"];return[[5,8],[23,26],[41,44],[50,392]].forEach(function(T){for(var S=T[0];S<=T[1];++S)o[S]!=null&&(u[u.length]=writextag("numFmt",null,{numFmtId:S,formatCode:escapexml(o[S])}))}),u.length===1?"":(u[u.length]="</numFmts>",u[0]=writextag("numFmts",null,{count:u.length-2}).replace("/>",">"),u.join(""))}var cellXF_uint=["numFmtId","fillId","fontId","borderId","xfId"],cellXF_bool=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function parse_cellXfs(o,u,T){u.CellXf=[];var S,E=!1;(o[0].match(tagregex)||[]).forEach(function(C){var _=parsexmltag(C),P=0;switch(strip_ns(_[0])){case"<cellXfs":case"<cellXfs>":case"<cellXfs/>":case"</cellXfs>":break;case"<xf":case"<xf/>":for(S=_,delete S[0],P=0;P<cellXF_uint.length;++P)S[cellXF_uint[P]]&&(S[cellXF_uint[P]]=parseInt(S[cellXF_uint[P]],10));for(P=0;P<cellXF_bool.length;++P)S[cellXF_bool[P]]&&(S[cellXF_bool[P]]=parsexmlbool(S[cellXF_bool[P]]));if(u.NumberFmt&&S.numFmtId>392){for(P=392;P>60;--P)if(u.NumberFmt[S.numFmtId]==u.NumberFmt[P]){S.numFmtId=P;break}}u.CellXf.push(S);break;case"</xf>":break;case"<alignment":case"<alignment/>":var R={};_.vertical&&(R.vertical=_.vertical),_.horizontal&&(R.horizontal=_.horizontal),_.textRotation!=null&&(R.textRotation=_.textRotation),_.indent&&(R.indent=_.indent),_.wrapText&&(R.wrapText=parsexmlbool(_.wrapText)),S.alignment=R;break;case"</alignment>":break;case"<protection":break;case"</protection>":case"<protection/>":break;case"<AlternateContent":E=!0;break;case"</AlternateContent>":E=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":E=!0;break;case"</ext>":E=!1;break;default:if(T&&T.WTF&&!E)throw new Error("unrecognized "+_[0]+" in cellXfs")}})}function write_cellXfs(o){var u=[];return u[u.length]=writextag("cellXfs",null),o.forEach(function(T){u[u.length]=writextag("xf",null,T)}),u[u.length]="</cellXfs>",u.length===2?"":(u[0]=writextag("cellXfs",null,{count:u.length-2}).replace("/>",">"),u.join(""))}var parse_sty_xml=function(){var u=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/,T=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/,S=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/,E=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/,C=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function(P,R,I){var L={};if(!P)return L;P=P.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");var j;return(j=P.match(u))&&parse_numFmts(j,L,I),(j=P.match(E))&&parse_fonts(j,L,R,I),(j=P.match(S))&&parse_fills(j,L,R,I),(j=P.match(C))&&parse_borders(j,L,R,I),(j=P.match(T))&&parse_cellXfs(j,L,I),L}}();function write_sty_xml(o,u){var T=[XML_HEADER,writextag("styleSheet",null,{xmlns:XMLNS_main[0],"xmlns:vt":XMLNS.vt})],S;return o.SSF&&(S=write_numFmts(o.SSF))!=null&&(T[T.length]=S),T[T.length]='<fonts count="1"><font><sz val="12"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts>',T[T.length]='<fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills>',T[T.length]='<borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders>',T[T.length]='<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs>',(S=write_cellXfs(u.cellXfs))&&(T[T.length]=S),T[T.length]='<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>',T[T.length]='<dxfs count="0"/>',T[T.length]='<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4"/>',T.length>2&&(T[T.length]="</styleSheet>",T[1]=T[1].replace("/>",">")),T.join("")}function parse_BrtFmt(o,u){var T=o.read_shift(2),S=parse_XLWideString(o);return[T,S]}function write_BrtFmt(o,u,T){T||(T=new_buf(6+4*u.length)),T.write_shift(2,o),write_XLWideString(u,T);var S=T.length>T.l?T.slice(0,T.l):T;return T.l==null&&(T.l=T.length),S}function parse_BrtFont(o,u,T){var S={};S.sz=o.read_shift(2)/20;var E=parse_FontFlags(o);E.fItalic&&(S.italic=1),E.fCondense&&(S.condense=1),E.fExtend&&(S.extend=1),E.fShadow&&(S.shadow=1),E.fOutline&&(S.outline=1),E.fStrikeout&&(S.strike=1);var C=o.read_shift(2);switch(C===700&&(S.bold=1),o.read_shift(2)){case 1:S.vertAlign="superscript";break;case 2:S.vertAlign="subscript";break}var _=o.read_shift(1);_!=0&&(S.underline=_);var P=o.read_shift(1);P>0&&(S.family=P);var R=o.read_shift(1);switch(R>0&&(S.charset=R),o.l++,S.color=parse_BrtColor(o),o.read_shift(1)){case 1:S.scheme="major";break;case 2:S.scheme="minor";break}return S.name=parse_XLWideString(o),S}function write_BrtFont(o,u){u||(u=new_buf(25+4*32)),u.write_shift(2,o.sz*20),write_FontFlags(o,u),u.write_shift(2,o.bold?700:400);var T=0;o.vertAlign=="superscript"?T=1:o.vertAlign=="subscript"&&(T=2),u.write_shift(2,T),u.write_shift(1,o.underline||0),u.write_shift(1,o.family||0),u.write_shift(1,o.charset||0),u.write_shift(1,0),write_BrtColor(o.color,u);var S=0;return S=2,u.write_shift(1,S),write_XLWideString(o.name,u),u.length>u.l?u.slice(0,u.l):u}var XLSBFillPTNames=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"],rev_XLSBFillPTNames,parse_BrtFill=parsenoop;function write_BrtFill(o,u){u||(u=new_buf(4*3+8*7+16*1)),rev_XLSBFillPTNames||(rev_XLSBFillPTNames=evert(XLSBFillPTNames));var T=rev_XLSBFillPTNames[o.patternType];T==null&&(T=40),u.write_shift(4,T);var S=0;if(T!=40)for(write_BrtColor({auto:1},u),write_BrtColor({auto:1},u);S<12;++S)u.write_shift(4,0);else{for(;S<4;++S)u.write_shift(4,0);for(;S<12;++S)u.write_shift(4,0)}return u.length>u.l?u.slice(0,u.l):u}function parse_BrtXF(o,u){var T=o.l+u,S=o.read_shift(2),E=o.read_shift(2);return o.l=T,{ixfe:S,numFmtId:E}}function write_BrtXF(o,u,T){T||(T=new_buf(16)),T.write_shift(2,u||0),T.write_shift(2,o.numFmtId||0),T.write_shift(2,0),T.write_shift(2,0),T.write_shift(2,0),T.write_shift(1,0),T.write_shift(1,0);var S=0;return T.write_shift(1,S),T.write_shift(1,0),T.write_shift(1,0),T.write_shift(1,0),T}function write_Blxf(o,u){return u||(u=new_buf(10)),u.write_shift(1,0),u.write_shift(1,0),u.write_shift(4,0),u.write_shift(4,0),u}var parse_BrtBorder=parsenoop;function write_BrtBorder(o,u){return u||(u=new_buf(51)),u.write_shift(1,0),write_Blxf(null,u),write_Blxf(null,u),write_Blxf(null,u),write_Blxf(null,u),write_Blxf(null,u),u.length>u.l?u.slice(0,u.l):u}function write_BrtStyle(o,u){return u||(u=new_buf(12+4*10)),u.write_shift(4,o.xfId),u.write_shift(2,1),u.write_shift(1,0),u.write_shift(1,0),write_XLNullableWideString(o.name||"",u),u.length>u.l?u.slice(0,u.l):u}function write_BrtBeginTableStyles(o,u,T){var S=new_buf(2052);return S.write_shift(4,o),write_XLNullableWideString(u,S),write_XLNullableWideString(T,S),S.length>S.l?S.slice(0,S.l):S}function parse_sty_bin(o,u,T){var S={};S.NumberFmt=[];for(var E in table_fmt)S.NumberFmt[E]=table_fmt[E];S.CellXf=[],S.Fonts=[];var C=[],_=!1;return recordhopper(o,function(R,I,L){switch(L){case 44:S.NumberFmt[R[0]]=R[1],SSF_load(R[1],R[0]);break;case 43:S.Fonts.push(R),R.color.theme!=null&&u&&u.themeElements&&u.themeElements.clrScheme&&(R.color.rgb=rgb_tint(u.themeElements.clrScheme[R.color.theme].rgb,R.color.tint||0));break;case 1025:break;case 45:break;case 46:break;case 47:C[C.length-1]==617&&S.CellXf.push(R);break;case 48:case 507:case 572:case 475:break;case 1171:case 2102:case 1130:case 512:case 2095:case 3072:break;case 35:_=!0;break;case 36:_=!1;break;case 37:C.push(L),_=!0;break;case 38:C.pop(),_=!1;break;default:if(I.T>0)C.push(L);else if(I.T<0)C.pop();else if(!_||T.WTF&&C[C.length-1]!=37)throw new Error("Unexpected record 0x"+L.toString(16))}}),S}function write_FMTS_bin(o,u){if(u){var T=0;[[5,8],[23,26],[41,44],[50,392]].forEach(function(S){for(var E=S[0];E<=S[1];++E)u[E]!=null&&++T}),T!=0&&(write_record(o,615,write_UInt32LE(T)),[[5,8],[23,26],[41,44],[50,392]].forEach(function(S){for(var E=S[0];E<=S[1];++E)u[E]!=null&&write_record(o,44,write_BrtFmt(E,u[E]))}),write_record(o,616))}}function write_FONTS_bin(o){var u=1;write_record(o,611,write_UInt32LE(u)),write_record(o,43,write_BrtFont({sz:12,color:{theme:1},name:"Calibri",family:2})),write_record(o,612)}function write_FILLS_bin(o){var u=2;write_record(o,603,write_UInt32LE(u)),write_record(o,45,write_BrtFill({patternType:"none"})),write_record(o,45,write_BrtFill({patternType:"gray125"})),write_record(o,604)}function write_BORDERS_bin(o){var u=1;write_record(o,613,write_UInt32LE(u)),write_record(o,46,write_BrtBorder()),write_record(o,614)}function write_CELLSTYLEXFS_bin(o){var u=1;write_record(o,626,write_UInt32LE(u)),write_record(o,47,write_BrtXF({numFmtId:0},65535)),write_record(o,627)}function write_CELLXFS_bin(o,u){write_record(o,617,write_UInt32LE(u.length)),u.forEach(function(T){write_record(o,47,write_BrtXF(T,0))}),write_record(o,618)}function write_STYLES_bin(o){var u=1;write_record(o,619,write_UInt32LE(u)),write_record(o,48,write_BrtStyle({xfId:0,name:"Normal"})),write_record(o,620)}function write_DXFS_bin(o){var u=0;write_record(o,505,write_UInt32LE(u)),write_record(o,506)}function write_TABLESTYLES_bin(o){var u=0;write_record(o,508,write_BrtBeginTableStyles(u,"TableStyleMedium9","PivotStyleMedium4")),write_record(o,509)}function write_sty_bin(o,u){var T=buf_array();return write_record(T,278),write_FMTS_bin(T,o.SSF),write_FONTS_bin(T),write_FILLS_bin(T),write_BORDERS_bin(T),write_CELLSTYLEXFS_bin(T),write_CELLXFS_bin(T,u.cellXfs),write_STYLES_bin(T),write_DXFS_bin(T),write_TABLESTYLES_bin(T),write_record(T,279),T.end()}var XLSXThemeClrScheme=["</a:lt1>","</a:dk1>","</a:lt2>","</a:dk2>","</a:accent1>","</a:accent2>","</a:accent3>","</a:accent4>","</a:accent5>","</a:accent6>","</a:hlink>","</a:folHlink>"];function parse_clrScheme(o,u,T){u.themeElements.clrScheme=[];var S={};(o[0].match(tagregex)||[]).forEach(function(E){var C=parsexmltag(E);switch(C[0]){case"<a:clrScheme":case"</a:clrScheme>":break;case"<a:srgbClr":S.rgb=C.val;break;case"<a:sysClr":S.rgb=C.lastClr;break;case"<a:dk1>":case"</a:dk1>":case"<a:lt1>":case"</a:lt1>":case"<a:dk2>":case"</a:dk2>":case"<a:lt2>":case"</a:lt2>":case"<a:accent1>":case"</a:accent1>":case"<a:accent2>":case"</a:accent2>":case"<a:accent3>":case"</a:accent3>":case"<a:accent4>":case"</a:accent4>":case"<a:accent5>":case"</a:accent5>":case"<a:accent6>":case"</a:accent6>":case"<a:hlink>":case"</a:hlink>":case"<a:folHlink>":case"</a:folHlink>":C[0].charAt(1)==="/"?(u.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(C[0])]=S,S={}):S.name=C[0].slice(3,C[0].length-1);break;default:if(T&&T.WTF)throw new Error("Unrecognized "+C[0]+" in clrScheme")}})}function parse_fontScheme(){}function parse_fmtScheme(){}var clrsregex=/<a:clrScheme([^>]*)>[\s\S]*<\/a:clrScheme>/,fntsregex=/<a:fontScheme([^>]*)>[\s\S]*<\/a:fontScheme>/,fmtsregex=/<a:fmtScheme([^>]*)>[\s\S]*<\/a:fmtScheme>/;function parse_themeElements(o,u,T){u.themeElements={};var S;[["clrScheme",clrsregex,parse_clrScheme],["fontScheme",fntsregex,parse_fontScheme],["fmtScheme",fmtsregex,parse_fmtScheme]].forEach(function(E){if(!(S=o.match(E[1])))throw new Error(E[0]+" not found in themeElements");E[2](S,u,T)})}var themeltregex=/<a:themeElements([^>]*)>[\s\S]*<\/a:themeElements>/;function parse_theme_xml(o,u){(!o||o.length===0)&&(o=write_theme());var T,S={};if(!(T=o.match(themeltregex)))throw new Error("themeElements not found in theme");return parse_themeElements(T[0],S,u),S.raw=o,S}function write_theme(o,u){if(u&&u.themeXLSX)return u.themeXLSX;if(o&&typeof o.raw=="string")return o.raw;var T=[XML_HEADER];return T[T.length]='<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">',T[T.length]="<a:themeElements>",T[T.length]='<a:clrScheme name="Office">',T[T.length]='<a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1>',T[T.length]='<a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1>',T[T.length]='<a:dk2><a:srgbClr val="1F497D"/></a:dk2>',T[T.length]='<a:lt2><a:srgbClr val="EEECE1"/></a:lt2>',T[T.length]='<a:accent1><a:srgbClr val="4F81BD"/></a:accent1>',T[T.length]='<a:accent2><a:srgbClr val="C0504D"/></a:accent2>',T[T.length]='<a:accent3><a:srgbClr val="9BBB59"/></a:accent3>
243',T[T.length]='<a:accent4><a:srgbClr val="8064A2"/></a:accent4>',T[T.length]='<a:accent5><a:srgbClr val="4BACC6"/></a:accent5>',T[T.length]='<a:accent6><a:srgbClr val="F79646"/></a:accent6>',T[T.length]='<a:hlink><a:srgbClr val="0000FF"/></a:hlink>',T[T.length]='<a:folHlink><a:srgbClr val="800080"/></a:folHlink>',T[T.length]="</a:clrScheme>",T[T.length]='<a:fontScheme name="Office">',T[T.length]="<a:majorFont>",T[T.length]='<a:latin typeface="Cambria"/>',T[T.length]='<a:ea typeface=""/>',T[T.length]='<a:cs typeface=""/>',T[T.length]='<a:font script="Jpan" typeface="ï¼ï¼³ ï¼°ã´ã·ãã¯"/>',T[T.length]='<a:font script="Hang" typeface="ë§ì ê³ ë"/>',T[T.length]='<a:font script="Hans" typeface="å®ä½"/>',T[T.length]='<a:font script="Hant" typeface="æ°ç´°æé«"/>',T[T.length]='<a:font script="Arab" typeface="Times New Roman"/>',T[T.length]='<a:font script="Hebr" typeface="Times New Roman"/>',T[T.length]='<a:font script="Thai" typeface="Tahoma"/>',T[T.length]='<a:font script="Ethi" typeface="Nyala"/>',T[T.length]='<a:font script="Beng" typeface="Vrinda"/>',T[T.length]='<a:font script="Gujr" typeface="Shruti"/>',T[T.length]='<a:font script="Khmr" typeface="MoolBoran"/>',T[T.length]='<a:font script="Knda" typeface="Tunga"/>',T[T.length]='<a:font script="Guru" typeface="Raavi"/>',T[T.length]='<a:font script="Cans" typeface="Euphemia"/>',T[T.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',T[T.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',T[T.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',T[T.length]='<a:font script="Thaa" typeface="MV Boli"/>',T[T.length]='<a:font script="Deva" typeface="Mangal"/>',T[T.length]='<a:font script="Telu" typeface="Gautami"/>',T[T.length]='<a:font script="Taml" typeface="Latha"/>',T[T.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',T[T.length]='<a:font script="Orya" typeface="Kalinga"/>',T[T.length]='<a:font script="Mlym" typeface="Kartika"/>',T[T.length]='<a:font script="Laoo" typeface="DokChampa"/>',T[T.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',T[T.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>',T[T.length]='<a:font script="Viet" typeface="Times New Roman"/>',T[T.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',T[T.length]='<a:font script="Geor" typeface="Sylfaen"/>',T[T.length]="</a:majorFont>",T[T.length]="<a:minorFont>",T[T.length]='<a:latin typeface="Calibri"/>',T[T.length]='<a:ea typeface=""/>',T[T.length]='<a:cs typeface=""/>',T[T.length]='<a:font script="Jpan" typeface="ï¼ï¼³ ï¼°ã´ã·ãã¯"/>',T[T.length]='<a:font script="Hang" typeface="ë§ì ê³ ë"/>',T[T.length]='<a:font script="Hans" typeface="å®ä½"/>',T[T.length]='<a:font script="Hant" typeface="æ°ç´°æé«"/>',T[T.length]='<a:font script="Arab" typeface="Arial"/>',T[T.length]='<a:font script="Hebr" typeface="Arial"/>',T[T.length]='<a:font script="Thai" typeface="Tahoma"/>',T[T.length]='<a:font script="Ethi" typeface="Nyala"/>',T[T.length]='<a:font script="Beng" typeface="Vrinda"/>',T[T.length]='<a:font script="Gujr" typeface="Shruti"/>',T[T.length]='<a:font script="Khmr" typeface="DaunPenh"/>',T[T.length]='<a:font script="Knda" typeface="Tunga"/>',T[T.length]='<a:font script="Guru" typeface="Raavi"/>',T[T.length]='<a:font script="Cans" typeface="Euphemia"/>',T[T.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',T[T.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',T[T.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',T[T.length]='<a:font script="Thaa" typeface="MV Boli"/>',T[T.length]='<a:font script="Deva" typeface="Mangal"/>',T[T.length]='<a:font script="Telu" typeface="Gautami"/>',T[T.length]='<a:font script="Taml" typeface="Latha"/>',T[T.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',T[T.length]='<a:font script="Orya" typeface="Kalinga"/>',T[T.length]='<a:font script="Mlym" typeface="Kartika"/>',T[T.length]='<a:font script="Laoo" typeface="DokChampa"/>',T[T.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',T[T.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>
243',T[T.length]='<a:font script="Viet" typeface="Arial"/>',T[T.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',T[T.length]='<a:font script="Geor" typeface="Sylfaen"/>',T[T.length]="</a:minorFont>",T[T.length]="</a:fontScheme>",T[T.length]='<a:fmtScheme name="Office">',T[T.length]="<a:fillStyleLst>",T[T.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',T[T.length]='<a:gradFill rotWithShape="1">',T[T.length]="<a:gsLst>",T[T.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',T[T.length]="</a:gsLst>",T[T.length]='<a:lin ang="16200000" scaled="1"/>',T[T.length]="</a:gradFill>",T[T.length]='<a:gradFill rotWithShape="1">',T[T.length]="<a:gsLst>",T[T.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="100000"/><a:satMod val="130000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val="100000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',T[T.length]="</a:gsLst>",T[T.length]='<a:lin ang="16200000" scaled="0"/>',T[T.length]="</a:gradFill>",T[T.length]="</a:fillStyleLst>",T[T.length]="<a:lnStyleLst>",T[T.length]='<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln>',T[T.length]='<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',T[T.length]='<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',T[T.length]="</a:lnStyleLst>",T[T.length]="<a:effectStyleLst>",T[T.length]="<a:effectStyle>",T[T.length]="<a:effectLst>",T[T.length]='<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw>',T[T.length]="</a:effectLst>",T[T.length]="</a:effectStyle>",T[T.length]="<a:effectStyle>",T[T.length]="<a:effectLst>",T[T.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',T[T.length]="</a:effectLst>",T[T.length]="</a:effectStyle>",T[T.length]="<a:effectStyle>",T[T.length]="<a:effectLst>",T[T.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',T[T.length]="</a:effectLst>",T[T.length]='<a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d>',T[T.length]='<a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d>',T[T.length]="</a:effectStyle>",T[T.length]="</a:effectStyleLst>",T[T.length]="<a:bgFillStyleLst>",T[T.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',T[T.length]='<a:gradFill rotWithShape="1">',T[T.length]="<a:gsLst>",T[T.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs>',T[T.length]="</a:gsLst>",T[T.length]='<a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path>',T[T.length]="</a:gradFill>",T[T.length]='<a:gradFill rotWithShape="1">',T[T.length]="<a:gsLst>",T[T.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',T[T.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs>',T[T.length]="</a:gsLst>
243",T[T.length]='<a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path>',T[T.length]="</a:gradFill>",T[T.length]="</a:bgFillStyleLst>",T[T.length]="</a:fmtScheme>",T[T.length]="</a:themeElements>",T[T.length]="<a:objectDefaults>",T[T.length]="<a:spDef>",T[T.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style>',T[T.length]="</a:spDef>",T[T.length]="<a:lnDef>",T[T.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style>',T[T.length]="</a:lnDef>",T[T.length]="</a:objectDefaults>",T[T.length]="<a:extraClrSchemeLst/>",T[T.length]="</a:theme>",T.join("")}function parse_Theme(o,u,T){var S=o.l+u,E=o.read_shift(4);if(E!==124226){if(!T.cellStyles){o.l=S;return}var C=o.slice(o.l);o.l=S;var _;try{_=zip_read(C,{type:"array"})}catch{return}var P=getzipstr(_,"theme/theme/theme1.xml",!0);if(P)return parse_theme_xml(P,T)}}function parse_ColorTheme(o){return o.read_shift(4)}function parse_FullColorExt(o){var u={};switch(u.xclrType=o.read_shift(2),u.nTintShade=o.read_shift(2),u.xclrType){case 0:o.l+=4;break;case 1:u.xclrValue=parse_IcvXF(o,4);break;case 2:u.xclrValue=parse_LongRGBA(o);break;case 3:u.xclrValue=parse_ColorTheme(o);break;case 4:o.l+=4;break}return o.l+=8,u}function parse_IcvXF(o,u){return parsenoop(o,u)}function parse_XFExtGradient(o,u){return parsenoop(o,u)}function parse_ExtProp(o){var u=o.read_shift(2),T=o.read_shift(2)-4,S=[u];switch(u){case 4:case 5:case 7:case 8:case 9:case 10:case 11:case 13:S[1]=parse_FullColorExt(o);break;case 6:S[1]=parse_XFExtGradient(o,T);break;case 14:case 15:S[1]=o.read_shift(T===1?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+u+" "+T)}return S}function parse_XFExt(o,u){var T=o.l+u;o.l+=2;var S=o.read_shift(2);o.l+=2;for(var E=o.read_shift(2),C=[];E-- >0;)C.push(parse_ExtProp(o,T-o.l));return{ixfe:S,ext:C}}function update_xfext(o,u){u.forEach(function(T){switch(T[0]){}})}function parse_BrtMdtinfo(o,u){return{flags:o.read_shift(4),version:o.read_shift(4),name:parse_XLWideString(o)}}function write_BrtMdtinfo(o){var u=new_buf(12+2*o.name.length);return u.write_shift(4,o.flags),u.write_shift(4,o.version),write_XLWideString(o.name,u),u.slice(0,u.l)}function parse_BrtMdb(o){for(var u=[],T=o.read_shift(4);T-- >0;)u.push([o.read_shift(4),o.read_shift(4)]);return u}function write_BrtMdb(o){var u=new_buf(4+8*o.length);u.write_shift(4,o.length);for(var T=0;T<o.length;++T)u.write_shift(4,o[T][0]),u.write_shift(4,o[T][1]);return u}function write_BrtBeginEsfmd(o,u){var T=new_buf(8+2*u.length);return T.write_shift(4,o),write_XLWideString(u,T),T.slice(0,T.l)}function parse_BrtBeginEsmdb(o){return o.l+=4,o.read_shift(4)!=0}function write_BrtBeginEsmdb(o,u){var T=new_buf(8);return T.write_shift(4,o),T.write_shift(4,1),T}function parse_xlmeta_bin(o,u,T){var S={Types:[],Cell:[],Value:[]},E=T||{},C=[],_=!1,P=2;return recordhopper(o,function(R,I,L){switch(L){case 335:S.Types.push({name:R.name});break;case 51:R.forEach(function(j){P==1?S.Cell.push({type:S.Types[j[0]-1].name,index:j[1]}):P==0&&S.Value.push({type:S.Types[j[0]-1].name,index:j[1]})});break;case 337:P=R?1:0;break;case 338:P=2;break;case 35:C.push(L),_=!0;break;case 36:C.pop(),_=!1;break;default:if(!I.T){if(!_||E.WTF&&C[C.length-1]!=35)throw new Error("Unexpected record 0x"+L.toString(16))}}}),S}function write_xlmeta_bin(){var o=buf_array();return write_record(o,332),write_record(o,334,write_UInt32LE(1)),write_record(o,335,write_BrtMdtinfo({name:"XLDAPR",version:12e4,flags:3496657072})),write_record(o,336),write_record(o,339,write_BrtBeginEsfmd(1,"XLDAPR")),write_record(o,52),write_record(o,35,write_UInt32LE(514)),write_record(o,4096,write_UInt32LE(0)),write_record(o,4097,writeuint16(1)),write_record(o,36),write_record(o,53),write_record(o,340),write_record(o,337,write_BrtBeginEsmdb(1)),write_record(o,51,write_BrtMdb([[1,0]])
vendor: 6,589 bytes, lines 243-263
243),write_record(o,338),write_record(o,333),o.end()}function parse_xlmeta_xml(o,u,T){var S={Types:[],Cell:[],Value:[]};if(!o)return S;var E=!1,C=2,_;return o.replace(tagregex,function(P){var R=parsexmltag(P);switch(strip_ns(R[0])){case"<?xml":break;case"<metadata":case"</metadata>":break;case"<metadataTypes":case"</metadataTypes>":break;case"<metadataType":S.Types.push({name:R.name});break;case"</metadataType>":break;case"<futureMetadata":for(var I=0;I<S.Types.length;++I)S.Types[I].name==R.name&&(_=S.Types[I]);break;case"</futureMetadata>":break;case"<bk>":break;case"</bk>":break;case"<rc":C==1?S.Cell.push({type:S.Types[R.t-1].name,index:+R.v}):C==0&&S.Value.push({type:S.Types[R.t-1].name,index:+R.v});break;case"</rc>":break;case"<cellMetadata":C=1;break;case"</cellMetadata>":C=2;break;case"<valueMetadata":C=0;break;case"</valueMetadata>":C=2;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":E=!0;break;case"</ext>":E=!1;break;case"<rvb":if(!_)break;_.offsets||(_.offsets=[]),_.offsets.push(+R.i);break;default:if(!E&&T.WTF)throw new Error("unrecognized "+R[0]+" in metadata")}return P}),S}function write_xlmeta_xml(){var o=[XML_HEADER];return o.push(`<metadata xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:xlrd="http://schemas.microsoft.com/office/spreadsheetml/2017/richdata" xmlns:xda="http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray"> 244 <metadataTypes count="1"> 245 <metadataType name="XLDAPR" minSupportedVersion="120000" copy="1" pasteAll="1" pasteValues="1" merge="1" splitFirst="1" rowColShift="1" clearFormats="1" clearComments="1" assign="1" coerce="1" cellMeta="1"/> 246 </metadataTypes> 247 <futureMetadata name="XLDAPR" count="1"> 248 <bk> 249 <extLst> 250 <ext uri="{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}"> 251 <xda:dynamicArrayProperties fDynamic="1" fCollapsed="0"/> 252 </ext> 253 </extLst> 254 </bk> 255 </futureMetadata> 256 <cellMetadata count="1"> 257 <bk> 258 <rc t="1" v="0"/> 259 </bk> 260 </cellMetadata> 261</metadata>`),o.join("")}function parse_cc_xml(o){var u=[];if(!o)return u;var T=1;return(o.match(tagregex)||[]).forEach(function(S){var E=parsexmltag(S);switch(E[0]){case"<?xml":break;case"<calcChain":case"<calcChain>":case"</calcChain>":break;case"<c":delete E[0],E.i?T=E.i:E.i=T,u.push(E);break}}),u}function parse_BrtCalcChainItem$(o){var u={};u.i=o.read_shift(4);var T={};T.r=o.read_shift(4),T.c=o.read_shift(4),u.r=encode_cell(T);var S=o.read_shift(1);return S&2&&(u.l="1"),S&8&&(u.a="1"),u}function parse_cc_bin(o,u,T){var S=[];return recordhopper(o,function(C,_,P){switch(P){case 63:S.push(C);break;default:if(!_.T)throw new Error("Unexpected record 0x"+P.toString(16))}}),S}function parse_xlink_xml(){}function parse_xlink_bin(o,u,T,S){if(!o)return o;var E=S||{},C=!1;recordhopper(o,function(P,R,I){switch(I){case 359:case 363:case 364:case 366:case 367:case 368:case 369:case 370:case 371:case 472:case 577:case 578:case 579:case 580:case 581:case 582:case 583:case 584:case 585:case 586:case 587:break;case 35:C=!0;break;case 36:C=!1;break;default:if(!R.T){if(!C||E.WTF)throw new Error("Unexpected record 0x"+I.toString(16))}}},E)}function parse_drawing(o,u){if(!o)return"??";var T=(o.match(/<c:chart [^>]*r:id="([^"]*)"/)||["",""])[1];return u["!id"][T].Target}var _shapeid=1024;function write_comments_vml(o,u){for(var T=[21600,21600],S=["m0,0l0",T[1],T[0],T[1],T[0],"0xe"].join(","),E=[writextag("xml",null,{"xmlns:v":XLMLNS.v,"xmlns:o":XLMLNS.o,"xmlns:x":XLMLNS.x,"xmlns:mv":XLMLNS.mv}).replace(/\/>/,">"),writextag("o:shapelayout",writextag("o:idmap",null,{"v:ext":"edit",data:o}),{"v:ext":"edit"}),writextag("v:shapetype",[writextag("v:stroke",null,{joinstyle:"miter"}),writextag("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:T.join(","),path:S})];_shapeid<o*1e3;)_shapeid+=1e3;return u.forEach(function(C){var _=decode_cell(C[0]),P={color2:"#BEFF82",type:"gradient"};P.type=="gradient"&&(P.angle="-180");var R=P.type=="gradient"?writextag("o:fill",null,{type:"gradientUnscaled","v:ext":"view"}):null,I=writextag("v:fill",R,P),L={on:"t",obscured:"t"};++_shapeid,E=E.concat(["<v:shape"+wxt_helper({id:"_x0000_s"+_shapeid,type:"#_x0000_t202",style:"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10"+(C[1].hidden?";visibility:hidden":""),fillcolor:"#ECFAD4",strokecolor:"#edeaa1"})+">",I,writextag("v:shadow",null,L),writextag("v:path",null,{"o:connecttype":"none"}),'<v:textbox><div style="text-align:left"></div></v:textbox>','<x:ClientData ObjectType="Note">',"<x:MoveWithCells/>","<x:SizeWithCells/>",writetag("x:Anchor",[_.c+1,0,_.r+1,0,_.c+3,20,_.r+5,20].join(",")),writetag("x:AutoFill","False"),writetag("x:Row",String(_.r)),writetag("x:Column",String(_.c)),C[1].hidden?"":"<x:Visible/>","</x:ClientData>","</v:shape>"])}),E.push("</xml>"),E.join("")}function sheet_insert_comments(o,u,T,S){var E=Array.isArray(o),C;u.forEach(function(_){var P=decode_cell(_.ref);if(E?(o[P.r]||(o[P.r]=[]),C=o[P.r][P.c]):C=o[_.ref],!C){C={t:"z"},E?o[P.r][P.c]=C:o[_.ref]=C;var R=safe_decode_range(o["!ref"]||"BDWGO1000001:A1");R.s.r>P.r&&(R.s.r=P.r),R.e.r<P.r&&(R.e.r=P.r),R.s.c>P.c&&(R.s.c=P.c),R.e.c<P.c&&(R.e.c=P.c);var I=encode_range(R);I!==o["!ref"]&&(o["!ref"]=I)}C.c||(C.c=[]);var L={a:_.author,t:_.t,r:_.r,T};_.h&&(L.h=_.h);for(var j=C.c.length-1;j>=0;--j){if(!T&&C.c[j].T)return;T&&!C.c[j].T&&C.c.splice(j,1)}if(T&&S){for(j=0;j<S.length;++j)if(L.a==S[j].id){L.a=S[j].name||L.a;break}}C.c.push(L)})}function parse_comments_xml(o,u){if(o.match(/<(?:\w+:)?comments *\/>/))return[];var T=[],S=[],E=o.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);E&&E[1]&&E[1].split(/<\/\w*:?author>/).forEach(function(_){if(!(_===""||_.trim()==="")){var P=_.match(/<(?:\w+:)?author[^>]*>(.*)/);P&&T.push(P[1])}});var C=o.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);return C&&C[1]&&C[1].split(/<\/\w*:?comment>/).forEach(function(_){if(!(_===""||_.trim()==="")){var P=_.match(/<(?:\w+:)?comment[^>]*>/);if(P){var R=parsexmltag(P[0]),I={author:R.authorId&&T[R.authorId]||"sheetjsghost",ref:R.ref,guid:R.guid},L=decode_cell(R.ref);if(!(u.sheetRows&&u.sheetRows<=L.r)){var j=_.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/),M=!!j&&!!j[1]&&parse_si(j[1])||{r:"",t:"",h:""};I.r=M.r,M.r=="<t></t>"&&(M.t=M.h=""),I.t=(M.t||"").replace(/\r\n/g,` 262`).replace(/\r/g,` 263`),u.cellHTML&&(I.h=M.h),S.push(I)}}}}),S}function write_comments_xml(o){var u=[XML_HEADER,writextag("comments",null,{xmlns:XMLNS_main[0]})],T=[];return u.push("<authors>
263"),o.forEach(function(S){S[1].forEach(function(E){var C=escapexml(E.a);T.indexOf(C)==-1&&(T.push(C),u.push("<author>"+C+"</author>")),E.T&&E.ID&&T.indexOf("tc="+E.ID)==-1&&(T.push("tc="+E.ID),u.push("<author>tc="+E.ID+"</author>"))})}),T.length==0&&(T.push("SheetJ5"),u.push("<author>SheetJ5</author>")),u.push("</authors>"),u.push("<commentList>"),o.forEach(function(S){var E=0,C=[];if(S[1][0]&&S[1][0].T&&S[1][0].ID?E=T.indexOf("tc="+S[1][0].ID):S[1].forEach(function(R){R.a&&(E=T.indexOf(escapexml(R.a))),C.push(R.t||"")}),u.push('<comment ref="'+S[0]+'" authorId="'+E+'"><text>'),C.length<=1)u.push(writetag("t",escapexml(C[0]||"")));else{for(var _=`Comment: 264 `+C[0]+` 265`,P=1;P<C.length;++P)_+=`Reply: 266 `+C[P]+` 267`;u.push(writetag("t",escapexml(_)))}u.push("</text></comment>")}),u.push("</commentList>"),u.length>2&&(u[u.length]="</comments>",u[1]=u[1].replace("/>",">")),u.join("")}function parse_tcmnt_xml(o,u){var T=[],S=!1,E={},C=0;return o.replace(tagregex,function(P,R){var I=parsexmltag(P);switch(strip_ns(I[0])){case"<?xml":break;case"<ThreadedComments":break;case"</ThreadedComments>":break;case"<threadedComment":E={author:I.personId,guid:I.id,ref:I.ref,T:1};break;case"</threadedComment>":E.t!=null&&T.push(E);break;case"<text>":case"<text":C=R+P.length;break;case"</text>":E.t=o.slice(C,R).replace(/\r\n/g,` 268`).replace(/\r/g,` 269`);break;case"<mentions":case"<mentions>":S=!0;break;case"</mentions>":S=!1;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":S=!0;break;case"</ext>":S=!1;break;default:if(!S&&u.WTF)throw new Error("unrecognized "+I[0]+" in threaded comments")}return P}),T}function write_tcmnt_xml(o,u,T){var S=[XML_HEADER,writextag("ThreadedComments",null,{xmlns:XMLNS.TCMNT}).replace(/[\/]>/,">")];return o.forEach(function(E){var C="";(E[1]||[]).forEach(function(_,P){if(!_.T){delete _.ID;return}_.a&&u.indexOf(_.a)==-1&&u.push(_.a);var R={ref:E[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+T.tcid++).slice(-12)+"}"};P==0?C=R.id:R.parentId=C,_.ID=R.id,_.a&&(R.personId="{54EE7950-7262-4200-6969-"+("000000000000"+u.indexOf(_.a)).slice(-12)+"}"),S.push(writextag("threadedComment",writetag("text",_.t||""),R))})}),S.push("</ThreadedComments>"),S.join("")}function parse_people_xml(o,u){var T=[],S=!1;return o.replace(tagregex,function(C){var _=parsexmltag(C);switch(strip_ns(_[0])){case"<?xml":break;case"<personList":break;case"</personList>":break;case"<person":T.push({name:_.displayname,id:_.id});break;case"</person>":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":S=!0;break;case"</ext>":S=!1;break;default:if(!S&&u.WTF)throw new Error("unrecognized "+_[0]+" in threaded comments")}return C}),T}function write_people_xml(o){var u=[XML_HEADER,writextag("personList",null,{xmlns:XMLNS.TCMNT,"xmlns:x":XMLNS_main[0]}).replace(/[\/]>/,">")];return o.forEach(function(T,S){u.push(writextag("person",null,{displayName:T,id:"{54EE7950-7262-4200-6969-"+("000000000000"+S).slice(-12)+"}",userId:T,providerId:"None"}))}),u.push("</personList>"),u.join("")}function parse_BrtBeginComment(o){var u={};u.iauthor=o.read_shift(4);var T=parse_UncheckedRfX(o);return u.rfx=T.s,u.ref=encode_cell(T.s),o.l+=16,u}function write_BrtBeginComment(o,u){return u==null&&(u=new_buf(36)),u.write_shift(4,o[1].iauthor),write_UncheckedRfX(o[0],u),u.write_shift(4,0),u.write_shift(4,0),u.write_shift(4,0),u.write_shift(4,0),u}var parse_BrtCommentAuthor=parse_XLWideString;function write_BrtCommentAuthor(o){return write_XLWideString(o.slice(0,54))}function parse_comments_bin(o,u){var T=[],S=[],E={},C=!1;return recordhopper(o,function(P,R,I){switch(I){case 632:S.push(P);break;case 635:E=P;break;case 637:E.t=P.t,E.h=P.h,E.r=P.r;break;case 636:if(E.author=S[E.iauthor],delete E.iauthor,u.sheetRows&&E.rfx&&u.sheetRows<=E.rfx.r)break;E.t||(E.t=""),delete E.rfx,T.push(E);break;case 3072:break;case 35:C=!0;break;case 36:C=!1;break;case 37:break;case 38:break;default:if(!R.T){if(!C||u.WTF)throw new Error("Unexpected record 0x"+I.toString(16))}}}),T}function write_comments_bin(o){var u=buf_array(),T=[];return write_record(u,628),write_record(u,630),o.forEach(function(S){S[1].forEac
269h(function(E){T.indexOf(E.a)>-1||(T.push(E.a.slice(0,54)),write_record(u,632,write_BrtCommentAuthor(E.a)))})}),write_record(u,631),write_record(u,633),o.forEach(function(S){S[1].forEach(function(E){E.iauthor=T.indexOf(E.a);var C={s:decode_cell(S[0]),e:decode_cell(S[0])};write_record(u,635,write_BrtBeginComment([C,E])),E.t&&E.t.length>0&&write_record(u,637,write_BrtCommentText(E)),write_record(u,636),delete E.iauthor})}),write_record(u,634),write_record(u,629),u.end()}var CT_VBA="application/vnd.ms-office.vbaProject";function make_vba_xls(o){var u=CFB.utils.cfb_new({root:"R"});return o.FullPaths.forEach(function(T,S){if(!(T.slice(-1)==="/"||!T.match(/_VBA_PROJECT_CUR/))){var E=T.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");CFB.utils.cfb_add(u,E,o.FileIndex[S].content)}}),CFB.write(u)}function fill_vba_xls(o,u){u.FullPaths.forEach(function(T,S){if(S!=0){var E=T.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");E.slice(-1)!=="/"&&CFB.utils.cfb_add(o,E,u.FileIndex[S].content)}})}var VBAFMTS=["xlsb","xlsm","xlam","biff8","xla"];function parse_ds_bin(){return{"!type":"dialog"}}function parse_ds_xml(){return{"!type":"dialog"}}function parse_ms_bin(){return{"!type":"macro"}}function parse_ms_xml(){return{"!type":"macro"}}var rc_to_a1=function(){var o=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g,u={r:0,c:0};function T(S,E,C,_){var P=!1,R=!1;C.length==0?R=!0:C.charAt(0)=="["&&(R=!0,C=C.slice(1,-1)),_.length==0?P=!0:_.charAt(0)=="["&&(P=!0,_=_.slice(1,-1));var I=C.length>0?parseInt(C,10)|0:0,L=_.length>0?parseInt(_,10)|0:0;return P?L+=u.c:--L,R?I+=u.r:--I,E+(P?"":"$")+encode_col(L)+(R?"":"$")+encode_row(I)}return function(E,C){return u=C,E.replace(o,T)}}(),crefregex=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g,a1_to_rc=function(){return function(u,T){return u.replace(crefregex,function(S,E,C,_,P,R){var I=decode_col(_)-(C?0:T.c),L=decode_row(R)-(P?0:T.r),j=L==0?"":P?L+1:"["+L+"]",M=I==0?"":C?I+1:"["+I+"]";return E+"R"+j+"C"+M})}}();function shift_formula_str(o,u){return o.replace(crefregex,function(T,S,E,C,_,P){return S+(E=="$"?E+C:encode_col(decode_col(C)+u.c))+(_=="$"?_+P:encode_row(decode_row(P)+u.r))})}function shift_formula_xlsx(o,u,T){var S=decode_range(u),E=S.s,C=decode_cell(T),_={r:C.r-E.r,c:C.c-E.c};return shift_formula_str(o,_)}function fuzzyfmla(o){return o.length!=1}function _xlfn(o){return o.replace(/_xlfn\./g,"")}function parseread1(o){o.l+=1}function parse_ColRelU(o,u){var T=o.read_shift(2);return[T&16383,T>>14&1,T>>15&1]}function parse_RgceArea(o,u,T){var S=2;if(T){if(T.biff>=2&&T.biff<=5)return parse_RgceArea_BIFF2(o);T.biff==12&&(S=4)}var E=o.read_shift(S),C=o.read_shift(S),_=parse_ColRelU(o),P=parse_ColRelU(o);return{s:{r:E,c:_[0],cRel:_[1],rRel:_[2]},e:{r:C,c:P[0],cRel:P[1],rRel:P[2]}}}function parse_RgceArea_BIFF2(o){var u=parse_ColRelU(o),T=parse_ColRelU(o),S=o.read_shift(1),E=o.read_shift(1);return{s:{r:u[0],c:S,cRel:u[1],rRel:u[2]},e:{r:T[0],c:E,cRel:T[1],rRel:T[2]}}}function parse_RgceAreaRel(o,u,T){if(T.biff<8)return parse_RgceArea_BIFF2(o);var S=o.read_shift(T.biff==12?4:2),E=o.read_shift(T.biff==12?4:2),C=parse_ColRelU(o),_=parse_ColRelU(o);return{s:{r:S,c:C[0],cRel:C[1],rRel:C[2]},e:{r:E,c:_[0],cRel:_[1],rRel:_[2]}}}function parse_RgceLoc(o,u,T){if(T&&T.biff>=2&&T.biff<=5)return parse_RgceLoc_BIFF2(o);var S=o.read_shift(T&&T.biff==12?4:2),E=parse_ColRelU(o);return{r:S,c:E[0],cRel:E[1],rRel:E[2]}}function parse_RgceLoc_BIFF2(o){var u=parse_ColRelU(o),T=o.read_shift(1);return{r:u[0],c:T,cRel:u[1],rRel:u[2]}}function parse_RgceElfLoc(o){var u=o.read_shift(2),T=o.read_shift(2);return{r:u,c:T&255,fQuoted:!!(T&16384),cRel:T>>15,rRel:T>>15}}function parse_RgceLocRel(o,u,T){var S=T&&T.biff?T.biff:8;if(S>=2&&S<=5)return parse_RgceLocRel_BIFF2(o);var E=o.read_shift(S>=12?4:2),C=o.read_shift(2),_=(C&16384)>>14,P=(C&32768)>>15;if(C&=16383,P==1)for(;E>524287;)E-=1048576;if(_==1)for(;C>8191;)C=C-16384;return{r:E,c:C,cRel:_,rRel:P}}function parse_RgceLocRel_BIFF2(o){var u=o.read_shift(2),T=o.read_shift(1),S=(u&32768)>>15,E=(u&16384)>>14;return u&=16383,S==1&&u>=8192&&(u=u-16384),E==1&&T>=128&&(T=T-256),{r:u,c:T,cRel:E,rRel:S}}function parse_PtgArea(o,u,T){var S=(o[o.l++]&96)>>5,E=parse_RgceArea(o,T.biff>=2&&T.biff<=5?6:8,T);return[S,E]}function parse_PtgArea3d(o,u,T){var S=(o[o.l++]&96)>>5,E=o.read_shift(2,"i"),C=8;if(T)switch(T.biff){case 5:o.l+=12,C=6;break;case 12:C=12;break}var _=parse_RgceArea(o,C,T);return[S,E,_]}function parse_PtgAreaErr(o,u,T){var S=(o[o.l++]&96)>>5;return o.l+=T&&T.biff>8?12:T.biff<8?6:8,[S]}function parse_PtgAreaErr3d(o,u,T){var S=(o[o.l++]&96)>>5,E=o.read_shift(2),C=8;if(T)switch(T.biff){case 5:o.l+=12,C=6;break;case 12:C=12;break}return o.l+=C,[S,E]}function parse_PtgAreaN(o,u,T){var S=(o[o.l++]&96)>>5,E=parse_RgceAreaRel(o,u-1,T);return[S,E]}function parse_PtgArray(o,u,T){var S=(o[o.l++]&96)>>5;return o.l+=T.biff==2?6:T.biff==12?14:7,[S]}function parse_PtgAttrBaxcel(o){var u=o[o.l+1]&1,T=1;return o.l+=4,[u,T]}function parse_PtgAttrChoose(o,u,T){o.l+=2;for(var S=o.read_shift(T&&T.biff==2?1:2),E=[],C=0;C<=S;++C)E.push(o.read_shift(T&&T.biff==2?1:2));return E}function parse_PtgAttrGoto(o,u,T){var S=o[o.l+1]&255?1:0;return o.l+=2,[S,o.read_shift(T&&T.biff==2?1:2)]}function parse_PtgAttrIf(o,u,T){var S=o[o.l+1]&255?1:0;return o.l+=2,[S,o.read_shift(T&&T.biff==2?1:2)]}function parse_PtgAttrIfError(o){var u=o[o.l+1]&255?1:0;return o.l+=2,[u,o.read_shift(2)]}function parse_PtgAttrSemi(o,u,T){var S=o[o.l+1]&255?1:0;return o.l+=T&&T.biff==2?3:4,[S]}function parse_PtgAttrSpaceType(o){var u=o.read_shift(1),T=o.read_shift(1);return[u,T]}function parse_PtgAttrSpace(o){return o.read_shift(2),parse_PtgAttrSpaceType(o)}function parse_PtgAttrSpaceSemi(o){return o.read_shift(2),parse_PtgAttrSpaceType(o)}function parse_PtgRef(o,u,T){var S=(o[o.l]&96)>>5;o.l+=1;var E=parse_RgceLoc(o,0,T);return[S,E]}function parse_PtgRefN(o,u,T){var S=(o[o.l]&96)>>5;o.l+=1;var E=parse_RgceLocRel(o,0,T);return[S,E]}function parse_PtgRef3d(o,u,T){var S=(o[o.l]&96)>>5;o.l+=1;var E=o.read_shift(2);
269T&&T.biff==5&&(o.l+=12);var C=parse_RgceLoc(o,0,T);return[S,E,C]}function parse_PtgFunc(o,u,T){var S=(o[o.l]&96)>>5;o.l+=1;var E=o.read_shift(T&&T.biff<=3?1:2);return[FtabArgc[E],Ftab[E],S]}function parse_PtgFuncVar(o,u,T){var S=o[o.l++],E=o.read_shift(1),C=T&&T.biff<=3?[S==88?-1:0,o.read_shift(1)]:parsetab(o);return[E,(C[0]===0?Ftab:Cetab)[C[1]]]}function parsetab(o){return[o[o.l+1]>>7,o.read_shift(2)&32767]}function parse_PtgAttrSum(o,u,T){o.l+=T&&T.biff==2?3:4}function parse_PtgExp(o,u,T){if(o.l++,T&&T.biff==12)return[o.read_shift(4,"i"),0];var S=o.read_shift(2),E=o.read_shift(T&&T.biff==2?1:2);return[S,E]}function parse_PtgErr(o){return o.l++,BErr[o.read_shift(1)]}function parse_PtgInt(o){return o.l++,o.read_shift(2)}function parse_PtgBool(o){return o.l++,o.read_shift(1)!==0}function parse_PtgNum(o){return o.l++,parse_Xnum(o)}function parse_PtgStr(o,u,T){return o.l++,parse_ShortXLUnicodeString(o,u-1,T)}function parse_SerAr(o,u){var T=[o.read_shift(1)];if(u==12)switch(T[0]){case 2:T[0]=4;break;case 4:T[0]=16;break;case 0:T[0]=1;break;case 1:T[0]=2;break}switch(T[0]){case 4:T[1]=parsebool(o,1)?"TRUE":"FALSE",u!=12&&(o.l+=7);break;case 37:case 16:T[1]=BErr[o[o.l]],o.l+=u==12?4:8;break;case 0:o.l+=8;break;case 1:T[1]=parse_Xnum(o);break;case 2:T[1]=parse_XLUnicodeString2(o,0,{biff:u>0&&u<8?2:u});break;default:throw new Error("Bad SerAr: "+T[0])}return T}function parse_PtgExtraMem(o,u,T){for(var S=o.read_shift(T.biff==12?4:2),E=[],C=0;C!=S;++C)E.push((T.biff==12?parse_UncheckedRfX:parse_Ref8U)(o));return E}function parse_PtgExtraArray(o,u,T){var S=0,E=0;T.biff==12?(S=o.read_shift(4),E=o.read_shift(4)):(E=1+o.read_shift(1),S=1+o.read_shift(2)),T.biff>=2&&T.biff<8&&(--S,--E==0&&(E=256));for(var C=0,_=[];C!=S&&(_[C]=[]);++C)for(var P=0;P!=E;++P)_[C][P]=parse_SerAr(o,T.biff);return _}function parse_PtgName(o,u,T){var S=o.read_shift(1)>>>5&3,E=!T||T.biff>=8?4:2,C=o.read_shift(E);switch(T.biff){case 2:o.l+=5;break;case 3:case 4:o.l+=8;break;case 5:o.l+=12;break}return[S,0,C]}function parse_PtgNameX(o,u,T){if(T.biff==5)return parse_PtgNameX_BIFF5(o);var S=o.read_shift(1)>>>5&3,E=o.read_shift(2),C=o.read_shift(4);return[S,E,C]}function parse_PtgNameX_BIFF5(o){var u=o.read_shift(1)>>>5&3,T=o.read_shift(2,"i");o.l+=8;var S=o.read_shift(2);return o.l+=12,[u,T,S]}function parse_PtgMemArea(o,u,T){var S=o.read_shift(1)>>>5&3;o.l+=T&&T.biff==2?3:4;var E=o.read_shift(T&&T.biff==2?1:2);return[S,E]}function parse_PtgMemFunc(o,u,T){var S=o.read_shift(1)>>>5&3,E=o.read_shift(T&&T.biff==2?1:2);return[S,E]}function parse_PtgRefErr(o,u,T){var S=o.read_shift(1)>>>5&3;return o.l+=4,T.biff<8&&o.l--,T.biff==12&&(o.l+=2),[S]}function parse_PtgRefErr3d(o,u,T){var S=(o[o.l++]&96)>>5,E=o.read_shift(2),C=4;if(T)switch(T.biff){case 5:C=15;break;case 12:C=6;break}return o.l+=C,[S,E]}var parse_PtgMemErr=parsenoop,parse_PtgMemNoMem=parsenoop,parse_PtgTbl=parsenoop;function parse_PtgElfLoc(o,u,T){return o.l+=2,[parse_RgceElfLoc(o)]}function parse_PtgElfNoop(o){return o.l+=6,[]}var parse_PtgElfCol=parse_PtgElfLoc,parse_PtgElfColS=parse_PtgElfNoop,parse_PtgElfColSV=parse_PtgElfNoop,parse_PtgElfColV=parse_PtgElfLoc;function parse_PtgElfLel(o){return o.l+=2,[parseuint16(o),o.read_shift(2)&1]}var parse_PtgElfRadical=parse_PtgElfLoc,parse_PtgElfRadicalLel=parse_PtgElfLel,parse_PtgElfRadicalS=parse_PtgElfNoop,parse_PtgElfRw=parse_PtgElfLoc,parse_PtgElfRwV=parse_PtgElfLoc,PtgListRT=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function parse_PtgList(o){o.l+=2;var u=o.read_shift(2),T=o.read_shift(2),S=o.read_shift(4),E=o.read_shift(2),C=o.read_shift(2),_=PtgListRT[T>>2&31];return{ixti:u,coltype:T&3,rt:_,idx:S,c:E,C}}function parse_PtgSxName(o){return o.l+=2,[o.read_shift(4)]}function parse_PtgSheet(o,u,T){return o.l+=5,o.l+=2,o.l+=T.biff==2?1:4,["PTGSHEET"]}function parse_PtgEndSheet(o,u,T){return o.l+=T.biff==2?4:5,["PTGENDSHEET"]}function parse_PtgMemAreaN(o){var u=o.read_shift(1)>>>5&3,T=o.read_shift(2);return[u,T]}function parse_PtgMemNoMemN(o){var u=o.read_shift(1)>>>5&3,T=o.read_shift(2);return[u,T]}function parse_PtgAttrNoop(o){return o.l+=4,[0,0]}var PtgTypes={1:{n:"PtgExp",f:parse_PtgExp},2:{n:"PtgTbl",f:parse_PtgTbl},3:{n:"PtgAdd",f:parseread1},4:{n:"PtgSub",f:parseread1},5:{n:"PtgMul",f:parseread1},6:{n:"PtgDiv",f:parseread1},7:{n:"PtgPower",f:parseread1},8:{n:"PtgConcat",f:parseread1},9:{n:"PtgLt",f:parseread1},10:{n:"PtgLe",f:parseread1},11:{n:"PtgEq",f:parseread1},12:{n:"PtgGe",f:parseread1},13:{n:"PtgGt",f:parseread1},14:{n:"PtgNe",f:parseread1},15:{n:"PtgIsect",f:parseread1},16:{n:"PtgUnion",f:parseread1},17:{n:"PtgRange",f:parseread1},18:{n:"PtgUplus",f:parseread1},19:{n:"PtgUminus",f:parseread1},20:{n:"PtgPercent",f:parseread1},21:{n:"PtgParen",f:parseread1}
vendor: 10,790 bytes, line 269
269,22:{n:"PtgMissArg",f:parseread1},23:{n:"PtgStr",f:parse_PtgStr},26:{n:"PtgSheet",f:parse_PtgSheet},27:{n:"PtgEndSheet",f:parse_PtgEndSheet},28:{n:"PtgErr",f:parse_PtgErr},29:{n:"PtgBool",f:parse_PtgBool},30:{n:"PtgInt",f:parse_PtgInt},31:{n:"PtgNum",f:parse_PtgNum},32:{n:"PtgArray",f:parse_PtgArray},33:{n:"PtgFunc",f:parse_PtgFunc},34:{n:"PtgFuncVar",f:parse_PtgFuncVar},35:{n:"PtgName",f:parse_PtgName},36:{n:"PtgRef",f:parse_PtgRef},37:{n:"PtgArea",f:parse_PtgArea},38:{n:"PtgMemArea",f:parse_PtgMemArea},39:{n:"PtgMemErr",f:parse_PtgMemErr},40:{n:"PtgMemNoMem",f:parse_PtgMemNoMem},41:{n:"PtgMemFunc",f:parse_PtgMemFunc},42:{n:"PtgRefErr",f:parse_PtgRefErr},43:{n:"PtgAreaErr",f:parse_PtgAreaErr},44:{n:"PtgRefN",f:parse_PtgRefN},45:{n:"PtgAreaN",f:parse_PtgAreaN},46:{n:"PtgMemAreaN",f:parse_PtgMemAreaN},47:{n:"PtgMemNoMemN",f:parse_PtgMemNoMemN},57:{n:"PtgNameX",f:parse_PtgNameX},58:{n:"PtgRef3d",f:parse_PtgRef3d},59:{n:"PtgArea3d",f:parse_PtgArea3d},60:{n:"PtgRefErr3d",f:parse_PtgRefErr3d},61:{n:"PtgAreaErr3d",f:parse_PtgAreaErr3d},255:{}},PtgDupes={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61},Ptg18={1:{n:"PtgElfLel",f:parse_PtgElfLel},2:{n:"PtgElfRw",f:parse_PtgElfRw},3:{n:"PtgElfCol",f:parse_PtgElfCol},6:{n:"PtgElfRwV",f:parse_PtgElfRwV},7:{n:"PtgElfColV",f:parse_PtgElfColV},10:{n:"PtgElfRadical",f:parse_PtgElfRadical},11:{n:"PtgElfRadicalS",f:parse_PtgElfRadicalS},13:{n:"PtgElfColS",f:parse_PtgElfColS},15:{n:"PtgElfColSV",f:parse_PtgElfColSV},16:{n:"PtgElfRadicalLel",f:parse_PtgElfRadicalLel},25:{n:"PtgList",f:parse_PtgList},29:{n:"PtgSxName",f:parse_PtgSxName},255:{}},Ptg19={0:{n:"PtgAttrNoop",f:parse_PtgAttrNoop},1:{n:"PtgAttrSemi",f:parse_PtgAttrSemi},2:{n:"PtgAttrIf",f:parse_PtgAttrIf},4:{n:"PtgAttrChoose",f:parse_PtgAttrChoose},8:{n:"PtgAttrGoto",f:parse_PtgAttrGoto},16:{n:"PtgAttrSum",f:parse_PtgAttrSum},32:{n:"PtgAttrBaxcel",f:parse_PtgAttrBaxcel},33:{n:"PtgAttrBaxcel",f:parse_PtgAttrBaxcel},64:{n:"PtgAttrSpace",f:parse_PtgAttrSpace},65:{n:"PtgAttrSpaceSemi",f:parse_PtgAttrSpaceSemi},128:{n:"PtgAttrIfError",f:parse_PtgAttrIfError},255:{}};function parse_RgbExtra(o,u,T,S){if(S.biff<8)return parsenoop(o,u);for(var E=o.l+u,C=[],_=0;_!==T.length;++_)switch(T[_][0]){case"PtgArray":T[_][1]=parse_PtgExtraArray(o,0,S),C.push(T[_][1]);break;case"PtgMemArea":T[_][2]=parse_PtgExtraMem(o,T[_][1],S),C.push(T[_][2]);break;case"PtgExp":S&&S.biff==12&&(T[_][1][1]=o.read_shift(4),C.push(T[_][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+T[_][0]}return u=E-o.l,u!==0&&C.push(parsenoop(o,u)),C}function parse_Rgce(o,u,T){for(var S=o.l+u,E,C,_=[];S!=o.l;)u=S-o.l,C=o[o.l],E=PtgTypes[C]||PtgTypes[PtgDupes[C]],(C===24||C===25)&&(E=(C===24?Ptg18:Ptg19)[o[o.l+1]]),!E||!E.f?parsenoop(o,u):_.push([E.n,E.f(o,u,T)]);return _}function stringify_array(o){for(var u=[],T=0;T<o.length;++T){for(var S=o[T],E=[],C=0;C<S.length;++C){var _=S[C];if(_)switch(_[0]){case 2:E.push('"'+_[1].replace(/"/g,'""')+'"');break;default:E.push(_[1])}else E.push("")}u.push(E.join(","))}return u.join(";")}var PtgBinOp={PtgAdd:"+",PtgConcat:"&",PtgDiv:"/",PtgEq:"=",PtgGe:">=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function formula_quote_sheet_name(o,u){if(!o&&!(u&&u.biff<=5&&u.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(o)?"'"+o+"'":o}function get_ixti_raw(o,u,T){if(!o)return"SH33TJSERR0";if(T.biff>8&&(!o.XTI||!o.XTI[u]))return o.SheetNames[u];if(!o.XTI)return"SH33TJSERR6";var S=o.XTI[u];if(T.biff<8)return u>1e4&&(u-=65536),u<0&&(u=-u),u==0?"":o.XTI[u-1];if(!S)return"SH33TJSERR1";var E="";if(T.biff>8)switch(o[S[0]][0]){case 357:return E=S[1]==-1?"#REF":o.SheetNames[S[1]],S[1]==S[2]?E:E+":"+o.SheetNames[S[2]];case 358:return T.SID!=null?o.SheetNames[T.SID]:"SH33TJSSAME"+o[S[0]][0];case 355:default:return"SH33TJSSRC"+o[S[0]][0]}switch(o[S[0]][0][0]){case 1025:return E=S[1]==-1?"#REF":o.SheetNames[S[1]]||"SH33TJSERR3",S[1]==S[2]?E:E+":"+o.SheetNames[S[2]];case 14849:return o[S[0]].slice(1).map(function(C){return C.Name}).join(";;");default:return o[S[0]][0][3]?(E=S[1]==-1?"#REF":o[S[0]][0][3][S[1]]||"SH33TJSERR4",S[1]==S[2]?E:E+":"+o[S[0]][0][3][S[2]]):"SH33TJSERR2"}}function get_ixti(o,u,T){var S=get_ixti_raw(o,u,T);return S=="#REF"?S:formula_quote_sheet_name(S,T)}function stringify_formula(o,u,T,S,E){var C=E&&E.biff||8,_={s:{c:0,r:0}},P=[],R,I,L,j=0,M=0,D,F="";if(!o[0]||!o[0][0])return"";for(var N=-1,G="",B=0,H=o[0].length;B<H;++B){var O=o[0][B];switch(O[0]){case"PtgUminus":P.push("-"+P.pop());break;case"PtgUplus":P.push("+"+P.pop());break;case"PtgPercent":P.push(P.pop()+"%");break;case"PtgAdd":case"PtgConcat":case"PtgDiv":case"PtgEq":case"PtgGe":case"PtgGt":case"PtgLe":case"PtgLt":case"PtgMul":case"PtgNe":case"PtgPower":case"PtgSub":if(R=P.pop(),I=P.pop(),N>=0){switch(o[0][N][1][0]){case 0:G=fill(" ",o[0][N][1][1]);break;case 1:G=fill("\r",o[0][N][1][1]);break;default:if(G="",E.WTF)throw new Error("Unexpected PtgAttrSpaceType "+o[0][N][1][0])}I=I+G,N=-1}P.push(I+PtgBinOp[O[0]]+R);break;case"PtgIsect":R=P.pop(),I=P.pop(),P.push(I+" "+R);break;case"PtgUnion":R=P.pop(),I=P.pop(),P.push(I+","+R);break;case"PtgRange":R=P.pop(),I=P.pop(),P.push(I+":"+R);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":L=shift_cell_xls(O[1][1],_,E),P.push(encode_cell_xls(L,C));break;case"PtgRefN":L=T?shift_cell_xls(O[1][1],T,E):O[1][1],P.push(encode_cell_xls(L,C));break;case"PtgRef3d":j=O[1][1],L=shift_cell_xls(O[1][2],_,E),F=get_ixti(S,j,E),P.push(F+"!"+encode_cell_xls(L,C));break;case"PtgFunc":case"PtgFuncVar":var V=O[1][0],U=O[1][1];V||(V=0),V&=127;var W=V==0?[]:P.slice(-V);P.length-=V,U==="User"&&(U=W.shift()),P.push(U+"("+W.join(",")+")");break;case"PtgBool":P.push(O[1]?"TRUE":"FALSE");break;case"PtgInt":P.push(O[1]);break;case"PtgNum":P.push(String(O[1]));break;case"PtgStr":P.push('"'+O[1].replace(/"/g,'""')+'"');break;case"PtgErr":P.push(O[1]);break;case"PtgAreaN":D=shift_range_xls(O[1][1],T?{s:T}:_,E),P.push(encode_range_xls(D,E));break;case"PtgArea":D=shift_range_xls(O[1][1],_,E),P.push(encode_range_xls(D,E));break;case"PtgArea3d":j=O[1][1],D=O[1][2],F=get_ixti(S,j,E),P.push(F+"!"+encode_range_xls(D,E));break;case"PtgAttrSum":P.push("SUM("+P.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":M=O[1][2];var K=(S.names||[])[M-1]||(S[0]||[])[M],Y=K?K.Name:"SH33TJSNAME"+String(M);Y&&Y.slice(0,6)=="_xlfn."&&!E.xlfn&&(Y=Y.slice(6)),P.push(Y);break;case"PtgNameX":var ee=O[1][1];M=O[1][2];var oe;if(E.biff<=5)ee<0&&(ee=-ee),S[ee]&&(oe=S[ee][M]);else{var se="";if(((S[ee]||[])[0]||[])[0]==14849||(((S[ee]||[])[0]||[])[0]==1025?S[ee][M]&&S[ee][M].itab>0&&(se=S.SheetNames[S[ee][M].itab-1]+"!"):se=S.SheetNames[M-1]+"!"),S[ee]&&S[ee][M])se+=S[ee][M].Name;else if(S[0]&&S[0][M])se+=S[0][M].Name;else{var Q=(get_ixti_raw(S,ee,E)||"").split(";;");Q[M-1]?se=Q[M-1]:se+="SH33TJSERRX"}P.push(se);break}oe||(oe={Name:"SH33TJSERRY"}),P.push(oe.Name);break;case"PtgParen":var ie="(",ae=")";if(N>=0){switch(G="",o[0][N][1][0]){case 2:ie=fill(" ",o[0][N][1][1])+ie;break;case 3:ie=fill("\r",o[0][N][1][1])+ie;break;case 4:ae=fill(" ",o[0][N][1][1])+ae;break;case 5:ae=fill("\r",o[0][N][1][1])+ae;break;default:if(E.WTF)throw new Error("Unexpected PtgAttrSpaceType "+o[0][N][1][0])}N=-1}P.push(ie+P.pop()+ae);break;case"PtgRefErr":P.push("#REF!");break;case"PtgRefErr3d":P.push("#REF!");break;case"PtgExp":L={c:O[1][1],r:O[1][0]};var re={c:T.c,r:T.r};if(S.sharedf[encode_cell(L)]){var J=S.sharedf[encode_cell(L)];P.push(stringify_formula(J,_,re,S,E))}else{var te=!1;for(R=0;R!=S.arrayf.length;++R)if(I=S.arrayf[R],!(L.c<I[0].s.c||L.c>I[0].e.c)&&!(L.r<I[0].s.r||L.r>I[0].e.r)){P.push(stringify_formula(I[1],_,re,S,E)),te=!0;break}te||P.push(O[1])}break;case"PtgArray":P.push("{"+stringify_array(O[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":N=B;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":P.push("");break;case"PtgAreaErr":P.push("#REF!");break;case"PtgAreaErr3d":P.push("#REF!");break;case"PtgList":P.push("Table"+O[1].idx+"[#"+O[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(O));default:throw new Error("Unrecognized Formula Token: "+String(O))}var Z=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(E.biff!=3&&N>=0&&Z.indexOf(o[0][B][0])==-1){O=o[0][N];var X=!0;switch(O[1][0]){case 4:X=!1;case 0:G=fill(" ",O[1][1]);break;case 5:X=!1;case 1:G=fill("\r",O[1][1]);break;default:if(G="",E.WTF)throw new Error("Unexpected PtgAttrSpaceType "+O[1][0])}P.push((X?G:"")+P.pop()+(X?"":G)),N=-1}}if(P.length>1&&E.WTF)throw new Error("bad formula stack");return P[0]}function parse_ArrayParsedFormula(o,u,T){var S=o.l+u,E=T.biff==2?1:2,C,_=o.read_shift(E);if(_==65535)return[[],parsenoop(o,u-2)];var P=parse_Rgce(o,_,T);return u!==_+E&&(C=parse_RgbExtra(o,u-_-E,P,T)),o.l=S,[P,C]}function parse_XLSCellParsedFormula(o,u,T){var S=o.l+u,E=T.biff==2?1:2,C,_=o.read_shift(E);if(_==65535)return[[],parsenoop(o,u-2)];var P=parse_Rgce(o,_,T);return u!==_+E&&(C=parse_RgbExtra(o,u-_-E,P,T)),o.l=S,[P,C]}function parse_NameParsedFormula(o,u,T,S){var E=o.l+u,C=parse_Rgce(o,S,T),_;return E!==o.l&&(_=parse_RgbExtra(o,E-o.l,C,T)),[C,_]}function parse_SharedParsedFormula(o,u,T){var S=o.l+u,E,C=o.read_shift(2),_=parse_Rgce(o,C,T);return C==65535?[[],parsenoop(o,u-2)]:(u!==C+2&&(E=parse_RgbExtra(o,S-C-2,_,T)),[_,E])}function parse_FormulaValue(o){var u;if(__readUInt16LE(o,o.l+6)!==65535)return[parse_Xnum(o),"n"];switch(o[o.l]){case 0:return o.l+=8,["String","s"];case 1:return u=o[o.l+2]===1,o.l+=8,[u,"b"];case 2:return u=o[o.l+2],o.l+=8,[u,"e"];case 3:return o.l+=8,["","s"]}return[]}function write_FormulaValue(o){if(o==null){var u=new_buf(8);return u.write_shift(1,3),u.write_shift(1,0),u.write_shift(2,0),u.write_shift(2,0),u.write_shift(2,65535),u}else if(typeof o=="number")return write_Xnum(o);return write_Xnum(0)}function parse_Formula(o,u,T){var S=o.l+u,E=parse_XLSCell(o);T.biff==2&&++o.l;var C=parse_FormulaValue(o),_=o.read_shift(1);T.biff!=2&&(o.read_shift(1),T.biff>=5&&o.read_shift(4));var P=parse_XLSCellParsedFormula(o,S-o.l,T);
269return{cell:E,val:C[0],formula:P,shared:_>>3&1,tt:C[1]}}function write_Formula(o,u,T,S,E){var C=write_XLSCell(u,T,E),_=write_FormulaValue(o.v),P=new_buf(6),R=33;P.write_shift(2,R),P.write_shift(4,0);for(var I=new_buf(o.bf.length),L=0;L<o.bf.length;++L)I[L]=o.bf[L];var j=bconcat([C,_,P,I]);return j}function parse_XLSBParsedFormula(o,u,T){var S=o.read_shift(4),E=parse_Rgce(o,S,T),C=o.read_shift(4),_=C>0?parse_RgbExtra(o,C,E,T):null;return[E,_]}var parse_XLSBArrayParsedFormula=parse_XLSBParsedFormula,parse_XLSBCellParsedFormula=parse_XLSBParsedFormula,parse_XLSBNameParsedFormula=parse_XLSBParsedFormula,parse_XLSBSharedParsedFormula=parse_XLSBParsedFormula,Cetab={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.
269NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},Ftab={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDI
269RECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"}
vendor: 19,994 bytes, lines 269-270
269,FtabArgc={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0};function ods_to_csf_formula(o){return o.slice(0,3)=="of:"&&(o=o.slice(3)),o.charCodeAt(0)==61&&(o=o.slice(1),o.charCodeAt(0)==61&&(o=o.slice(1))),o=o.replace(/COM\.MICROSOFT\./g,""),o=o.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(u,T){return T.replace(/\./g,"")}),o=o.replace(/\[.(#[A-Z]*[?!])\]/g,"$1"),o.replace(/[;~]/g,",").replace(/\|/g,";")}function csf_to_ods_formula(o){var u="of:="+o.replace(crefregex,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return u.replace(/;/g,"|").replace(/,/g,";")}function ods_to_csf_3D(o){var u=o.split(":"),T=u[0].split(".")[0];return[T,u[0].split(".")[1]+(u.length>1?":"+(u[1].split(".")[1]||u[1].split(".")[0]):"")]}function csf_to_ods_3D(o){return o.replace(/\./,"!")}var strs={},_ssfopts={},browser_has_Map=typeof Map<"u";function get_sst_id(o,u,T){var S=0,E=o.length;if(T){if(browser_has_Map?T.has(u):Object.prototype.hasOwnProperty.call(T,u)){for(var C=browser_has_Map?T.get(u):T[u];S<C.length;++S)if(o[C[S]].t===u)return o.Count++,C[S]}}else for(;S<E;++S)if(o[S].t===u)return o.Count++,S;return o[E]={t:u},o.Count++,o.Unique++,T&&(browser_has_Map?(T.has(u)||T.set(u,[]),T.get(u).push(E)):(Object.prototype.hasOwnProperty.call(T,u)||(T[u]=[]),T[u].push(E))),E}function col_obj_w(o,u){var T={min:o+1,max:o+1},S=-1;return u.MDW&&(MDW=u.MDW),u.width!=null?T.customWidth=1:u.wpx!=null?S=px2char(u.wpx):u.wch!=null&&(S=u.wch),S>-1?(T.width=char2width(S),T.customWidth=1):u.width!=null&&(T.width=u.width),u.hidden&&(T.hidden=!0),u.level!=null&&(T.outlineLevel=T.level=u.level),T}function default_margins(o,u){if(o){var T=[.7,.7,.75,.75,.3,.3];u=="xlml"&&(T=[1,1,1,1,.5,.5]),o.left==null&&(o.left=T[0]),o.right==null&&(o.right=T[1]),o.top==null&&(o.top=T[2]),o.bottom==null&&(o.bottom=T[3]),o.header==null&&(o.header=T[4]),o.footer==null&&(o.footer=T[5])}}function get_cell_style(o,u,T){var S=T.revssf[u.z!=null?u.z:"General"],E=60,C=o.length;if(S==null&&T.ssf){for(;E<392;++E)if(T.ssf[E]==null){SSF_load(u.z,E),T.ssf[E]=u.z,T.revssf[u.z]=S=E;break}}for(E=0;E!=C;++E)if(o[E].numFmtId===S)return E;return o[C]={numFmtId:S,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},C}function safe_format(o,u,T,S,E,C){try{S.cellNF&&(o.z=table_fmt[u])}catch(P){if(S.WTF)throw P}if(!(o.t==="z"&&!S.cellStyles)){if(o.t==="d"&&typeof o.v=="string"&&(o.v=parseDate(o.v)),(!S||S.cellText!==!1)&&o.t!=="z")try{if(table_fmt[u]==null&&SSF_load(SSFImplicit[u]||"General",u),o.t==="e")o.w=o.w||BErr[o.v];else if(u===0)if(o.t==="n")(o.v|0)===o.v?o.w=o.v.toString(10):o.w=SSF_general_num(o.v);else if(o.t==="d"){var _=datenum(o.v);(_|0)===_?o.w=_.toString(10):o.w=SSF_general_num(_)}else{if(o.v===void 0)return"";o.w=SSF_general(o.v,_ssfopts)}else o.t==="d"?o.w=SSF_format(u,datenum(o.v),_ssfopts):o.w=SSF_format(u,o.v,_ssfopts)}catch(P){if(S.WTF)throw P}if(S.cellStyles&&T!=null)try{o.s=C.Fills[T],o.s.fgColor&&o.s.fgColor.theme&&!o.s.fgColor.rgb&&(o.s.fgColor.rgb=rgb_tint(E.themeElements.clrScheme[o.s.fgColor.theme].rgb,o.s.fgColor.tint||0),S.WTF&&(o.s.fgColor.raw_rgb=E.themeElements.clrScheme[o.s.fgColor.theme].rgb)),o.s.bgColor&&o.s.bgColor.theme&&(o.s.bgColor.rgb=rgb_tint(E.themeElements.clrScheme[o.s.bgColor.theme].rgb,o.s.bgColor.tint||0),S.WTF&&(o.s.bgColor.raw_rgb=E.themeElements.clrScheme[o.s.bgColor.theme].rgb))}catch(P){if(S.WTF&&C.Fills)throw P}}}function check_ws(o,u,T){if(o&&o["!ref"]){var S=safe_decode_range(o["!ref"]);if(S.e.c<S.s.c||S.e.r<S.s.r)throw new Error("Bad range ("+T+"): "+o["!ref"])}}function parse_ws_xml_dim(o,u){var T=safe_decode_range(u);T.s.r<=T.e.r&&T.s.c<=T.e.c&&T.s.r>=0&&T.s.c>=0&&(o["!ref"]=encode_range(T))}var mergecregex=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g,sheetdataregex=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/,hlinkregex=/<(?:\w:)?hyperlink [^>]*>/mg,dimregex=/"(\w*:\w*)"/,colregex=/<(?:\w:)?col\b[^>]*[\/]?>/g,afregex=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,marginregex=/<(?:\w:)?pageMargins[^>]*\/>/g,sheetprregex=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,sheetprregex2=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/,svsregex=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function parse_ws_xml(o,u,T,S,E,C,_){if(!o)return o;S||(S={"!id":{}});var P=u.dense?[]:{},R={s:{r:2e6,c:2e6},e:{r:0,c:0}},I="",L="",j=o.match(sheetdataregex);j?(I=o.slice(0,j.index),L=o.slice(j.index+j[0].length)):I=L=o;var M=I.match(sheetprregex);M?parse_ws_xml_sheetpr(M[0],P,E,T):(M=I.match(sheetprregex2))&&parse_ws_xml_sheetpr2(M[0],M[1]||"",P,E,T);var D=(I.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(D>0){var F=I.slice(D,D+50).match(dimregex);F&&parse_ws_xml_dim(P,F[1])}var N=I.match(svsregex);N&&N[1]&&parse_ws_xml_sheetviews(N[1],E);var G=[];if(u.cellStyles){var B=I.match(colregex);B&&parse_ws_xml_cols(G,B)}j&&parse_ws_xml_data(j[1],P,u,R,C,_);var H=L.match(afregex);H&&(P["!autofilter"]=parse_ws_xml_autofilter(H[0]));var O=[],V=L.match(mergecregex);if(V)for(D=0;D!=V.length;++D)O[D]=safe_decode_range(V[D].slice(V[D].indexOf('"')+1));var U=L.match(hlinkregex);U&&parse_ws_xml_hlinks(P,U,S);var W=L.match(marginregex);if(W&&(P["!margins"]=parse_ws_xml_margins(parsexmltag(W[0]))),!P["!ref"]&&R.e.c>=R.s.c&&R.e.r>=R.s.r&&(P["!ref"]=encode_range(R)),u.sheetRows>0&&P["!ref"]){var K=safe_decode_range(P["!ref"]);u.sheetRows<=+K.e.r&&(K.e.r=u.sheetRows-1,K.e.r>R.e.r&&(K.e.r=R.e.r),K.e.r<K.s.r&&(K.s.r=K.e.r),K.e.c>R.e.c&&(K.e.c=R.e.c),K.e.c<K.s.c&&(K.s.c=K.e.c),P["!fullref"]=P["!ref"],P["!ref"]=encode_range(K))}return G.length>0&&(P["!cols"]=G),O.length>0&&(P["!merges"]=O),P}function write_ws_xml_merges(o){if(o.length===0)return"";for(var u='<mergeCells count="'+o.length+'">',T=0;T!=o.length;++T)u+='<mergeCell ref="'+encode_range(o[T])+'"/>';return u+"</mergeCells>"}function parse_ws_xml_sheetpr(o,u,T,S){var E=parsexmltag(o);T.Sheets[S]||(T.Sheets[S]={}),E.codeName&&(T.Sheets[S].CodeName=unescapexml(utf8read(E.codeName)))}function parse_ws_xml_sheetpr2(o,u,T,S,E){parse_ws_xml_sheetpr(o.slice(0,o.indexOf(">")),T,S,E)}function write_ws_xml_sheetpr(o,u,T,S,E){var C=!1,_={},P=null;if(S.bookType!=="xlsx"&&u.vbaraw){var R=u.SheetNames[T];try{u.Workbook&&(R=u.Workbook.Sheets[T].CodeName||R)}catch{}C=!0,_.codeName=utf8write(escapexml(R))}if(o&&o["!outline"]){var I={summaryBelow:1,summaryRight:1};o["!outline"].above&&(I.summaryBelow=0),o["!outline"].left&&(I.summaryRight=0),P=(P||"")+writextag("outlinePr",null,I)}!C&&!P||(E[E.length]=writextag("sheetPr",P,_))}var sheetprot_deffalse=["objects","scenarios","selectLockedCells","selectUnlockedCells"],sheetprot_deftrue=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function write_ws_xml_protection(o){var u={sheet:1};return sheetprot_deffalse.forEach(function(T){o[T]!=null&&o[T]&&(u[T]="1")}),sheetprot_deftrue.forEach(function(T){o[T]!=null&&!o[T]&&(u[T]="0")}),o.password&&(u.password=crypto_CreatePasswordVerifier_Method1(o.password).toString(16).toUpperCase()),writextag("sheetProtection",null,u)}function parse_ws_xml_hlinks(o,u,T){for(var S=Array.isArray(o),E=0;E!=u.length;++E){var C=parsexmltag(utf8read(u[E]),!0);if(!C.ref)return;var _=((T||{})["!id"]||[])[C.id];_?(C.Target=_.Target,C.location&&(C.Target+="#"+unescapexml(C.location))):(C.Target="#"+unescapexml(C.location),_={Target:C.Target,TargetMode:"Internal"}),C.Rel=_,C.tooltip&&(C.Tooltip=C.tooltip,delete C.tooltip);for(var P=safe_decode_range(C.ref),R=P.s.r;R<=P.e.r;++R)for(var I=P.s.c;I<=P.e.c;++I){var L=encode_cell({c:I,r:R});S?(o[R]||(o[R]=[]),o[R][I]||(o[R][I]={t:"z",v:void 0}),o[R][I].l=C):(o[L]||(o[L]={t:"z",v:void 0}),o[L].l=C)}}}function parse_ws_xml_margins(o){var u={};return["left","right","top","bottom","header","footer"].forEach(function(T){o[T]&&(u[T]=parseFloat(o[T]))}),u}function write_ws_xml_margins(o){return default_margins(o),writextag("pageMargins",null,o)}function parse_ws_xml_cols(o,u){for(var T=!1,S=0;S!=u.length;++S){var E=parsexmltag(u[S],!0);E.hidden&&(E.hidden=parsexmlbool(E.hidden));var C=parseInt(E.min,10)-1,_=parseInt(E.max,10)-1;for(E.outlineLevel&&(E.level=+E.outlineLevel||0),delete E.min,delete E.max,E.width=+E.width,!T&&E.width&&(T=!0,find_mdw_colw(E.width)),process_col(E);C<=_;)o[C++]=dup(E)}}function write_ws_xml_cols(o,u){for(var T=["<cols>"],S,E=0;E!=u.length;++E)(S=u[E])&&(T[T.length]=writextag("col",null,col_obj_w(E,S)));return T[T.length]="</cols>",T.join("")}function parse_ws_xml_autofilter(o){var u={ref:(o.match(/ref="([^"]*)"/)||[])[1]};return u}function write_ws_xml_autofilter(o,u,T,S){var E=typeof o.ref=="string"?o.ref:encode_range(o.ref);T.Workbook||(T.Workbook={Sheets:[]}),T.Workbook.Names||(T.Workbook.Names=[]);var C=T.Workbook.Names,_=decode_range(E);_.s.r==_.e.r&&(_.e.r=decode_range(u["!ref"]).e.r,E=encode_range(_));for(var P=0;P<C.length;++P){var R=C[P];if(R.Name=="_xlnm._FilterDatabase"&&R.Sheet==S){R.Ref="'"+T.SheetNames[S]+"'!"+E;break}}return P==C.length&&C.push({Name:"_xlnm._FilterDatabase",Sheet:S,Ref:"'"+T.SheetNames[S]+"'!"+E}),writextag("autoFilter",null,{ref:E})}var sviewregex=/<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/;function parse_ws_xml_sheetviews(o,u){u.Views||(u.Views=[{}]),(o.match(sviewregex)||[]).forEach(function(T,S){var E=parsexmltag(T);u.Views[S]||(u.Views[S]={}),+E.zoomScale&&(u.Views[S].zoom=+E.zoomScale),parsexmlbool(E.rightToLeft)&&(u.Views[S].RTL=!0)})}function write_ws_xml_sheetviews(o,u,T,S){var E={workbookViewId:"0"};return(((S||{}).Workbook||{}).Views||[])[0]&&(E.rightToLeft=S.Workbook.Views[0].RTL?"1":"0"),writextag("sheetViews",writextag("sheetView",null,E),{})}function write_ws_xml_cell(o,u,T,S){if(o.c&&T["!comments"].push([u,o.c]),o.v===void 0&&typeof o.f!="string"||o.t==="z"&&!o.f)return"";var E="",C=o.t,_=o.v;if(o.t!=="z")switch(o.t){case"b":E=o.v?"1":"0";break;case"n":E=""+o.v;break;case"e":E=BErr[o.v];break;case"d":S&&S.cellDates?E=parseDate(o.v,-1).toISOString():(o=dup(o),o.t="n",E=""+(o.v=datenum(parseDate(o.v)))),typeof o.z>"u"&&(o.z=table_fmt[14]);break;default:E=o.v;break}var P=writetag("v",escapexml(E)),R={r:u},I=get_cell_style(S.cellXfs,o,S);switch(I!==0&&(R.s=I),o.t){case"n":break;case"d":R.t="d";break;case"b":R.t="b";break;case"e":R.t="e";break;case"z":break;default:if(o.v==null){delete o.t;break}if(o.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(S&&S.bookSST){P=writetag("v",""+get_sst_id(S.Strings,o.v,S.revStrings)),R.t="s";break}R.t="str";break}if(o.t!=C&&(o.t=C,o.v=_),typeof o.f=="string"&&o.f){var L=o.F&&o.F.slice(0,u.length)==u?{t:"array",ref:o.F}:null;P=writextag("f",escapexml(o.f),L)+(o.v!=null?P:"")}return o.l&&T["!links"].push([u,o.l]),o.D&&(R.cm=1),writextag("c",P,R)}var parse_ws_xml_data=function(){var o=/<(?:\w+:)?c[ \/>]/,u=/<\/(?:\w+:)?row>/,T=/r=["']([^"']*)["']/,S=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/,E=/ref=["']([^"']*)["']/,C=matchtag("v"),_=matchtag("f");return function(R,I,L,j,M,D){for(var F=0,N="",G=[],B=[],H=0,O=0,V=0,U="",W,K,Y=0,ee=0,oe,se,Q=0,ie=0,ae=Array.isArray(D.CellXf),re,J=[],te=[],Z=Array.isArray(I),X=[],de={},he=!1,ne=!!L.sheetStubs,ue=R.split(u),ce=0,fe=ue.length;ce!=fe;++ce){N=ue[ce].trim();var ve=N.length;if(ve!==0){var Te=0;e:for(F=0;F<ve;++F)switch(N[F]){case">":if(N[F-1]!="/"){++F;break e}if(L&&L.cellStyles){if(K=parsexmltag(N.slice(Te,F),!0),Y=K.r!=null?parseInt(K.r,10):Y+1,ee=-1,L.sheetRows&&L.sheetRows<Y)continue;de={},he=!1,K.ht&&(he=!0,de.hpt=parseFloat(K.ht),de.hpx=pt2px(de.hpt)),K.hidden=="1"&&(he=!0,de.hidden=!0),K.outlineLevel!=null&&(he=!0,de.level=+K.outlineLevel),he&&(X[Y-1]=de)}break;case"<":Te=F;break}if(Te>=F)break;if(K=parsexmltag(N.slice(Te,F),!0),Y=K.r!=null?parseInt(K.r,10):Y+1,ee=-1,!(L.sheetRows&&L.sheetRows<Y)){j.s.r>Y-1&&(j.s.r=Y-1),j.e.r<Y-1&&(j.e.r=Y-1),L&&L.cellStyles&&(de={},he=!1,K.ht&&(he=!0,de.hpt=parseFloat(K.ht),de.hpx=pt2px(de.hpt)),K.hidden=="1"&&(he=!0,de.hidden=!0),K.outlineLevel!=null&&(he=!0,de.level=+K.outlineLevel),he&&(X[Y-1]=de)),G=N.slice(F).split(o);for(var Se=0;Se!=G.length&&G[Se].trim().charAt(0)=="<";++Se);for(G=G.slice(Se),F=0;F!=G.length;++F)if(N=G[F].trim(),N.length!==0){if(B=N.match(T),H=F,O=0,V=0,N="<c "+(N.slice(0,1)=="<"?">":"")+N,B!=null&&B.length===2){for(H=0,U=B[1],O=0;O!=U.length&&!((V=U.charCodeAt(O)-64)<1||V>26);++O)H=26*H+V;--H,ee=H}else++ee;for(O=0;O!=N.length&&N.charCodeAt(O)!==62;++O);if(++O,K=parsexmltag(N.slice(0,O),!0),K.r||(K.r=encode_cell({r:Y-1,c:ee})),U=N.slice(O),W={t:""},(B=U.match(C))!=null&&B[1]!==""&&(W.v=unescapexml(B[1])),L.cellFormula){if((B=U.match(_))!=null&&B[1]!==""){if(W.f=unescapexml(utf8read(B[1])).replace(/\r\n/g,` 270`),L.xlfn||(W.f=_xlfn(W.f)),B[0].indexOf('t="array"')>-1)W.F=(U.match(E)||[])[1],W.F.indexOf(":")>-1&&J.push([safe_decode_range(W.F),W.F]);else if(B[0].indexOf('t="shared"')>-1){se=parsexmltag(B[0]);var ke=unescapexml(utf8read(B[1]));L.xlfn||(ke=_xlfn(ke)),te[parseInt(se.si,10)]=[se,ke,K.r]}}else(B=U.match(/<f[^>]*\/>/))&&(se=parsexmltag(B[0]),te[se.si]&&(W.f=shift_formula_xlsx(te[se.si][1],te[se.si][2],K.r)));var we=decode_cell(K.r);for(O=0;O<J.length;++O)we.r>=J[O][0].s.r&&we.r<=J[O][0].e.r&&we.c>=J[O][0].s.c&&we.c<=J[O][0].e.c&&(W.F=J[O][1])}if(K.t==null&&W.v===void 0)if(W.f||W.F)W.v=0,W.t="n";else if(ne)W.t="z";else continue;else W.t=K.t||"n";switch(j.s.c>ee&&(j.s.c=ee),j.e.c<ee&&(j.e.c=ee),W.t){case"n":if(W.v==""||W.v==null){if(!ne)continue;W.t="z"}else W.v=parseFloat(W.v);break;case"s":if(typeof W.v>"u"){if(!ne)continue;W.t="z"}else oe=strs[parseInt(W.v,10)],W.v=oe.t,W.r=oe.r,L.cellHTML&&(W.h=oe.h);break;case"str":W.t="s",W.v=W.v!=null?utf8read(W.v):"",L.cellHTML&&(W.h=escapehtml(W.v));break;case"inlineStr":B=U.match(S),W.t="s",B!=null&&(oe=parse_si(B[1]))?(W.v=oe.t,L.cellHTML&&(W.h=oe.h)):W.v="";break;case"b":W.v=parsexmlbool(W.v);break;case"d":L.cellDates?W.v=parseDate(W.v,1):(W.v=datenum(parseDate(W.v,1)),W.t="n");break;case"e":(!L||L.cellText!==!1)&&(W.w=W.v),W.v=RBErr[W.v];break}if(Q=ie=0,re=null,ae&&K.s!==void 0&&(re=D.CellXf[K.s],re!=null&&(re.numFmtId!=null&&(Q=re.numFmtId),L.cellStyles&&re.fillId!=null&&(ie=re.fillId))),safe_format(W,Q,ie,L,M,D),L.cellDates&&ae&&W.t=="n"&&fmt_is_date(table_fmt[Q])&&(W.t="d",W.v=numdate(W.v)),K.cm&&L.xlmeta){var Le=(L.xlmeta.Cell||[])[+K.cm-1];Le&&Le.type=="XLDAPR"&&(W.D=!0)}if(Z){var pe=decode_cell(K.r);I[pe.r]||(I[pe.r]=[]),I[pe.r][pe.c]=W}else I[K.r]=W}}}}X.length>0&&(I["!rows"]=X)}}();function write_ws_xml_data(o,u,T,S){var E=[],C=[],_=safe_decode_range(o["!ref"]),P="",R,I="",L=[],j=0,M=0,D=o["!rows"],F=Array.isArray(o),N={r:I},G,B=-1;for(M=_.s.c;M<=_.e.c;++M)L[M]=encode_col(M);for(j=_.s.r;j<=_.e.r;++j){for(C=[],I=encode_row(j),M=_.s.c;M<=_.e.c;++M){R=L[M]+I;var H=F?(o[j]||[])[M]:o[R];H!==void 0&&(P=write_ws_xml_cell(H,R,o,u))!=null&&C.push(P)}(C.length>0||D&&D[j])&&(N={r:I},D&&D[j]&&(G=D[j],G.hidden&&(N.hidden=1),B=-1,G.hpx?B=px2pt(G.hpx):G.hpt&&(B=G.hpt),B>-1&&(N.ht=B,N.customHeight=1),G.level&&(N.outlineLevel=G.level)),E[E.length]=writextag("row",C.join(""),N))}if(D)for(;j<D.length;++j)D&&D[j]&&(N={r:j+1},G=D[j],G.hidden&&(N.hidden=1),B=-1,G.hpx?B=px2pt(G.hpx):G.hpt&&(B=G.hpt),B>-1&&(N.ht=B,N.customHeight=1),G.level&&(N.outlineLevel=G.level),E[E.length]=writextag("row","",N));return E.join("")}function write_ws_xml(o,u,T,S){var E=[XML_HEADER,writextag("worksheet",null,{xmlns:XMLNS_main[0],"xmlns:r":XMLNS.r})],C=T.SheetNames[o],_=0,P="",R=T.Sheets[C];R==null&&(R={});var I=R["!ref"]||"A1",L=safe_decode_range(I);if(L.e.c>16383||L.e.r>1048575){if(u.WTF)throw new Error("Range "+I+" exceeds format limit A1:XFD1048576");L.e.c=Math.min(L.e.c,16383),L.e.r=Math.min(L.e.c,1048575),I=encode_range(L)}S||(S={}),R["!comments"]=[];var j=[];write_ws_xml_sheetpr(R,T,o,u,E),E[E.length]=writextag("dimension",null,{ref:I}),E[E.length]=write_ws_xml_sheetviews(R,u,o,T),u.sheetFormat&&(E[E.length]=writextag("sheetFormatPr",null,{defaultRowHeight:u.sheetFormat.defaultRowHeight||"16",baseColWidth:u.sheetFormat.baseColWidth||"10",outlineLevelRow:u.sheetFormat.outlineLevelRow||"7"})),R["!cols"]!=null&&R["!cols"].length>0&&(E[E.length]=write_ws_xml_cols(R,R["!cols"])),E[_=E.length]="<sheetData/>",R["!links"]=[],R["!ref"]!=null&&(P=write_ws_xml_data(R,u),P.length>0&&(E[E.length]=P)),E.length>_+1&&(E[E.length]="</sheetData>",E[_]=E[_].replace("/>",">")),R["!protect"]&&(E[E.length]=write_ws_xml_protection(R["!protect"])),R["!autofilter"]!=null&&(E[E.length]=write_ws_xml_autofilter(R["!autofilter"],R,T,o)),R["!merges"]!=null&&R["!merges"].length>0&&(E[E.length]=write_ws_xml_merges(R["!merges"]));var M=-1,D,F=-1;return R["!links"].length>0&&(E[E.length]="<hyperlinks>",R["!links"].forEach(function(N){N[1].Target&&(D={ref:N[0]},N[1].Target.charAt(0)!="#"&&(F=add_rels(S,-1,escapexml(N[1].Target).replace(/#.*$/,""),RELS.HLINK),D["r:id"]="rId"+F),(M=N[1].Target.indexOf("#"))>-1&&(D.location=escapexml(N[1].Target.slice(M+1))),N[1].Tooltip&&(D.tooltip=escapexml(N[1].Tooltip)),E[E.length]=writextag("hyperlink",null,D))}),E[E.length]="</hyperlinks>"),delete R["!links"],R["!margins"]!=null&&(E[E.length]=write_ws_xml_margins(R["!margins"])),(!u||u.ignoreEC||u.ignoreEC==null)&&(E[E.length]=writetag("ignoredErrors",writextag("ignoredError",null,{numberStoredAsText:1,sqref:I}))),j.length>0&&(F=add_rels(S,-1,"../drawings/drawing"+(o+1)+".xml",RELS.DRAW),E[E.length]=writextag("drawing",null,{"r:id":"rId"+F}),R["!drawing"]=j),R["!comments"].length>0&&(F=add_rels(S,-1,"../drawings/vmlDrawing"+(o+1)+".vml",RELS.VML),E[E.length]=writextag("legacyDrawing",null,{"r:id":"rId"+F}),R["!legacy"]=F),E.length>1&&(E[E.length]="</worksheet>",E[1]=E[1].replace("/>",">")),E.join("")}function parse_BrtRowHdr(o,u){var T={},S=o.l+u;T.r=o.read_shift(4),o.l+=4;var E=o.read_shift(2);o.l+=1;var C=o.read_shift(1);return o.l=S,C&7&&(T.level=C&7),C&16&&(T.hidden=!0),C&32&&(T.hpt=E/20),T}function write_BrtRowHdr(o,u,T){var S=new_buf(145),E=(T["!rows"]||[])[o]||{};S.write_shift(4,o),S.write_shift(4,0);var C=320;E.hpx?C=px2pt(E.hpx)*20:E.hpt&&(C=E.hpt*20),S.write_shift(2,C),S.write_shift(1,0);var _=0;E.level&&(_|=E.level),E.hidden&&(_|=16),(E.hpx||E.hpt)&&(_|=32),S.write_shift(1,_),S.write_shift(1,0);var P=0,R=S.l;S.l+=4;for(var I={r:o,c:0},L=0;L<16;++L)if(!(u.s.c>L+1<<10||u.e.c<L<<10)){for(var j=-1,M=-1,D=L<<10;D<L+1<<10;++D){I.c=D;var F=Array.isArray(T)?(T[I.r]||[])[I.c]:T[encode_cell(I)];F&&(j<0&&(j=D),M=D)}j<0||(++P,S.write_shift(4,j),S.write_shift(4,M))}var N=S.l;return S.l=R,S.write_shift(4,P),S.l=N,S.length>S.l?S.slice(0,S.l):S}function write_row_header(o,u,T,S){var E=write_BrtRowHdr(S,T,u);(E.length>17||(u["!rows"]||[])[S])&&write_record(o,0,E)}
270var parse_BrtWsDim=parse_UncheckedRfX,write_BrtWsDim=write_UncheckedRfX;function parse_BrtWsFmtInfo(){}function parse_BrtWsProp(o,u){var T={},S=o[o.l];return++o.l,T.above=!(S&64),T.left=!(S&128),o.l+=18,T.name=parse_XLSBCodeName(o),T}function write_BrtWsProp(o,u,T){T==null&&(T=new_buf(84+4*o.length));var S=192;u&&(u.above&&(S&=-65),u.left&&(S&=-129)),T.write_shift(1,S);for(var E=1;E<3;++E)T.write_shift(1,0);return write_BrtColor({auto:1},T),T.write_shift(-4,-1),T.write_shift(-4,-1),write_XLSBCodeName(o,T),T.slice(0,T.l)}function parse_BrtCellBlank(o){var u=parse_XLSBCell(o);return[u]}function write_BrtCellBlank(o,u,T){return T==null&&(T=new_buf(8)),write_XLSBCell(u,T)}function parse_BrtShortBlank(o){var u=parse_XLSBShortCell(o);return[u]}function write_BrtShortBlank(o,u,T){return T==null&&(T=new_buf(4)),write_XLSBShortCell(u,T)}function parse_BrtCellBool(o){var u=parse_XLSBCell(o),T=o.read_shift(1);return[u,T,"b"]}function write_BrtCellBool(o,u,T){return T==null&&(T=new_buf(9)),write_XLSBCell(u,T),T.write_shift(1,o.v?1:0),T}function parse_BrtShortBool(o){var u=parse_XLSBShortCell(o),T=o.read_shift(1);return[u,T,"b"]}function write_BrtShortBool(o,u,T){return T==null&&(T=new_buf(5)),write_XLSBShortCell(u,T),T.write_shift(1,o.v?1:0),T}function parse_BrtCellError(o){var u=parse_XLSBCell(o),T=o.read_shift(1);return[u,T,"e"]}function write_BrtCellError(o,u,T){return T==null&&(T=new_buf(9)),write_XLSBCell(u,T),T.write_shift(1,o.v),T}function parse_BrtShortError(o){var u=parse_XLSBShortCell(o),T=o.read_shift(1);return[u,T,"e"]}function write_BrtShortError(o,u,T){return T==null&&(T=new_buf(8)),write_XLSBShortCell(u,T),T.write_shift(1,o.v),T.write_shift(2,0),T.write_shift(1,0),T}function parse_BrtCellIsst(o){var u=parse_XLSBCell(o),T=o.read_shift(4);return[u,T,"s"]}function write_BrtCellIsst(o,u,T){return T==null&&(T=new_buf(12)),write_XLSBCell(u,T),T.write_shift(4,u.v),T}function parse_BrtShortIsst(o){var u=parse_XLSBShortCell(o),T=o.read_shift(4);return[u,T,"s"]}function write_BrtShortIsst(o,u,T){return T==null&&(T=new_buf(8)),write_XLSBShortCell(u,T),T.write_shift(4,u.v),T}function parse_BrtCellReal(o){var u=parse_XLSBCell(o),T=parse_Xnum(o);return[u,T,"n"]}function write_BrtCellReal(o,u,T){return T==null&&(T=new_buf(16)),write_XLSBCell(u,T),write_Xnum(o.v,T),T}function parse_BrtShortReal(o){var u=parse_XLSBShortCell(o),T=parse_Xnum(o);return[u,T,"n"]}function write_BrtShortReal(o,u,T){return T==null&&(T=new_buf(12)),write_XLSBShortCell(u,T),write_Xnum(o.v,T),T}function parse_BrtCellRk(o){var u=parse_XLSBCell(o),T=parse_RkNumber(o);return[u,T,"n"]}function write_BrtCellRk(o,u,T){return T==null&&(T=new_buf(12)),write_XLSBCell(u,T),write_RkNumber(o.v,T),T}function parse_BrtShortRk(o){var u=parse_XLSBShortCell(o),T=parse_RkNumber(o);return[u,T,"n"]}function write_BrtShortRk(o,u,T){return T==null&&(T=new_buf(8)),write_XLSBShortCell(u,T),write_RkNumber(o.v,T),T}function parse_BrtCellRString(o){var u=parse_XLSBCell(o),T=parse_RichStr(o);return[u,T,"is"]}function parse_BrtCellSt(o){var u=parse_XLSBCell(o),T=parse_XLWideString(o);return[u,T,"str"]}function write_BrtCellSt(o,u,T){return T==null&&(T=new_buf(12+4*o.v.length)),write_XLSBCell(u,T),write_XLWideString(o.v,T),T.length>T.l?T.slice(0,T.l):T}function parse_BrtShortSt(o){var u=parse_XLSBShortCell(o),T=parse_XLWideString(o);return[u,T,"str"]}function write_BrtShortSt(o,u,T){return T==null&&(T=new_buf(8+4*o.v.length)),write_XLSBShortCell(u,T),write_XLWideString(o.v,T),T.length>T.l?T.slice(0,T.l):T}function parse_BrtFmlaBool(o,u,T){var S=o.l+u,E=parse_XLSBCell(o);E.r=T["!row"];var C=o.read_shift(1),_=[E,C,"b"];if(T.cellFormula){o.l+=2;var P=parse_XLSBCellParsedFormula(o,S-o.l,T);_[3]=stringify_formula(P,null,E,T.supbooks,T)}else o.l=S;return _}function parse_BrtFmlaError(o,u,T){var S=o.l+u,E=parse_XLSBCell(o);E.r=T["!row"];var C=o.read_shift(1),_=[E,C,"e"];if(T.cellFormula){o.l+=2;var P=parse_XLSBCellParsedFormula(o,S-o.l,T);_[3]=stringify_formula(P,null,E,T.supbooks,T)}else o.l=S;return _}function parse_BrtFmlaNum(o,u,T){var S=o.l+u,E=parse_XLSBCell(o);E.r=T["!row"];var C=parse_Xnum(o),_=[E,C,"n"];
vendor: 12,492 bytes, line 270
270if(T.cellFormula){o.l+=2;var P=parse_XLSBCellParsedFormula(o,S-o.l,T);_[3]=stringify_formula(P,null,E,T.supbooks,T)}else o.l=S;return _}function parse_BrtFmlaString(o,u,T){var S=o.l+u,E=parse_XLSBCell(o);E.r=T["!row"];var C=parse_XLWideString(o),_=[E,C,"str"];if(T.cellFormula){o.l+=2;var P=parse_XLSBCellParsedFormula(o,S-o.l,T);_[3]=stringify_formula(P,null,E,T.supbooks,T)}else o.l=S;return _}var parse_BrtMergeCell=parse_UncheckedRfX,write_BrtMergeCell=write_UncheckedRfX;function write_BrtBeginMergeCells(o,u){return u==null&&(u=new_buf(4)),u.write_shift(4,o),u}function parse_BrtHLink(o,u){var T=o.l+u,S=parse_UncheckedRfX(o),E=parse_XLNullableWideString(o),C=parse_XLWideString(o),_=parse_XLWideString(o),P=parse_XLWideString(o);o.l=T;var R={rfx:S,relId:E,loc:C,display:P};return _&&(R.Tooltip=_),R}function write_BrtHLink(o,u){var T=new_buf(50+4*(o[1].Target.length+(o[1].Tooltip||"").length));write_UncheckedRfX({s:decode_cell(o[0]),e:decode_cell(o[0])},T),write_RelID("rId"+u,T);var S=o[1].Target.indexOf("#"),E=S==-1?"":o[1].Target.slice(S+1);return write_XLWideString(E||"",T),write_XLWideString(o[1].Tooltip||"",T),write_XLWideString("",T),T.slice(0,T.l)}function parse_BrtPane(){}function parse_BrtArrFmla(o,u,T){var S=o.l+u,E=parse_RfX(o),C=o.read_shift(1),_=[E];if(_[2]=C,T.cellFormula){var P=parse_XLSBArrayParsedFormula(o,S-o.l,T);_[1]=P}else o.l=S;return _}function parse_BrtShrFmla(o,u,T){var S=o.l+u,E=parse_UncheckedRfX(o),C=[E];if(T.cellFormula){var _=parse_XLSBSharedParsedFormula(o,S-o.l,T);C[1]=_,o.l=S}else o.l=S;return C}function write_BrtColInfo(o,u,T){T==null&&(T=new_buf(18));var S=col_obj_w(o,u);T.write_shift(-4,o),T.write_shift(-4,o),T.write_shift(4,(S.width||10)*256),T.write_shift(4,0);var E=0;return u.hidden&&(E|=1),typeof S.width=="number"&&(E|=2),u.level&&(E|=u.level<<8),T.write_shift(2,E),T}var BrtMarginKeys=["left","right","top","bottom","header","footer"];function parse_BrtMargins(o){var u={};return BrtMarginKeys.forEach(function(T){u[T]=parse_Xnum(o)}),u}function write_BrtMargins(o,u){return u==null&&(u=new_buf(6*8)),default_margins(o),BrtMarginKeys.forEach(function(T){write_Xnum(o[T],u)}),u}function parse_BrtBeginWsView(o){var u=o.read_shift(2);return o.l+=28,{RTL:u&32}}function write_BrtBeginWsView(o,u,T){T==null&&(T=new_buf(30));var S=924;return(((u||{}).Views||[])[0]||{}).RTL&&(S|=32),T.write_shift(2,S),T.write_shift(4,0),T.write_shift(4,0),T.write_shift(4,0),T.write_shift(1,0),T.write_shift(1,0),T.write_shift(2,0),T.write_shift(2,100),T.write_shift(2,0),T.write_shift(2,0),T.write_shift(2,0),T.write_shift(4,0),T}function write_BrtCellIgnoreEC(o){var u=new_buf(24);return u.write_shift(4,4),u.write_shift(4,1),write_UncheckedRfX(o,u),u}function write_BrtSheetProtection(o,u){return u==null&&(u=new_buf(16*4+2)),u.write_shift(2,o.password?crypto_CreatePasswordVerifier_Method1(o.password):0),u.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach(function(T){T[1]?u.write_shift(4,o[T[0]]!=null&&!o[T[0]]?1:0):u.write_shift(4,o[T[0]]!=null&&o[T[0]]?0:1)}),u}function parse_BrtDVal(){}function parse_BrtDVal14(){}function parse_ws_bin(o,u,T,S,E,C,_){if(!o)return o;var P=u||{};S||(S={"!id":{}});var R=P.dense?[]:{},I,L={s:{r:2e6,c:2e6},e:{r:0,c:0}},j=!1,M=!1,D,F,N,G,B,H,O,V,U,W=[];P.biff=12,P["!row"]=0;var K=0,Y=!1,ee=[],oe={},se=P.supbooks||E.supbooks||[[]];if(se.sharedf=oe,se.arrayf=ee,se.SheetNames=E.SheetNames||E.Sheets.map(function(Z){return Z.name}),!P.supbooks&&(P.supbooks=se,E.Names))for(var Q=0;Q<E.Names.length;++Q)se[0][Q+1]=E.Names[Q];var ie=[],ae=[],re=!1;XLSBRecordEnum[16]={n:"BrtShortReal",f:parse_BrtShortReal};var J;if(recordhopper(o,function(X,de,he){if(!M)switch(he){case 148:I=X;break;case 0:D=X,P.sheetRows&&P.sheetRows<=D.r&&(M=!0),V=encode_row(G=D.r),P["!row"]=D.r,(X.hidden||X.hpt||X.level!=null)&&(X.hpt&&(X.hpx=pt2px(X.hpt)),ae[X.r]=X);break;case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 17:case 18:case 62:switch(F={t:X[2]},X[2]){case"n":F.v=X[1];break;case"s":O=strs[X[1]],F.v=O.t,F.r=O.r;break;case"b":F.v=!!X[1];break;case"e":F.v=X[1],P.cellText!==!1&&(F.w=BErr[F.v]);break;case"str":F.t="s",F.v=X[1];break;case"is":F.t="s",F.v=X[1].t;break}if((N=_.CellXf[X[0].iStyleRef])&&safe_format(F,N.numFmtId,null,P,C,_),B=X[0].c==-1?B+1:X[0].c,P.dense?(R[G]||(R[G]=[]),R[G][B]=F):R[encode_col(B)+V]=F,P.cellFormula){for(Y=!1,K=0;K<ee.length;++K){var ne=ee[K];D.r>=ne[0].s.r&&D.r<=ne[0].e.r&&B>=ne[0].s.c&&B<=ne[0].e.c&&(F.F=encode_range(ne[0]),Y=!0)}!Y&&X.length>3&&(F.f=X[3])}if(L.s.r>D.r&&(L.s.r=D.r),L.s.c>B&&(L.s.c=B),L.e.r<D.r&&(L.e.r=D.r),L.e.c<B&&(L.e.c=B),P.cellDates&&N&&F.t=="n"&&fmt_is_date(table_fmt[N.numFmtId])){var ue=SSF_parse_date_code(F.v);ue&&(F.t="d",F.v=new Date(ue.y,ue.m-1,ue.d,ue.H,ue.M,ue.S,ue.u))}J&&(J.type=="XLDAPR"&&(F.D=!0),J=void 0);break;case 1:case 12:if(!P.sheetStubs||j)break;F={t:"z",v:void 0},B=X[0].c==-1?B+1:X[0].c,P.dense?(R[G]||(R[G]=[]),R[G][B]=F):R[encode_col(B)+V]=F,L.s.r>D.r&&(L.s.r=D.r),L.s.c>B&&(L.s.c=B),L.e.r<D.r&&(L.e.r=D.r),L.e.c<B&&(L.e.c=B),J&&(J.type=="XLDAPR"&&(F.D=!0),J=void 0);break;case 176:W.push(X);break;case 49:J=((P.xlmeta||{}).Cell||[])[X-1];break;case 494:var ce=S["!id"][X.relId];for(ce?(X.Target=ce.Target,X.loc&&(X.Target+="#"+X.loc),X.Rel=ce):X.relId==""&&(X.Target="#"+X.loc),G=X.rfx.s.r;G<=X.rfx.e.r;++G)for(B=X.rfx.s.c;B<=X.rfx.e.c;++B)P.dense?(R[G]||(R[G]=[]),R[G][B]||(R[G][B]={t:"z",v:void 0}),R[G][B].l=X):(H=encode_cell({c:B,r:G}),R[H]||(R[H]={t:"z",v:void 0}),R[H].l=X);break;case 426:if(!P.cellFormula)break;ee.push(X),U=P.dense?R[G][B]:R[encode_col(B)+V],U.f=stringify_formula(X[1],L,{r:D.r,c:B},se,P),U.F=encode_range(X[0]);break;case 427:if(!P.cellFormula)break;oe[encode_cell(X[0].s)]=X[1],U=P.dense?R[G][B]:R[encode_col(B)+V],U.f=stringify_formula(X[1],L,{r:D.r,c:B},se,P);break;case 60:if(!P.cellStyles)break;for(;X.e>=X.s;)ie[X.e--]={width:X.w/256,hidden:!!(X.flags&1),level:X.level},re||(re=!0,find_mdw_colw(X.w/256)),process_col(ie[X.e+1]);break;case 161:R["!autofilter"]={ref:encode_range(X)};break;case 476:R["!margins"]=X;break;case 147:E.Sheets[T]||(E.Sheets[T]={}),X.name&&(E.Sheets[T].CodeName=X.name),(X.above||X.left)&&(R["!outline"]={above:X.above,left:X.left});break;case 137:E.Views||(E.Views=[{}]),E.Views[0]||(E.Views[0]={}),X.RTL&&(E.Views[0].RTL=!0);break;case 485:break;case 64:case 1053:break;case 151:break;case 152:case 175:case 644:case 625:case 562:case 396:case 1112:case 1146:case 471:case 1050:case 649:case 1105:case 589:case 607:case 564:case 1055:case 168:case 174:case 1180:case 499:case 507:case 550:case 171:case 167:case 1177:case 169:case 1181:case 551:case 552:case 661:case 639:case 478:case 537:case 477:case 536:case 1103:case 680:case 1104:case 1024:case 663:case 535:case 678:case 504:case 1043:case 428:case 170:case 3072:case 50:case 2070:case 1045:break;case 35:j=!0;break;case 36:j=!1;break;case 37:j=!0;break;case 38:j=!1;break;default:if(!de.T){if(!j||P.WTF)throw new Error("Unexpected record 0x"+he.toString(16))}}},P),delete P.supbooks,delete P["!row"],!R["!ref"]&&(L.s.r<2e6||I&&(I.e.r>0||I.e.c>0||I.s.r>0||I.s.c>0))&&(R["!ref"]=encode_range(I||L)),P.sheetRows&&R["!ref"]){var te=safe_decode_range(R["!ref"]);P.sheetRows<=+te.e.r&&(te.e.r=P.sheetRows-1,te.e.r>L.e.r&&(te.e.r=L.e.r),te.e.r<te.s.r&&(te.s.r=te.e.r),te.e.c>L.e.c&&(te.e.c=L.e.c),te.e.c<te.s.c&&(te.s.c=te.e.c),R["!fullref"]=R["!ref"],R["!ref"]=encode_range(te))}return W.length>0&&(R["!merges"]=W),ie.length>0&&(R["!cols"]=ie),ae.length>0&&(R["!rows"]=ae),R}function write_ws_bin_cell(o,u,T,S,E,C,_){if(u.v===void 0)return!1;var P="";switch(u.t){case"b":P=u.v?"1":"0";break;case"d":u=dup(u),u.z=u.z||table_fmt[14],u.v=datenum(parseDate(u.v)),u.t="n";break;case"n":case"e":P=""+u.v;break;default:P=u.v;break}var R={r:T,c:S};switch(R.s=get_cell_style(E.cellXfs,u,E),u.l&&C["!links"].push([encode_cell(R),u.l]),u.c&&C["!comments"].push([encode_cell(R),u.c]),u.t){case"s":case"str":return E.bookSST?(P=get_sst_id(E.Strings,u.v,E.revStrings),R.t="s",R.v=P,_?write_record(o,18,write_BrtShortIsst(u,R)):write_record(o,7,write_BrtCellIsst(u,R))):(R.t="str",_?write_record(o,17,write_BrtShortSt(u,R)):write_record(o,6,write_BrtCellSt(u,R))),!0;case"n":return u.v==(u.v|0)&&u.v>-1e3&&u.v<1e3?_?write_record(o,13,write_BrtShortRk(u,R)):write_record(o,2,write_BrtCellRk(u,R)):_?write_record(o,16,write_BrtShortReal(u,R)):write_record(o,5,write_BrtCellReal(u,R)),!0;case"b":return R.t="b",_?write_record(o,15,write_BrtShortBool(u,R)):write_record(o,4,write_BrtCellBool(u,R)),!0;case"e":return R.t="e",_?write_record(o,14,write_BrtShortError(u,R)):write_record(o,3,write_BrtCellError(u,R)),!0}return _?write_record(o,12,write_BrtShortBlank(u,R)):write_record(o,1,write_BrtCellBlank(u,R)),!0}function write_CELLTABLE(o,u,T,S){var E=safe_decode_range(u["!ref"]||"A1"),C,_="",P=[];write_record(o,145);var R=Array.isArray(u),I=E.e.r;u["!rows"]&&(I=Math.max(E.e.r,u["!rows"].length-1));for(var L=E.s.r;L<=I;++L){_=encode_row(L),write_row_header(o,u,E,L);var j=!1;if(L<=E.e.r)for(var M=E.s.c;M<=E.e.c;++M){L===E.s.r&&(P[M]=encode_col(M)),C=P[M]+_;var D=R?(u[L]||[])[M]:u[C];if(!D){j=!1;continue}j=write_ws_bin_cell(o,D,L,M,S,u,j)}}write_record(o,146)}function write_MERGECELLS(o,u){!u||!u["!merges"]||(write_record(o,177,write_BrtBeginMergeCells(u["!merges"].length)),u["!merges"].forEach(function(T){write_record(o,176,write_BrtMergeCell(T))}),write_record(o,178))}function write_COLINFOS(o,u){!u||!u["!cols"]||(write_record(o,390),u["!cols"].forEach(function(T,S){T&&write_record(o,60,write_BrtColInfo(S,T))}),write_record(o,391))}function write_IGNOREECS(o,u){!u||!u["!ref"]||(write_record(o,648),write_record(o,649,write_BrtCellIgnoreEC(safe_decode_range(u["!ref"]))),write_record(o,650))}function write_HLINKS(o,u,T){u["!links"].forEach(function(S){if(S[1].Target){var E=add_rels(T,-1,S[1].Target.replace(/#.*$/,""),RELS.HLINK);write_record(o,494,write_BrtHLink(S,E))}}),delete u["!links"]}function write_LEGACYDRAWING(o,u,T,S){if(u["!comments"].length>0){var E=add_rels(S,-1,"../drawings/vmlDrawing"+(T+1)+".vml",RELS.VML);write_record(o,551,write_RelID("rId"+E)),u["!legacy"]=E}}function write_AUTOFILTER(o,u,T,S){if(u["!autofilter"]){var E=u["!autofilter"],C=typeof E.ref=="string"?E.ref:encode_range(E.ref);T.Workbook||(T.Workbook={Sheets:[]}),T.Workbook.Names||(T.Workbook.Names=[]);var _=T.Workbook.Names,P=decode_range(C);P.s.r==P.e.r&&(P.e.r=decode_range(u["!ref"]).e.r,C=encode_range(P));for(var R=0;R<_.length;++R){var I=_[R];if(I.Name=="_xlnm._FilterDatabase"&&I.Sheet==S){I.Ref="'"+T.SheetNames[S]+"'!"+C;break}}R==_.length&&_.push({Name:"_xlnm._FilterDatabase",Sheet:S,Ref:"'"+T.SheetNames[S]+"'!"+C}),write_record(o,161,write_UncheckedRfX(safe_decode_range(C))),write_record(o,162)}}function write_WSVIEWS2(o,u,T){write_record(o,133),write_record(o,137,write_BrtBeginWsView(u,T)),write_record(o,138),write_record(o,134)}function write_SHEETPROTECT(o,u){u["!protect"]&&write_record(o,535,write_BrtSheetProtection(u["!protect"]))}function write_ws_bin(o,u,T,S){var E=buf_array(),C=T.SheetNames[o],_=T.Sheets[C]||{},P=C;try{T&&T.Workbook&&(P=T.Workbook.Sheets[o].CodeName||P)}catch{}var R=safe_decode_range(_["!ref"]||"A1");if(R.e.c>16383||R.e.r>1048575){if(u.WTF)throw new Error("Range "+(_["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");R.e.c=Math.min(R.e.c,16383),R.e.r=Math.min(R.e.c,1048575)}return _["!links"]=[],_["!comments"]=[],write_record(E,129),(T.vbaraw||_["!outline"])&&write_record(E,147,write_BrtWsProp(P,_["!outline"])),write_record(E,148,write_BrtWsDim(R)),write_WSVIEWS2(E,_,T.Workbook),write_COLINFOS(E,_),write_CELLTABLE(E,_,o,u),write_SHEETPROTECT(E,_),write_AUTOFILTER(E,_,T,o),write_MERGECELLS(E,_),write_HLINKS(E,_,S),_["!margins"]&&write_record(E,476,write_BrtMargins(_["!margins"])),(!u||u.ignoreEC||u.ignoreEC==null)&&write_IGNOREECS(E,_),write_LEGACYDRAWING(E,_,o,S),write_record(E,130),E.end()}function parse_Cache(o){var u=[],T=o.match(/^<c:numCache>/),S;(o.match(/<c:pt idx="(\d*)">(.*?)<\/c:pt>/mg)||[]).forEach(function(C){var _=C.match(/<c:pt idx="(\d*?)"><c:v>(.*)<\/c:v><\/c:pt>/);_&&(u[+_[1]]=T?+_[2]:_[2])});var E=unescapexml((o.match(/<c:formatCode>([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);return(o.match(/<c:f>(.*?)<\/c:f>
270/mg)||[]).forEach(function(C){S=C.replace(/<.*?>/g,"")}),[u,E,S]}function parse_chart(o,u,T,S,E,C){var _=C||{"!type":"chart"};if(!o)return C;var P=0,R=0,I="A",L={s:{r:2e6,c:2e6},e:{r:0,c:0}};return(o.match(/<c:numCache>[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(j){var M=parse_Cache(j);L.s.r=L.s.c=0,L.e.c=P,I=encode_col(P),M[0].forEach(function(D,F){_[I+encode_row(F)]={t:"n",v:D,z:M[1]},R=F}),L.e.r<R&&(L.e.r=R),++P}),P>0&&(_["!ref"]=encode_range(L)),_}function parse_cs_xml(o,u,T,S,E){if(!o)return o;S||(S={"!id":{}});var C={"!type":"chart","!drawel":null,"!rel":""},_,P=o.match(sheetprregex);return P&&parse_ws_xml_sheetpr(P[0],C,E,T),(_=o.match(/drawing r:id="(.*?)"/))&&(C["!rel"]=_[1]),S["!id"][C["!rel"]]&&(C["!drawel"]=S["!id"][C["!rel"]]),C}function parse_BrtCsProp(o,u){o.l+=10;var T=parse_XLWideString(o);return{name:T}}function parse_cs_bin(o,u,T,S,E){if(!o)return o;S||(S={"!id":{}});var C={"!type":"chart","!drawel":null,"!rel":""},_=!1;return recordhopper(o,function(R,I,L){switch(L){case 550:C["!rel"]=R;break;case 651:E.Sheets[T]||(E.Sheets[T]={}),R.name&&(E.Sheets[T].CodeName=R.name);break;case 562:case 652:case 669:case 679:case 551:case 552:case 476:case 3072:break;case 35:_=!0;break;case 36:_=!1;break;case 37:break;case 38:break;default:if(!(I.T>0)){if(!(I.T<0)){if(!_||u.WTF)throw new Error("Unexpected record 0x"+L.toString(16))}}}},u),S["!id"][C["!rel"]]&&(C["!drawel"]=S["!id"][C["!rel"]]),C}var WBPropsDef=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],WBViewDef=[["activeTab",0,"int"],["autoFilterDateGrouping",!0,"bool"],["firstSheet",0,"int"],["minimized",!1,"bool"],["showHorizontalScroll",!0,"bool"],["showSheetTabs",!0,"bool"],["showVerticalScroll",!0,"bool"],["tabRatio",600,"int"],["visibility","visible"]],SheetDef=[],CalcPrDef
vendor: 6,321 bytes, line 270
270=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function push_defaults_array(o,u){for(var T=0;T!=o.length;++T)for(var S=o[T],E=0;E!=u.length;++E){var C=u[E];if(S[C[0]]==null)S[C[0]]=C[1];else switch(C[2]){case"bool":typeof S[C[0]]=="string"&&(S[C[0]]=parsexmlbool(S[C[0]]));break;case"int":typeof S[C[0]]=="string"&&(S[C[0]]=parseInt(S[C[0]],10));break}}}function push_defaults(o,u){for(var T=0;T!=u.length;++T){var S=u[T];if(o[S[0]]==null)o[S[0]]=S[1];else switch(S[2]){case"bool":typeof o[S[0]]=="string"&&(o[S[0]]=parsexmlbool(o[S[0]]));break;case"int":typeof o[S[0]]=="string"&&(o[S[0]]=parseInt(o[S[0]],10));break}}}function parse_wb_defaults(o){push_defaults(o.WBProps,WBPropsDef),push_defaults(o.CalcPr,CalcPrDef),push_defaults_array(o.WBView,WBViewDef),push_defaults_array(o.Sheets,SheetDef),_ssfopts.date1904=parsexmlbool(o.WBProps.date1904)}function safe1904(o){return!o.Workbook||!o.Workbook.WBProps?"false":parsexmlbool(o.Workbook.WBProps.date1904)?"true":"false"}var badchars="][*?/\\".split("");function check_ws_name(o,u){if(o.length>31)throw new Error("Sheet names cannot exceed 31 chars");var T=!0;return badchars.forEach(function(S){if(o.indexOf(S)!=-1)throw new Error("Sheet name cannot contain : \\ / ? * [ ]")}),T}function check_wb_names(o,u,T){o.forEach(function(S,E){check_ws_name(S);for(var C=0;C<E;++C)if(S==o[C])throw new Error("Duplicate Sheet Name: "+S);if(T){var _=u&&u[E]&&u[E].CodeName||S;if(_.charCodeAt(0)==95&&_.length>22)throw new Error("Bad Code Name: Worksheet"+_)}})}function check_wb(o){if(!o||!o.SheetNames||!o.Sheets)throw new Error("Invalid Workbook");if(!o.SheetNames.length)throw new Error("Workbook is empty");var u=o.Workbook&&o.Workbook.Sheets||[];check_wb_names(o.SheetNames,u,!!o.vbaraw);for(var T=0;T<o.SheetNames.length;++T)check_ws(o.Sheets[o.SheetNames[T]],o.SheetNames[T],T)}var wbnsregex=/<\w+:workbook/;function parse_wb_xml(o,u){if(!o)throw new Error("Could not find file");var T={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},Names:[],xmlns:""},S=!1,E="xmlns",C={},_=0;if(o.replace(tagregex,function(R,I){var L=parsexmltag(R);switch(strip_ns(L[0])){case"<?xml":break;case"<workbook":R.match(wbnsregex)&&(E="xmlns"+R.match(/<(\w+):/)[1]),T.xmlns=L[E];break;case"</workbook>":break;case"<fileVersion":delete L[0],T.AppVersion=L;break;case"<fileVersion/>":case"</fileVersion>":break;case"<fileSharing":break;case"<fileSharing/>":break;case"<workbookPr":case"<workbookPr/>":WBPropsDef.forEach(function(j){if(L[j[0]]!=null)switch(j[2]){case"bool":T.WBProps[j[0]]=parsexmlbool(L[j[0]]);break;case"int":T.WBProps[j[0]]=parseInt(L[j[0]],10);break;default:T.WBProps[j[0]]=L[j[0]]}}),L.codeName&&(T.WBProps.CodeName=utf8read(L.codeName));break;case"</workbookPr>":break;case"<workbookProtection":break;case"<workbookProtection/>":break;case"<bookViews":case"<bookViews>":case"</bookViews>":break;case"<workbookView":case"<workbookView/>":delete L[0],T.WBView.push(L);break;case"</workbookView>":break;case"<sheets":case"<sheets>":case"</sheets>":break;case"<sheet":switch(L.state){case"hidden":L.Hidden=1;break;case"veryHidden":L.Hidden=2;break;default:L.Hidden=0}delete L.state,L.name=unescapexml(utf8read(L.name)),delete L[0],T.Sheets.push(L);break;case"</sheet>":break;case"<functionGroups":case"<functionGroups/>":break;case"<functionGroup":break;case"<externalReferences":case"</externalReferences>":case"<externalReferences>":break;case"<externalReference":break;case"<definedNames/>":break;case"<definedNames>":case"<definedNames":S=!0;break;case"</definedNames>":S=!1;break;case"<definedName":C={},C.Name=utf8read(L.name),L.comment&&(C.Comment=L.comment),L.localSheetId&&(C.Sheet=+L.localSheetId),parsexmlbool(L.hidden||"0")&&(C.Hidden=!0),_=I+R.length;break;case"</definedName>":C.Ref=unescapexml(utf8read(o.slice(_,I))),T.Names.push(C);break;case"<definedName/>":break;case"<calcPr":delete L[0],T.CalcPr=L;break;case"<calcPr/>":delete L[0],T.CalcPr=L;break;case"</calcPr>":break;case"<oleSize":break;case"<customWorkbookViews>":case"</customWorkbookViews>":case"<customWorkbookViews":break;case"<customWorkbookView":case"</customWorkbookView>":break;case"<pivotCaches>":case"</pivotCaches>":case"<pivotCaches":break;case"<pivotCache":break;case"<smartTagPr":case"<smartTagPr/>":break;case"<smartTagTypes":case"<smartTagTypes>":case"</smartTagTypes>":break;case"<smartTagType":break;case"<webPublishing":case"<webPublishing/>":break;case"<fileRecoveryPr":case"<fileRecoveryPr/>":break;case"<webPublishObjects>":case"<webPublishObjects":case"</webPublishObjects>":break;case"<webPublishObject":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":S=!0;break;case"</ext>":S=!1;break;case"<ArchID":break;case"<AlternateContent":case"<AlternateContent>":S=!0;break;case"</AlternateContent>":S=!1;break;case"<revisionPtr":break;default:if(!S&&u.WTF)throw new Error("unrecognized "+L[0]+" in workbook")}return R}),XMLNS_main.indexOf(T.xmlns)===-1)throw new Error("Unknown Namespace: "+T.xmlns);return parse_wb_defaults(T),T}function write_wb_xml(o){var u=[XML_HEADER];u[u.length]=writextag("workbook",null,{xmlns:XMLNS_main[0],"xmlns:r":XMLNS.r});var T=o.Workbook&&(o.Workbook.Names||[]).length>0,S={codeName:"ThisWorkbook"};o.Workbook&&o.Workbook.WBProps&&(WBPropsDef.forEach(function(P){o.Workbook.WBProps[P[0]]!=null&&o.Workbook.WBProps[P[0]]!=P[1]&&(S[P[0]]=o.Workbook.WBProps[P[0]])}),o.Workbook.WBProps.CodeName&&(S.codeName=o.Workbook.WBProps.CodeName,delete S.CodeName)),u[u.length]=writextag("workbookPr",null,S);var E=o.Workbook&&o.Workbook.Sheets||[],C=0;if(E&&E[0]&&E[0].Hidden){for(u[u.length]="<bookViews>",C=0;C!=o.SheetNames.length&&!(!E[C]||!E[C].Hidden);++C);C==o.SheetNames.length&&(C=0),u[u.length]='<workbookView firstSheet="'+C+'" activeTab="'+C+'"/>',u[u.length]="</bookViews>"}for(u[u.length]="<sheets>",C=0;C!=o.SheetNames.length;++C){var _={name:escapexml(o.SheetNames[C].slice(0,31))};if(_.sheetId=""+(C+1),_["r:id"]="rId"+(C+1),E[C])switch(E[C].Hidden){case 1:_.state="hidden";break;case 2:_.state="veryHidden";break}u[u.length]=writextag("sheet",null,_)}return u[u.length]="</sheets>",T&&(u[u.length]="<definedNames>
270",o.Workbook&&o.Workbook.Names&&o.Workbook.Names.forEach(function(P){var R={name:P.Name};P.Comment&&(R.comment=P.Comment),P.Sheet!=null&&(R.localSheetId=""+P.Sheet),P.Hidden&&(R.hidden="1"),P.Ref&&(u[u.length]=writextag("definedName",escapexml(P.Ref),R))}),u[u.length]="</definedNames>"),u.length>2&&(u[u.length]="</workbook>",u[1]=u[1].replace("/>",">")),u.join("")}function parse_BrtBundleSh(o,u){var T={};return T.Hidden=o.read_shift(4),T.iTabID=o.read_shift(4),T.strRelID=parse_RelID(o),T.name=parse_XLWideString(o),T}function write_BrtBundleSh(o,u){return u||(u=new_buf(127)),u.write_shift(4,o.Hidden),u.write_shift(4,o.iTabID),write_RelID(o.strRelID,u),write_XLWideString(o.name.slice(0,31),u),u.length>u.l?u.slice(0,u.l):u}function parse_BrtWbProp(o,u){var T={},S=o.read_shift(4);T.defaultThemeVersion=o.read_shift(4);var E=u>8?parse_XLWideString(o):"";return E.length>0&&(T.CodeName=E),T.autoCompressPictures=!!(S&65536),T.backupFile=!!(S&64),T.checkCompatibility=!!(S&4096),T.date1904=!!(S&1),T.filterPrivacy=!!(S&8),T.hidePivotFieldList=!!(S&1024),T.promptedSolutions=!!(S&16),T.publishItems=!!(S&2048),T.refreshAllConnections=!!(S&262144),T.saveExternalLinkValues=!!(S&128),T.showBorderUnselectedTables=!!(S&4),T.showInkAnnotation=!!(S&32),T.showObjects=["all","placeholders","none"][S>>13&3],T.showPivotChartFilter=!!(S&32768),T.updateLinks=["userSet","never","always"][S>>8&3],T}function write_BrtWbProp(o,u){u||(u=new_buf(72));var T=0;return o&&o.filterPrivacy&&(T|=8),u.write_shift(4,T),u.write_shift(4,0),write_XLSBCodeName(o&&o.CodeName||"ThisWorkbook",u),u.slice(0,u.l)}function parse_BrtFRTArchID$(o,u){var T={};return o.read_shift(4),T.ArchID=o.read_shift(4),o.l+=u-8,T}function parse_BrtName(o,u,T){var S=o.l+u;o.l+=4,o.l+=1;var E=o.read_shift(4),C=parse_XLNameWideString(o),_=parse_XLSBNameParsedFormula(o,0,T),P=parse_XLNullableWideString(o);o.l=S;var R={Name:C,Ptg:_};return E<268435455&&(R.Sheet=E),P&&(R.Comment=P),R}function parse_wb_bin(o,u){var T={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""},S=[],E=!1;u||(u={}),u.biff=12;var C=[],_=[[]];return _.SheetNames=[],_.XTI=[],XLSBRecordEnum[16]={n:"BrtFRTArchID$",f:parse_BrtFRTArchID$},recordhopper(o,function(R,I,L){switch(L){case 156:_.SheetNames.push(R.name),T.Sheets.push(R);break;case 153:T.WBProps=R;break;case 39:R.Sheet!=null&&(u.SID=R.Sheet),R.Ref=stringify_formula(R.Ptg,null,null,_,u),delete u.SID,delete R.Ptg,C.push(R);break;case 1036:break;case 357:case 358:case 355:case 667:_[0].length?_.push([L,R]):_[0]=[L,R],_[_.length-1].XTI=[];break;case 362:_.length===0&&(_[0]=[],_[0].XTI=[]),_[_.length-1].XTI=_[_.length-1].XTI.concat(R),_.XTI=_.XTI.concat(R);break;case 361:break;case 2071:case 158:case 143:case 664:case 353:break;case 3072:case 3073:case 534:case 677:case 157:case 610:case 2050:case 155:case 548:case 676:case 128:case 665:case 2128:case 2125:case 549:case 2053:case 596:case 2076:case 2075:case 2082:case 397:case 154:case 1117:case 553:case 2091:break;case 35:S.push(L),E=!0;break;case 36:S.pop(),E=!1;break;case 37:S.push(L),E=!0;break;case 38:S.pop(),E=!1;break;case 16:break;default:if(!I.T){if(!E||u.WTF&&S[S.length-1]!=37&&S[S.length-1]!=35)throw new Error("Unexpected record 0x"+L.toString(16))}}},u),parse_wb_defaults(T),T.Names=C,T.supbooks=_,T}function write_BUNDLESHS(o,u){write_record(o,143);for(var T=0;T!=u.SheetNames.length;++T){var S=u.Workbook&&u.Workbook.Sheets&&u.Workbook.Sheets[T]&&u.Workbook.Sheets[T].Hidden||0,E={Hidden:S,iTabID:T+1,strRelID:"rId"+(T+1),name:u.SheetNames[T]};write_record(o,156,write_BrtBundleSh(E))}write_record(o,144)}function write_BrtFileVersion(o,u){u||(u=new_buf(127));for(var T=0;T!=4;++T)u.write_shift(4,0);return write_XLWideString("SheetJS",u),write_XLWideString(XLSX.version,u),write_XLWideString(XLSX.version,u),write_XLWideString("7262",u),u.length>u.l?u.slice(0,u.l):u}function write_BrtBookView(o,u){u||(u=new_buf(29)),u.write_shift(-4,0),u.write_shift(-4,460),u.write_shift(4,28800),u.write_shift(4,17600),u.write_shift(4,500),u.write_shift(4,o),u.write_shift(4,o);var T=120;return u.write_shift(1,T),u.length>u.l?u.slice(0,u.l):u}function write_BOOKVIEWS(o,u){if(!(!u.Workbook||!u.Workbook.Sheets)){for(var T=u.Workbook.Sheets,S=0,E=-1,C=-1;S<T.length;++S)!T[S]||!T[S].Hidden&&E==-1?E=S:T[S].Hidden==1&&C==-1&&(C=S);C>E||(write_record(o,135),write_record(o,158,write_BrtBookView(E)),write_record(o,136))}}function write_wb_bin(o,u){var T=buf_array();return write_record(T,131),write_record(T,128,write_BrtFileVersion()),write_record(T,153,write_BrtWbProp(o.Workbook&&o.Workbook.WBProps||null)),write_BOOKVIEWS(T,o),write_BUNDLESHS(T,o),write_record(T,132),T.end()}function parse_wb(o,u,T){return u.slice(-4)===".bin"?parse_wb_bin(o,T):parse_wb_xml(o,T)}function parse_ws(o,u,T,S,E,C,_,P){return u.slice(-4)===".bin"?parse_ws_bin(o,S,T,E,C,_,P):
vendor: 16,277 bytes, lines 270-272
270parse_ws_xml(o,S,T,E,C,_,P)}function parse_cs(o,u,T,S,E,C,_,P){return u.slice(-4)===".bin"?parse_cs_bin(o,S,T,E,C):parse_cs_xml(o,S,T,E,C)}function parse_ms(o,u,T,S,E,C,_,P){return u.slice(-4)===".bin"?parse_ms_bin():parse_ms_xml()}function parse_ds(o,u,T,S,E,C,_,P){return u.slice(-4)===".bin"?parse_ds_bin():parse_ds_xml()}function parse_sty(o,u,T,S){return u.slice(-4)===".bin"?parse_sty_bin(o,T,S):parse_sty_xml(o,T,S)}function parse_theme(o,u,T){return parse_theme_xml(o,T)}function parse_sst(o,u,T){return u.slice(-4)===".bin"?parse_sst_bin(o,T):parse_sst_xml(o,T)}function parse_cmnt(o,u,T){return u.slice(-4)===".bin"?parse_comments_bin(o,T):parse_comments_xml(o,T)}function parse_cc(o,u,T){return u.slice(-4)===".bin"?parse_cc_bin(o):parse_cc_xml(o)}function parse_xlink(o,u,T,S){return T.slice(-4)===".bin"?parse_xlink_bin(o,u,T,S):void 0}function parse_xlmeta(o,u,T){return u.slice(-4)===".bin"?parse_xlmeta_bin(o,u,T):parse_xlmeta_xml(o,u,T)}function write_wb(o,u,T){return(u.slice(-4)===".bin"?write_wb_bin:write_wb_xml)(o)}function write_ws(o,u,T,S,E){return(u.slice(-4)===".bin"?write_ws_bin:write_ws_xml)(o,T,S,E)}function write_sty(o,u,T){return(u.slice(-4)===".bin"?write_sty_bin:write_sty_xml)(o,T)}function write_sst(o,u,T){return(u.slice(-4)===".bin"?write_sst_bin:write_sst_xml)(o,T)}function write_cmnt(o,u,T){return(u.slice(-4)===".bin"?write_comments_bin:write_comments_xml)(o)}function write_xlmeta(o){return(o.slice(-4)===".bin"?write_xlmeta_bin:write_xlmeta_xml)()}var attregexg2=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,attregex2=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/;function xlml_parsexmltag(o,u){var T=o.split(/\s+/),S=[];if(S[0]=T[0],T.length===1)return S;var E=o.match(attregexg2),C,_,P,R;if(E)for(R=0;R!=E.length;++R)C=E[R].match(attregex2),(_=C[1].indexOf(":"))===-1?S[C[1]]=C[2].slice(1,C[2].length-1):(C[1].slice(0,6)==="xmlns:"?P="xmlns"+C[1].slice(6):P=C[1].slice(_+1),S[P]=C[2].slice(1,C[2].length-1));return S}function xlml_parsexmltagobj(o){var u=o.split(/\s+/),T={};if(u.length===1)return T;var S=o.match(attregexg2),E,C,_,P;if(S)for(P=0;P!=S.length;++P)E=S[P].match(attregex2),(C=E[1].indexOf(":"))===-1?T[E[1]]=E[2].slice(1,E[2].length-1):(E[1].slice(0,6)==="xmlns:"?_="xmlns"+E[1].slice(6):_=E[1].slice(C+1),T[_]=E[2].slice(1,E[2].length-1));return T}var XLMLFormatMap;function xlml_format(o,u){var T=XLMLFormatMap[o]||unescapexml(o);return T==="General"?SSF_general(u):SSF_format(T,u)}function xlml_set_custprop(o,u,T,S){var E=S;switch((T[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":E=parsexmlbool(S);break;case"i2":case"int":E=parseInt(S,10);break;case"r4":case"float":E=parseFloat(S);break;case"date":case"dateTime.tz":E=parseDate(S);break;case"i8":case"string":case"fixed":case"uuid":case"bin.base64":break;default:throw new Error("bad custprop:"+T[0])}o[unescapexml(u)]=E}function safe_format_xlml(o,u,T){if(o.t!=="z"){if(!T||T.cellText!==!1)try{o.t==="e"?o.w=o.w||BErr[o.v]:u==="General"?o.t==="n"?(o.v|0)===o.v?o.w=o.v.toString(10):o.w=SSF_general_num(o.v):o.w=SSF_general(o.v):o.w=xlml_format(u||"General",o.v)}catch(C){if(T.WTF)throw C}try{var S=XLMLFormatMap[u]||u||"General";if(T.cellNF&&(o.z=S),T.cellDates&&o.t=="n"&&fmt_is_date(S)){var E=SSF_parse_date_code(o.v);E&&(o.t="d",o.v=new Date(E.y,E.m-1,E.d,E.H,E.M,E.S,E.u))}}catch(C){if(T.WTF)throw C}}}function process_style_xlml(o,u,T){if(T.cellStyles&&u.Interior){var S=u.Interior;S.Pattern&&(S.patternType=XLMLPatternTypeMap[S.Pattern]||S.Pattern)}o[u.ID]=u}function parse_xlml_data(o,u,T,S,E,C,_,P,R,I){var L="General",j=S.StyleID,M={};I=I||{};var D=[],F=0;for(j===void 0&&P&&(j=P.StyleID),j===void 0&&_&&(j=_.StyleID);C[j]!==void 0&&(C[j].nf&&(L=C[j].nf),C[j].Interior&&D.push(C[j].Interior),!!C[j].Parent);)j=C[j].Parent;switch(T.Type){case"Boolean":S.t="b",S.v=parsexmlbool(o);break;case"String":S.t="s",S.r=xlml_fixstr(unescapexml(o)),S.v=o.indexOf("<")>-1?unescapexml(u||o).replace(/<.*?>/g,""):S.r;break;case"DateTime":o.slice(-1)!="Z"&&(o+="Z"),S.v=(parseDate(o)-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3),S.v!==S.v?S.v=unescapexml(o):S.v<60&&(S.v=S.v-1),(!L||L=="General")&&(L="yyyy-mm-dd");case"Number":S.v===void 0&&(S.v=+o),S.t||(S.t="n");break;case"Error":S.t="e",S.v=RBErr[o],I.cellText!==!1&&(S.w=o);break;default:o==""&&u==""?S.t="z":(S.t="s",S.v=xlml_fixstr(u||o));break}if(safe_format_xlml(S,L,I),I.cellFormula!==!1)if(S.Formula){var N=unescapexml(S.Formula);N.charCodeAt(0)==61&&(N=N.slice(1)),S.f=rc_to_a1(N,E),delete S.Formula,S.ArrayRange=="RC"?S.F=rc_to_a1("RC:RC",E):S.ArrayRange&&(S.F=rc_to_a1(S.ArrayRange,E),R.push([safe_decode_range(S.F),S.F]))}else for(F=0;F<R.length;++F)E.r>=R[F][0].s.r&&E.r<=R[F][0].e.r&&E.c>=R[F][0].s.c&&E.c<=R[F][0].e.c&&(S.F=R[F][1]);I.cellStyles&&(D.forEach(function(G){!M.patternType&&G.patternType&&(M.patternType=G.patternType)}),S.s=M),S.StyleID!==void 0&&(S.ixfe=S.StyleID)}function xlml_clean_comment(o){o.t=o.v||"",o.t=o.t.replace(/\r\n/g,` 271`).replace(/\r/g,` 272`),o.v=o.w=o.ixfe=void 0}function parse_xlml_xml(o,u){var T=u||{};make_ssf();var S=debom(xlml_normalize(o));(T.type=="binary"||T.type=="array"||T.type=="base64")&&(typeof $cptable<"u"?S=$cptable.utils.decode(65001,char_codes(S)):S=utf8read(S));var E=S.slice(0,1024).toLowerCase(),C=!1;if(E=E.replace(/".*?"/g,""),(E.indexOf(">")&1023)>Math.min(E.indexOf(",")&1023,E.indexOf(";")&1023)){var _=dup(T);return _.type="string",PRN.to_workbook(S,_)}if(E.indexOf("<?xml")==-1&&["html","table","head","meta","script","style","div"].forEach(function(Xe){E.indexOf("<"+Xe)>=0&&(C=!0)}),C)return html_to_workbook(S,T);XLMLFormatMap={"General Number":"General","General Date":table_fmt[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":table_fmt[15],"Short Date":table_fmt[14],"Long Time":table_fmt[19],"Medium Time":table_fmt[18],"Short Time":table_fmt[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:table_fmt[2],Standard:table_fmt[4],Percent:table_fmt[10],Scientific:table_fmt[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var P,R=[],I,L={},j=[],M=T.dense?[]:{},D="",F={},N={},G=xlml_parsexmltag('<Data ss:Type="String">'),B=0,H=0,O=0,V={s:{r:2e6,c:2e6},e:{r:0,c:0}},U={},W={},K="",Y=0,ee=[],oe={},se={},Q=0,ie=[],ae=[],re={},J=[],te,Z=!1,X=[],de=[],he={},ne=0,ue=0,ce={Sheets:[],WBProps:{date1904:!1}},fe={};xlmlregex.lastIndex=0,S=S.replace(/<!--([\s\S]*?)-->/mg,"");for(var ve="";P=xlmlregex.exec(S);)switch(P[3]=(ve=P[3]).toLowerCase()){case"data":if(ve=="data"){if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else P[0].charAt(P[0].length-2)!=="/"&&R.push([P[3],!0]);break}if(R[R.length-1][1])break;P[1]==="/"?parse_xlml_data(S.slice(B,P.index),K,G,R[R.length-1][0]=="comment"?re:F,{c:H,r:O},U,J[H],N,X,T):(K="",G=xlml_parsexmltag(P[0]),B=P.index+P[0].length);break;case"cell":if(P[1]==="/")if(ae.length>0&&(F.c=ae),(!T.sheetRows||T.sheetRows>O)&&F.v!==void 0&&(T.dense?(M[O]||(M[O]=[]),M[O][H]=F):M[encode_col(H)+encode_row(O)]=F),F.HRef&&(F.l={Target:unescapexml(F.HRef)},F.HRefScreenTip&&(F.l.Tooltip=F.HRefScreenTip),delete F.HRef,delete F.HRefScreenTip),(F.MergeAcross||F.MergeDown)&&(ne=H+(parseInt(F.MergeAcross,10)|0),ue=O+(parseInt(F.MergeDown,10)|0),ee.push({s:{c:H,r:O},e:{c:ne,r:ue}})),!T.sheetStubs)F.MergeAcross?H=ne+1:++H;else if(F.MergeAcross||F.MergeDown){for(var Te=H;Te<=ne;++Te)for(var Se=O;Se<=ue;++Se)(Te>H||Se>O)&&(T.dense?(M[Se]||(M[Se]=[]),M[Se][Te]={t:"z"}):M[encode_col(Te)+encode_row(Se)]={t:"z"});H=ne+1}else++H;else F=xlml_parsexmltagobj(P[0]),F.Index&&(H=+F.Index-1),H<V.s.c&&(V.s.c=H),H>V.e.c&&(V.e.c=H),P[0].slice(-2)==="/>"&&++H,ae=[];break;case"row":P[1]==="/"||P[0].slice(-2)==="/>"?(O<V.s.r&&(V.s.r=O),O>V.e.r&&(V.e.r=O),P[0].slice(-2)==="/>"&&(N=xlml_parsexmltag(P[0]),N.Index&&(O=+N.Index-1)),H=0,++O):(N=xlml_parsexmltag(P[0]),N.Index&&(O=+N.Index-1),he={},(N.AutoFitHeight=="0"||N.Height)&&(he.hpx=parseInt(N.Height,10),he.hpt=px2pt(he.hpx),de[O]=he),N.Hidden=="1"&&(he.hidden=!0,de[O]=he));break;case"worksheet":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"));j.push(D),V.s.r<=V.e.r&&V.s.c<=V.e.c&&(M["!ref"]=encode_range(V),T.sheetRows&&T.sheetRows<=V.e.r&&(M["!fullref"]=M["!ref"],V.e.r=T.sheetRows-1,M["!ref"]=encode_range(V))),ee.length&&(M["!merges"]=ee),J.length>0&&(M["!cols"]=J),de.length>0&&(M["!rows"]=de),L[D]=M}else V={s:{r:2e6,c:2e6},e:{r:0,c:0}},O=H=0,R.push([P[3],!1]),I=xlml_parsexmltag(P[0]),D=unescapexml(I.Name),M=T.dense?[]:{},ee=[],X=[],de=[],fe={name:D,Hidden:0},ce.Sheets.push(fe);break;case"table":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else{if(P[0].slice(-2)=="/>")break;R.push([P[3],!1]),J=[],Z=!1}break;case"style":P[1]==="/"?process_style_xlml(U,W,T):W=xlml_parsexmltag(P[0]);break;case"numberformat":W.nf=unescapexml(xlml_parsexmltag(P[0]).Format||"General"),XLMLFormatMap[W.nf]&&(W.nf=XLMLFormatMap[W.nf]);for(var ke=0;ke!=392&&table_fmt[ke]!=W.nf;++ke);if(ke==392){for(ke=57;ke!=392;++ke)if(table_fmt[ke]==null){SSF_load(W.nf,ke);break}}break;case"column":if(R[R.length-1][0]!=="table")break;if(te=xlml_parsexmltag(P[0]),te.Hidden&&(te.hidden=!0,delete te.Hidden),te.Width&&(te.wpx=parseInt(te.Width,10)),!Z&&te.wpx>10){Z=!0,MDW=DEF_MDW;for(var we=0;we<J.length;++we)J[we]&&process_col(J[we])}Z&&process_col(te),J[te.Index-1||J.length]=te;for(var Le=0;Le<+te.Span;++Le)J[J.length]=dup(te);break;case"namedrange":if(P[1]==="/")break;ce.Names||(ce.Names=[]);var pe=parsexmltag(P[0]),Me={Name:pe.Name,Ref:rc_to_a1(pe.RefersTo.slice(1),{r:0,c:0})};ce.Sheets.length>0&&(Me.Sheet=ce.Sheets.length-1),ce.Names.push(Me);break;case"namedcell":break;case"b":break;case"i":break;case"u":break;case"s":break;case"em":break;case"h2":break;case"h3":break;case"sub":break;case"sup":break;case"span":break;case"alignment":break;case"borders":break;case"border":break;case"font":if(P[0].slice(-2)==="/>")break;P[1]==="/"?K+=S.slice(Y,P.index):Y=P.index+P[0].length;break;case"interior":if(!T.cellStyles)break;W.Interior=xlml_parsexmltag(P[0]);break;case"protection":break;case"author":case"title":case"description":case"created":case"keywords":case"subject":case"category":case"company":case"lastauthor":case"lastsaved":case"lastprinted":case"version":case"revision":case"totaltime":case"hyperlinkbase":case"manager":case"contentstatus":case"identifier":case"language":case"appname":if(P[0].slice(-2)==="/>")break;P[1]==="/"?xlml_set_prop(oe,ve,S.slice(Q,P.index)):Q=P.index+P[0].length;break;case"paragraphs":break;case"styles":case"workbook":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else R.push([P[3],!1]);break;case"comment":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"));xlml_clean_comment(re),ae.push(re)}else R.push([P[3],!1]),I=xlml_parsexmltag(P[0]),re={a:I.Author};break;case"autofilter":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else if(P[0].charAt(P[0].length-2)!=="/"){var Pe=xlml_parsexmltag(P[0]);M["!autofilter"]={ref:rc_to_a1(Pe.Range).replace(/\$/g,"")},R.push([P[3],!0])}break;case"name":break;case"datavalidation":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else P[0].charAt(P[0].length-2)!=="/"&&R.push([P[3],!0]);break;case"pixelsperinch":break;case"componentoptions":case"documentproperties":case"customdocumentproperties":case"officedocumentsettings":case"pivottable":case"pivotcache":case"names":case"mapinfo":case"pagebreaks":case"querytable":case"sorting":case"schema":case"conditionalformatting":case"smarttagtype":case"smarttags":case"excelworkbook":case"workbookoptions":case"worksheetoptions":if(P[1]==="/"){if((I=R.pop())[0]!==P[3])throw new Error("Bad state: "+I.join("|"))}else P[0].charAt(P[0].length-2)!=="/"&&R.push([P[3],!0]);break;case"null":break;default:if(R.length==0&&P[3]=="document"||R.length==0&&P[3]=="uof")return parse_fods(S,T);var Ue=!0;switch(R[R.length-1][0]){case"officedocumentsettings":switch(P[3]){case"allowpng":break;case"removepersonalinformation":break;case"downloadcomponents":break;case"locationofcomponents":break;case"colors":break;case"color":break;case"index":break;case"rgb":break;case"targetscreensize":break;case"readonlyrecommended":break;default:Ue=!1}break;case"componentoptions":switch(P[3]){case"toolbar":break;case"hideofficelogo":break;case"spreadsheetautofit":break;case"label":break;case"caption":break;case"maxheight":break;case"maxwidth":break;case"nextsheetnumber":break;default:Ue=!1}break;case"excelworkbook":switch(P[3]){case"date1904":ce.WBProps.date1904=!0;break;case"windowheight":break;case"windowwidth":break;case"windowtopx":break;case"windowtopy":break;case"tabratio":break;case"protectstructure":break;case"protectwindow":break;case"protectwindows":break;case"activesheet":break;case"displayinknotes":break;case"firstvisiblesheet":break;case"supbook":break;case"sheetname":break;case"sheetindex":break;case"sheetindexfirst":break;case"sheetindexlast":break;case"dll":break;case"acceptlabelsinformulas":break;case"donotsavelinkvalues":break;case"iteration":break;case"maxiterations":break;case"maxchange":break;case"path":break;case"xct":break;case"count":break;case"selectedsheets":break;case"calculation":break;case"uncalced":break;case"startupprompt":break;case"crn":break;case"externname":break;case"formula":break;case"colfirst":break;case"collast":break;case"wantadvise":break;case"boolean":break;case"error":break;case"text":break;case"ole":break;case"noautorecover":break;case"publishobjects":break;case"donotcalculatebeforesave":break;case"number":break;case"refmoder1c1":break;case"embedsavesmarttags":break;default:Ue=!1}break;case"workbookoptions":switch(P[3]){case"owcversion":break;case"height":break;case"width":break;default:Ue=!1}break;case"worksheetoptions":switch(P[3]){case"visible":if(P[0].slice(-2)!=="/>")if(P[1]==="/")switch(S.slice(Q,P.index)){case"SheetHidden":fe.Hidden=1;break;case"SheetVeryHidden":fe.Hidden=2;break}else Q=P.index+P[0].length;break;case"header":M["!margins"]||default_margins(M["!margins"]={},"xlml"),isNaN(+parsexmltag(P[0]).Margin)||(M["!margins"].header=+parsexmltag(P[0]).Margin);break;case"footer":M["!margins"]||default_margins(M["!margins"]={},"xlml"),isNaN(+parsexmltag(P[0]).Margin)||(M["!margins"].footer=+parsexmltag(P[0]).Margin);break;case"pagemargins":var qe=parsexmltag(P[0]);M["!margins"]||default_margins(M["!margins"]={},"xlml"),isNaN(+qe.Top)||(M["!margins"].top=+qe.Top),isNaN(+qe.Left)||(M["!margins"].left=+qe.Left),isNaN(+qe.Right)||(M["!margins"].right=+qe.Right),isNaN(+qe.Bottom)||(M["!margins"].bottom=+qe.Bottom);break;case"displayrighttoleft":ce.Views||(ce.Views=[]),ce.Views[0]||(ce.Views[0]={}),ce.Views[0].RTL=!0;break;case"freezepanes":break;case"frozennosplit":break;case"splithorizontal":case"splitvertical":break;case"donotdisplaygridlines":break;case"activerow":break;case"activecol":break;case"toprowbottompane":break;case"leftcolumnrightpane":break;case"unsynced":break;case"print":break;case"printerrors":break;case"panes":break;case"scale":break;case"pane":break;case"number":break;case"layout":break;case"pagesetup":break;case"selected":break;case"protectobjects":break;case"enableselection":break;case"protectscenarios":break;case"validprinterinfo":break;case"horizontalresolution":break;case"verticalresolution":break;case"numberofcopies":break;case"activepane":break;case"toprowvisible":break;case"leftcolumnvisible":break;case"fittopage":break;case"rangeselection":break;case"papersizeindex":break;case"pagelayoutzoom":break;case"pagebreakzoom":break;case"filteron":break;case"fitwidth":break;case"fitheight":break;case"commentslayout":break;case"zoom":break;case"lefttoright":break;case"gridlines":break;case"allowsort":break;case"allowfilter":break;case"allowinsertrows":break;case"allowdeleterows":break;case"allowinsertcols":break;case"allowdeletecols":break;case"allowinserthyperlinks":break;case"allowformatcells":break;case"allowsizecols":break;case"allowsizerows":break;case"nosummaryrowsbelowdetail":M["!outline"]||(M["!outline"]={}),M["!outline"].above=!0;break;case"tabcolorindex":break;case"donotdisplayheadings":break;case"showpagelayoutzoom":break;case"nosummarycolumnsrightdetail":M["!outline"]||(M["!outline"]={}
272),M["!outline"].left=!0;break;case"blackandwhite":break;case"donotdisplayzeros":break;case"displaypagebreak":break;case"rowcolheadings":break;case"donotdisplayoutline":break;case"noorientation":break;case"allowusepivottables":break;case"zeroheight":break;case"viewablerange":break;case"selection":break;case"protectcontents":break;default:Ue=!1}break;case"pivottable":case"pivotcache":switch(P[3]){case"immediateitemsondrop":break;case"showpagemultipleitemlabel":break;case"compactrowindent":break;case"location":break;case"pivotfield":break;case"orientation":break;case"layoutform":break;case"layoutsubtotallocation":break;case"layoutcompactrow":break;case"position":break;case"pivotitem":break;case"datatype":break;case"datafield":break;case"sourcename":break;case"parentfield":break;case"ptlineitems":break;case"ptlineitem":break;case"countofsameitems":break;case"item":break;case"itemtype":break;case"ptsource":break;case"cacheindex":break;case"consolidationreference":break;case"filename":break;case"reference":break;case"nocolumngrand":break;case"norowgrand":break;case"blanklineafteritems":break;case"hidden":break;case"subtotal":break;case"basefield":break;case"mapchilditems":break;case"function":break;case"refreshonfileopen":break;case"printsettitles":break;case"mergelabels":break;case"defaultversion":break;case"refreshname":break;case"refreshdate":break;case"refreshdatecopy":break;case"versionlastrefresh":break;case"versionlastupdate":break;case"versionupdateablemin":break;case"versionrefreshablemin":break;case"calculation":break;default:Ue=!1}break;case"pagebreaks":switch(P[3]){case"colbreaks":break;case"colbreak":break;case"rowbreaks":break;case"rowbreak":break;case"colstart":break;case"colend":break;case"rowend":break;default:Ue=!1}break;case"autofilter":switch(P[3]){case"autofiltercolumn":break;case"autofiltercondition":break;case"autofilterand":break;case"autofilteror":break;default:Ue=!1}break;case"querytable":switch(P[3]){case"id":break;case"autoformatfont":break;case"autoformatpattern":break;case"querysource":break;case"querytype":break;case"enableredirections":break;case"refreshedinxl9":break;case"urlstring":break;case"htmltables":break;case"connection":break;case"commandtext":break;case"refreshinfo":break;case"notitles":break;case"nextid":break;case"columninfo":break;case"overwritecells":break;case"donotpromptforfile":break;case"textwizardsettings":break;case"source":break;case"number":break;case"decimal":break;case"thousandseparator":break;case"trailingminusnumbers":break;case"formatsettings":break;case"fieldtype":break;case"delimiters":break;case"tab":break;case"comma":break;case"autoformatname":break;case"versionlastedit":break;case"versionlastrefresh":break;default:Ue=!1}break;case"datavalidation":switch(P[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;case"cellrangelist":break;default:Ue=!1}break;case"sorting":case"conditionalformatting":switch(P[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"cellrangelist":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;default:Ue=!1}break;case"mapinfo":case"schema":case"data":switch(P[3]){case"map":break;case"entry":break;case"range":break;case"xpath":break;case"field":break;case"xsdtype":break;case"filteron":break;case"aggregate":break;case"elementtype":break;case"attributetype":break;case"schema":case"element":case"complextype":case"datatype":case"all":case"attribute":case"extends":break;case"row":break;default:Ue=!1}break;case"smarttags":break;default:Ue=!1;break}if(Ue||P[3].match(/!\[CDATA/))break;if(!R[R.length-1][1])throw"Unrecognized tag: "+P[3]+"|"+R.join("|");if(R[R.length-1][0]==="customdocumentproperties"){if(P[0].slice(-2)==="/>")break;P[1]==="/"?xlml_set_custprop(se,ve,ie,S.slice(Q,P.index)):(ie=P,Q=P.index+P[0].length);break}if(T.WTF)throw"Unrecognized tag: "+P[3]+"|"+R.join("|")}var Ie={};return!T.bookSheets&&!T.bookProps&&(Ie.Sheets=L),Ie.SheetNames=j,Ie.Workbook=ce,Ie.SSF=dup(table_fmt),Ie.Props=oe,Ie.Custprops=se,Ie}function parse_xlml(o,u){switch(fix_read_opts(u=u||{}),u.type||"base64"){case"base64":return parse_xlml_xml(Base64_decode(o),u);case"binary":case"buffer":case"file":return parse_xlml_xml(o,u);case"array":return parse_xlml_xml(a2s(o),u)}}function write_props_xlml(o,u){var T=[];return o.Props&&T.push(xlml_write_docprops(o.Props,u)),o.Custprops&&T.push(xlml_write_custprops(o.Props,o.Custprops)),T.join("")}function write_wb_xlml(){return""}function write_sty_xlml(o,u){var T=['<Style ss:ID="Default" ss:Name="Normal"><NumberFormat/></Style>'];
vendor: 30,831 bytes, line 272
272return u.cellXfs.forEach(function(S,E){var C=[];C.push(writextag("NumberFormat",null,{"ss:Format":escapexml(table_fmt[S.numFmtId])}));var _={"ss:ID":"s"+(21+E)};T.push(writextag("Style",C.join(""),_))}),writextag("Styles",T.join(""))}function write_name_xlml(o){return writextag("NamedRange",null,{"ss:Name":o.Name,"ss:RefersTo":"="+a1_to_rc(o.Ref,{r:0,c:0})})}function write_names_xlml(o){if(!((o||{}).Workbook||{}).Names)return"";for(var u=o.Workbook.Names,T=[],S=0;S<u.length;++S){var E=u[S];E.Sheet==null&&(E.Name.match(/^_xlfn\./)||T.push(write_name_xlml(E)))}return writextag("Names",T.join(""))}function write_ws_xlml_names(o,u,T,S){if(!o||!((S||{}).Workbook||{}).Names)return"";for(var E=S.Workbook.Names,C=[],_=0;_<E.length;++_){var P=E[_];P.Sheet==T&&(P.Name.match(/^_xlfn\./)||C.push(write_name_xlml(P)))}return C.join("")}function write_ws_xlml_wsopts(o,u,T,S){if(!o)return"";var E=[];if(o["!margins"]&&(E.push("<PageSetup>"),o["!margins"].header&&E.push(writextag("Header",null,{"x:Margin":o["!margins"].header})),o["!margins"].footer&&E.push(writextag("Footer",null,{"x:Margin":o["!margins"].footer})),E.push(writextag("PageMargins",null,{"x:Bottom":o["!margins"].bottom||"0.75","x:Left":o["!margins"].left||"0.7","x:Right":o["!margins"].right||"0.7","x:Top":o["!margins"].top||"0.75"})),E.push("</PageSetup>")),S&&S.Workbook&&S.Workbook.Sheets&&S.Workbook.Sheets[T])if(S.Workbook.Sheets[T].Hidden)E.push(writextag("Visible",S.Workbook.Sheets[T].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var C=0;C<T&&!(S.Workbook.Sheets[C]&&!S.Workbook.Sheets[C].Hidden);++C);C==T&&E.push("<Selected/>")}return((((S||{}).Workbook||{}).Views||[])[0]||{}).RTL&&E.push("<DisplayRightToLeft/>"),o["!protect"]&&(E.push(writetag("ProtectContents","True")),o["!protect"].objects&&E.push(writetag("ProtectObjects","True")),o["!protect"].scenarios&&E.push(writetag("ProtectScenarios","True")),o["!protect"].selectLockedCells!=null&&!o["!protect"].selectLockedCells?E.push(writetag("EnableSelection","NoSelection")):o["!protect"].selectUnlockedCells!=null&&!o["!protect"].selectUnlockedCells&&E.push(writetag("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(_){o["!protect"][_[0]]&&E.push("<"+_[1]+"/>")})),E.length==0?"":writextag("WorksheetOptions",E.join(""),{xmlns:XLMLNS.x})}function write_ws_xlml_comment(o){return o.map(function(u){var T=xlml_unfixstr(u.t||""),S=writextag("ss:Data",T,{xmlns:"http://www.w3.org/TR/REC-html40"});return writextag("Comment",S,{"ss:Author":u.a})}).join("")}function write_ws_xlml_cell(o,u,T,S,E,C,_){if(!o||o.v==null&&o.f==null)return"";var P={};if(o.f&&(P["ss:Formula"]="="+escapexml(a1_to_rc(o.f,_))),o.F&&o.F.slice(0,u.length)==u){var R=decode_cell(o.F.slice(u.length+1));P["ss:ArrayRange"]="RC:R"+(R.r==_.r?"":"["+(R.r-_.r)+"]")+"C"+(R.c==_.c?"":"["+(R.c-_.c)+"]")}if(o.l&&o.l.Target&&(P["ss:HRef"]=escapexml(o.l.Target),o.l.Tooltip&&(P["x:HRefScreenTip"]=escapexml(o.l.Tooltip))),T["!merges"])for(var I=T["!merges"],L=0;L!=I.length;++L)I[L].s.c!=_.c||I[L].s.r!=_.r||(I[L].e.c>I[L].s.c&&(P["ss:MergeAcross"]=I[L].e.c-I[L].s.c),I[L].e.r>I[L].s.r&&(P["ss:MergeDown"]=I[L].e.r-I[L].s.r));var j="",M="";switch(o.t){case"z":if(!S.sheetStubs)return"";break;case"n":j="Number",M=String(o.v);break;case"b":j="Boolean",M=o.v?"1":"0";break;case"e":j="Error",M=BErr[o.v];break;case"d":j="DateTime",M=new Date(o.v).toISOString(),o.z==null&&(o.z=o.z||table_fmt[14]);break;case"s":j="String",M=escapexlml(o.v||"");break}var D=get_cell_style(S.cellXfs,o,S);P["ss:StyleID"]="s"+(21+D),P["ss:Index"]=_.c+1;var F=o.v!=null?M:"",N=o.t=="z"?"":'<Data ss:Type="'+j+'">'+F+"</Data>";return(o.c||[]).length>0&&(N+=write_ws_xlml_comment(o.c)),writextag("Cell",N,P)}function write_ws_xlml_row(o,u){var T='<Row ss:Index="'+(o+1)+'"';return u&&(u.hpt&&!u.hpx&&(u.hpx=pt2px(u.hpt)),u.hpx&&(T+=' ss:AutoFitHeight="0" ss:Height="'+u.hpx+'"'),u.hidden&&(T+=' ss:Hidden="1"')),T+">"}function write_ws_xlml_table(o,u,T,S){if(!o["!ref"])return"";var E=safe_decode_range(o["!ref"]),C=o["!merges"]||[],_=0,P=[];o["!cols"]&&o["!cols"].forEach(function(G,B){process_col(G);var H=!!G.width,O=col_obj_w(B,G),V={"ss:Index":B+1};H&&(V["ss:Width"]=width2px(O.width)),G.hidden&&(V["ss:Hidden"]="1"),P.push(writextag("Column",null,V))});for(var R=Array.isArray(o),I=E.s.r;I<=E.e.r;++I){for(var L=[write_ws_xlml_row(I,(o["!rows"]||[])[I])],j=E.s.c;j<=E.e.c;++j){var M=!1;for(_=0;_!=C.length;++_)if(!(C[_].s.c>j)&&!(C[_].s.r>I)&&!(C[_].e.c<j)&&!(C[_].e.r<I)){(C[_].s.c!=j||C[_].s.r!=I)&&(M=!0);break}if(!M){var D={r:I,c:j},F=encode_cell(D),N=R?(o[I]||[])[j]:o[F];L.push(write_ws_xlml_cell(N,F,o,u,T,S,D))}}L.push("</Row>"),L.length>2&&P.push(L.join(""))}return P.join("")}function write_ws_xlml(o,u,T){var S=[],E=T.SheetNames[o],C=T.Sheets[E],_=C?write_ws_xlml_names(C,u,o,T):"";return _.length>0&&S.push("<Names>"+_+"</Names>"),_=C?write_ws_xlml_table(C,u,o,T):"",_.length>0&&S.push("<Table>"+_+"</Table>"),S.push(write_ws_xlml_wsopts(C,u,o,T)),S.join("")}function write_xlml(o,u){u||(u={}),o.SSF||(o.SSF=dup(table_fmt)),o.SSF&&(make_ssf(),SSF_load_table(o.SSF),u.revssf=evert_num(o.SSF),u.revssf[o.SSF[65535]]=0,u.ssf=o.SSF,u.cellXfs=[],get_cell_style(u.cellXfs,{},{revssf:{General:0}}));var T=[];T.push(write_props_xlml(o,u)),T.push(write_wb_xlml()),T.push(""),T.push("");for(var S=0;S<o.SheetNames.length;++S)T.push(writextag("Worksheet",write_ws_xlml(S,u,o),{"ss:Name":escapexml(o.SheetNames[S])}));return T[2]=write_sty_xlml(o,u),T[3]=write_names_xlml(o),XML_HEADER+writextag("Workbook",T.join(""),{xmlns:XLMLNS.ss,"xmlns:o":XLMLNS.o,"xmlns:x":XLMLNS.x,"xmlns:ss":XLMLNS.ss,"xmlns:dt":XLMLNS.dt,"xmlns:html":XLMLNS.html})}function parse_compobj(o){var u={},T=o.content;if(T.l=28,u.AnsiUserType=T.read_shift(0,"lpstr-ansi"),u.AnsiClipboardFormat=parse_ClipboardFormatOrAnsiString(T),T.length-T.l<=4)return u;var S=T.read_shift(4);if(S==0||S>40||(T.l-=4,u.Reserved1=T.read_shift(0,"lpstr-ansi"),T.length-T.l<=4)||(S=T.read_shift(4),S!==1907505652)||(u.UnicodeClipboardFormat=parse_ClipboardFormatOrUnicodeString(T),S=T.read_shift(4),S==0||S>40))return u;T.l-=4,u.Reserved2=T.read_shift(0,"lpwstr")}var CONTINUE_RT=[60,1084,2066,2165,2175];function slurp(o,u,T,S,E){var C=S,_=[],P=T.slice(T.l,T.l+C);if(E&&E.enc&&E.enc.insitu&&P.length>0)switch(o){case 9:case 521:case 1033:case 2057:case 47:case 405:case 225:case 406:case 312:case 404:case 10:break;case 133:break;default:E.enc.insitu(P)}_.push(P),T.l+=C;for(var R=__readUInt16LE(T,T.l),I=XLSRecordEnum[R],L=0;I!=null&&CONTINUE_RT.indexOf(R)>-1;)C=__readUInt16LE(T,T.l+2),L=T.l+4,R==2066?L+=4:(R==2165||R==2175)&&(L+=12),P=T.slice(L,T.l+4+C),_.push(P),T.l+=4+C,I=XLSRecordEnum[R=__readUInt16LE(T,T.l)];var j=bconcat(_);prep_blob(j,0);var M=0;j.lens=[];for(var D=0;D<_.length;++D)j.lens.push(M),M+=_[D].length;if(j.length<S)throw"XLS Record 0x"+o.toString(16)+" Truncated: "+j.length+" < "+S;return u.f(j,j.length,E)}function safe_format_xf(o,u,T){if(o.t!=="z"&&o.XF){var S=0;try{S=o.z||o.XF.numFmtId||0,u.cellNF&&(o.z=table_fmt[S])}catch(C){if(u.WTF)throw C}if(!u||u.cellText!==!1)try{o.t==="e"?o.w=o.w||BErr[o.v]:S===0||S=="General"?o.t==="n"?(o.v|0)===o.v?o.w=o.v.toString(10):o.w=SSF_general_num(o.v):o.w=SSF_general(o.v):o.w=SSF_format(S,o.v,{date1904:!!T,dateNF:u&&u.dateNF})}catch(C){if(u.WTF)throw C}if(u.cellDates&&S&&o.t=="n"&&fmt_is_date(table_fmt[S]||String(S))){var E=SSF_parse_date_code(o.v);E&&(o.t="d",o.v=new Date(E.y,E.m-1,E.d,E.H,E.M,E.S,E.u))}}}function make_cell(o,u,T){return{v:o,ixfe:u,t:T}}function parse_workbook(o,u){var T={opts:{}},S={},E=u.dense?[]:{},C={},_={},P=null,R=[],I="",L={},j,M="",D,F,N,G,B={},H=[],O,V,U=[],W=[],K={Sheets:[],WBProps:{date1904:!1},Views:[{}]},Y={},ee=function(je){return je<8?XLSIcv[je]:je<64&&W[je-8]||XLSIcv[je]},oe=function(je,Be,Qe){var Ge=Be.XF.data;if(!(!Ge||!Ge.patternType||!Qe||!Qe.cellStyles)){Be.s={},Be.s.patternType=Ge.patternType;var We;(We=rgb2Hex(ee(Ge.icvFore)))&&(Be.s.fgColor={rgb:We}),(We=rgb2Hex(ee(Ge.icvBack)))&&(Be.s.bgColor={rgb:We})}},se=function(je,Be,Qe){if(!(he>1)&&!(Qe.sheetRows&&je.r>=Qe.sheetRows)){if(Qe.cellStyles&&Be.XF&&Be.XF.data&&oe(je,Be,Qe),delete Be.ixfe,delete Be.XF,j=je,M=encode_cell(je),(!_||!_.s||!_.e)&&(_={s:{r:0,c:0},e:{r:0,c:0}}),je.r<_.s.r&&(_.s.r=je.r),je.c<_.s.c&&(_.s.c=je.c),je.r+1>_.e.r&&(_.e.r=je.r+1),je.c+1>_.e.c&&(_.e.c=je.c+1),Qe.cellFormula&&Be.f){for(var Ge=0;Ge<H.length;++Ge)if(!(H[Ge][0].s.c>je.c||H[Ge][0].s.r>je.r)&&!(H[Ge][0].e.c<je.c||H[Ge][0].e.r<je.r)){Be.F=encode_range(H[Ge][0]),(H[Ge][0].s.c!=je.c||H[Ge][0].s.r!=je.r)&&delete Be.f,Be.f&&(Be.f=""+stringify_formula(H[Ge][1],_,je,X,Q));break}}Qe.dense?(E[je.r]||(E[je.r]=[]),E[je.r][je.c]=Be):E[M]=Be}},Q={enc:!1,sbcch:0,snames:[],sharedf:B,arrayf:H,rrtabid:[],lastuser:"",biff:8,codepage:0,winlocked:0,cellStyles:!!u&&!!u.cellStyles,WTF:!!u&&!!u.wtf};u.password&&(Q.password=u.password);var ie,ae=[],re=[],J=[],te=[],Z=!1,X=[];X.SheetNames=Q.snames,X.sharedf=Q.sharedf,X.arrayf=Q.arrayf,X.names=[],X.XTI=[];var de=0,he=0,ne=0,ue=[],ce=[],fe;Q.codepage=1200,set_cp(1200);for(var ve=!1;o.l<o.length-1;){var Te=o.l,Se=o.read_shift(2);if(Se===0&&de===10)break;var ke=o.l===o.length?0:o.read_shift(2),we=XLSRecordEnum[Se];if(we&&we.f){if(u.bookSheets&&de===133&&Se!==133)break;if(de=Se,we.r===2||we.r==12){var Le=o.read_shift(2);if(ke-=2,!Q.enc&&Le!==Se&&((Le&255)<<8|Le>>8)!==Se)throw new Error("rt mismatch: "+Le+"!="+Se);we.r==12&&(o.l+=10,ke-=10)}var pe={};if(Se===10?pe=we.f(o,ke,Q):pe=slurp(Se,we,o,ke,Q),he==0&&[9,521,1033,2057].indexOf(de)===-1)continue;switch(Se){case 34:T.opts.Date1904=K.WBProps.date1904=pe;break;case 134:T.opts.WriteProtect=!0;break;case 47:if(Q.enc||(o.l=0),Q.enc=pe,!u.password)throw new Error("File is password-protected");if(pe.valid==null)throw new Error("Encryption scheme unsupported");if(!pe.valid)throw new Error("Password is incorrect");break;case 92:Q.lastuser=pe;break;case 66:var Me=Number(pe);switch(Me){case 21010:Me=1200;break;case 32768:Me=1e4;break;case 32769:Me=1252;break}set_cp(Q.codepage=Me),ve=!0;break;case 317:Q.rrtabid=pe;break;case 25:Q.winlocked=pe;break;case 439:T.opts.RefreshAll=pe;break;case 12:T.opts.CalcCount=pe;break;case 16:T.opts.CalcDelta=pe;break;case 17:T.opts.CalcIter=pe;break;case 13:T.opts.CalcMode=pe;break;case 14:T.opts.CalcPrecision=pe;break;case 95:T.opts.CalcSaveRecalc=pe;break;case 15:Q.CalcRefMode=pe;break;case 2211:T.opts.FullCalc=pe;break;case 129:pe.fDialog&&(E["!type"]="dialog"),pe.fBelow||((E["!outline"]||(E["!outline"]={})).above=!0),pe.fRight||((E["!outline"]||(E["!outline"]={})).left=!0);break;case 224:U.push(pe);break;case 430:X.push([pe]),X[X.length-1].XTI=[];break;case 35:case 547:X[X.length-1].push(pe);break;case 24:case 536:fe={Name:pe.Name,Ref:stringify_formula(pe.rgce,_,null,X,Q)},pe.itab>0&&(fe.Sheet=pe.itab-1),X.names.push(fe),X[0]||(X[0]=[],X[0].XTI=[]),X[X.length-1].push(pe),pe.Name=="_xlnm._FilterDatabase"&&pe.itab>0&&pe.rgce&&pe.rgce[0]&&pe.rgce[0][0]&&pe.rgce[0][0][0]=="PtgArea3d"&&(ce[pe.itab-1]={ref:encode_range(pe.rgce[0][0][1][2])});break;case 22:Q.ExternCount=pe;break;case 23:X.length==0&&(X[0]=[],X[0].XTI=[]),X[X.length-1].XTI=X[X.length-1].XTI.concat(pe),X.XTI=X.XTI.concat(pe);break;case 2196:if(Q.biff<8)break;fe!=null&&(fe.Comment=pe[1]);break;case 18:E["!protect"]=pe;break;case 19:pe!==0&&Q.WTF&&console.error("Password verifier: "+pe);break;case 133:C[pe.pos]=pe,Q.snames.push(pe.name);break;case 10:{if(--he)break;if(_.e){if(_.e.r>0&&_.e.c>0){if(_.e.r--,_.e.c--,E["!ref"]=encode_range(_),u.sheetRows&&u.sheetRows<=_.e.r){var Pe=_.e.r;_.e.r=u.sheetRows-1,E["!fullref"]=E["!ref"],E["!ref"]=encode_range(_),_.e.r=Pe}_.e.r++,_.e.c++}ae.length>0&&(E["!merges"]=ae),re.length>0&&(E["!objects"]=re),J.length>0&&(E["!cols"]=J),te.length>0&&(E["!rows"]=te),K.Sheets.push(Y)}I===""?L=E:S[I]=E,E=u.dense?[]:{}}break;case 9:case 521:case 1033:case 2057:{if(Q.biff===8&&(Q.biff={9:2,521:3,1033:4}[Se]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[pe.BIFFVer]||8),Q.biffguess=pe.BIFFVer==0,pe.BIFFVer==0&&pe.dt==4096&&(Q.biff=5,ve=!0,set_cp(Q.codepage=28591)),Q.biff==8&&pe.BIFFVer==0&&pe.dt==16&&(Q.biff=2),he++)break;if(E=u.dense?[]:{},Q.biff<8&&!ve&&(ve=!0,set_cp(Q.codepage=u.codepage||1252)),Q.biff<5||pe.BIFFVer==0&&pe.dt==4096){I===""&&(I="Sheet1"),_={s:{r:0,c:0},e:{r:0,c:0}};var Ue={pos:o.l-ke,name:I};C[Ue.pos]=Ue,Q.snames.push(I)}else I=(C[Te]||{name:""}).name;pe.dt==32&&(E["!type"]="chart"),pe.dt==64&&(E["!type"]="macro"),ae=[],re=[],Q.arrayf=H=[],J=[],te=[],Z=!1,Y={Hidden:(C[Te]||{hs:0}).hs,name:I}}break;case 515:case 3:case 2:E["!type"]=="chart"&&(u.dense?(E[pe.r]||[])[pe.c]:E[encode_cell({c:pe.c,r:pe.r})])&&++pe.c,O={ixfe:pe.ixfe,XF:U[pe.ixfe]||{},v:pe.val,t:"n"},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u);break;case 5:case 517:O={ixfe:pe.ixfe,XF:U[pe.ixfe],v:pe.val,t:pe.t},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u);break;case 638:O={ixfe:pe.ixfe,XF:U[pe.ixfe],v:pe.rknum,t:"n"},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u);break;case 189:for(var qe=pe.c;qe<=pe.C;++qe){var Ie=pe.rkrec[qe-pe.c][0];O={ixfe:Ie,XF:U[Ie],v:pe.rkrec[qe-pe.c][1],t:"n"},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:qe,r:pe.r},O,u)}break;case 6:case 518:case 1030:{if(pe.val=="String"){P=pe;break}if(O=make_cell(pe.val,pe.cell.ixfe,pe.tt),O.XF=U[O.ixfe],u.cellFormula){var Xe=pe.formula;if(Xe&&Xe[0]&&Xe[0][0]&&Xe[0][0][0]=="PtgExp"){var et=Xe[0][0][1][0],tt=Xe[0][0][1][1],Ye=encode_cell({r:et,c:tt});B[Ye]?O.f=""+stringify_formula(pe.formula,_,pe.cell,X,Q):O.F=((u.dense?(E[et]||[])[tt]:E[Ye])||{}).F}else O.f=""+stringify_formula(pe.formula,_,pe.cell,X,Q)}ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se(pe.cell,O,u),P=pe}break;case 7:case 519:if(P)P.val=pe,O=make_cell(pe,P.cell.ixfe,"s"),O.XF=U[O.ixfe],u.cellFormula&&(O.f=""+stringify_formula(P.formula,_,P.cell,X,Q)),ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se(P.cell,O,u),P=null;else throw new Error("String record expects Formula");break;case 33:case 545:{H.push(pe);var ze=encode_cell(pe[0].s);if(D=u.dense?(E[pe[0].s.r]||[])[pe[0].s.c]:E[ze],u.cellFormula&&D){if(!P||!ze||!D)break;D.f=""+stringify_formula(pe[1],_,pe[0],X,Q),D.F=encode_range(pe[0])}}break;case 1212:{if(!u.cellFormula)break;if(M){if(!P)break;B[encode_cell(P.cell)]=pe[0],D=u.dense?(E[P.cell.r]||[])[P.cell.c]:E[encode_cell(P.cell)],(D||{}).f=""+stringify_formula(pe[0],_,j,X,Q)}}break;case 253:O=make_cell(R[pe.isst].t,pe.ixfe,"s"),R[pe.isst].h&&(O.h=R[pe.isst].h),O.XF=U[O.ixfe],ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u);break;case 513:u.sheetStubs&&(O={ixfe:pe.ixfe,XF:U[pe.ixfe],t:"z"},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u));break;case 190:if(u.sheetStubs)for(var Ze=pe.c;Ze<=pe.C;++Ze){var He=pe.ixfe[Ze-pe.c];O={ixfe:He,XF:U[He],t:"z"},ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:Ze,r:pe.r},O,u)}break;case 214:case 516:case 4:O=make_cell(pe.val,pe.ixfe,"s"),O.XF=U[O.ixfe],ne>0&&(O.z=ue[O.ixfe>>8&63]),safe_format_xf(O,u,T.opts.Date1904),se({c:pe.c,r:pe.r},O,u);break;case 0:case 512:he===1&&(_=pe);break;case 252:R=pe;break;case 1054:if(Q.biff==4){ue[ne++]=pe[1];for(var rt=0;rt<ne+163&&table_fmt[rt]!=pe[1];++rt);rt>=163&&SSF_load(pe[1],ne+163)}else SSF_load(pe[1],pe[0]);break;case 30:{ue[ne++]=pe;for(var it=0;it<ne+163&&table_fmt[it]!=pe;++it);it>=163&&SSF_load(pe,ne+163)}break;case 229:ae=ae.concat(pe);break;case 93:re[pe.cmo[0]]=Q.lastobj=pe;break;case 438:Q.lastobj.TxO=pe;break;case 127:Q.lastobj.ImData=pe;break;case 440:for(G=pe[0].s.r;G<=pe[0].e.r;++G)for(N=pe[0].s.c;N<=pe[0].e.c;++N)D=u.dense?(E[G]||[])[N]:E[encode_cell({c:N,r:G})],D&&(D.l=pe[1]);break;case 2048:for(G=pe[0].s.r;G<=pe[0].e.r;++G)for(N=pe[0].s.c;N<=pe[0].e.c;++N)D=u.dense?(E[G]||[])[N]:E[encode_cell({c:N,r:G})],D&&D.l&&(D.l.Tooltip=pe[1]);break;case 28:{if(Q.biff<=5&&Q.biff>=2)break;D=u.dense?(E[pe[0].r]||[])[pe[0].c]:E[encode_cell(pe[0])];var st=re[pe[2]];D||(u.dense?(E[pe[0].r]||(E[pe[0].r]=[]),D=E[pe[0].r][pe[0].c]={t:"z"}):D=E[encode_cell(pe[0])]={t:"z"},_.e.r=Math.max(_.e.r,pe[0].r),_.s.r=Math.min(_.s.r,pe[0].r),_.e.c=Math.max(_.e.c,pe[0].c),_.s.c=Math.min(_.s.c,pe[0].c)),D.c||(D.c=[]),F={a:pe[1],t:st.TxO.t},D.c.push(F)}break;case 2173:update_xfext(U[pe.ixfe],pe.ext);break;case 125:{if(!Q.cellStyles)break;for(;pe.e>=pe.s;)J[pe.e--]={width:pe.w/256,level:pe.level||0,hidden:!!(pe.flags&1)},Z||(Z=!0,find_mdw_colw(pe.w/256)),process_col(J[pe.e+1])}break;case 520:{var at={};pe.level!=null&&(te[pe.r]=at,at.level=pe.level),pe.hidden&&(te[pe.r]=at,at.hidden=!0),pe.hpt&&(te[pe.r]=at,at.hpt=pe.hpt,at.hpx=pt2px(pe.hpt))}break;case 38:case 39:case 40:case 41:E["!margins"]||default_margins(E["!margins"]={}),E["!margins"][{38:"left",39:"right",40:"top",41:"bottom"}[Se]]=pe;break;case 161:E["!margins"]||default_margins(E["!margins"]={}),E["!margins"].header=pe.header,E["!margins"].footer=pe.footer;break;case 574:pe.RTL&&(K.Views[0].RTL=!0);break;case 146:W=pe;break;case 2198:ie=pe;break;case 140:V=pe;break;case 442:I?Y.CodeName=pe||Y.name:K.WBProps.CodeName=pe||"ThisWorkbook";break}}else we||console.error("Missing Info for XLS Record 0x"+Se.toString(16)),o.l+=ke}return T.SheetNames=keys(C).sort(function(ot,je){return Number(ot)-Number(je)}).map(function(ot){return C[ot].name}),u.bookSheets||(T.Sheets=S),!T.SheetNames.length&&L["!ref"]?(T.SheetNames.push("Sheet1"),T.Sheets&&(T.Sheets.Sheet1=L)):T.Preamble=L,T.Sheets&&ce.forEach(function(ot,je){T.Sheets[T.SheetNames[je]]["!autofilter"]=ot}),T.Strings=R,T.SSF=dup(table_fmt),Q.enc&&(T.Encryption=Q.enc),ie&&(T.Themes=ie),T.Metadata={},V!==void 0&&(T.Metadata.Country=V),X.names.length>0&&(K.Names=X.names),T.Workbook=K,T}var PSCLSID={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function parse_xls_props(o,u,T){var S=CFB.find(o,"/!DocumentSummaryInformation");if(S&&S.size>0)try{var E=parse_PropertySetStream(S,DocSummaryPIDDSI,PSCLSID.DSI);for(var C in E)u[C]=E[C]}catch(I){if(T.WTF)throw I}var _=CFB.find(o,"/!SummaryInformation");if(_&&_.size>0)try{var P=parse_PropertySetStream(_,SummaryPIDSI,PSCLSID.SI);for(var R in P)u[R]==null&&(u[R]=P[R])}catch(I){if(T.WTF)throw I}u.HeadingPairs&&u.TitlesOfParts&&(load_props_pairs(u.HeadingPairs,u.TitlesOfParts,u,T),delete u.HeadingPairs,delete u.TitlesOfParts)}function write_xls_props(o,u){var T=[],S=[],E=[],C=0,_,P=evert_key(DocSummaryPIDDSI,"n"),R=evert_key(SummaryPIDSI,"n");if(o.Props)for(_=keys(o.Props),C=0;C<_.length;++C)(Object.prototype.hasOwnProperty.call(P,_[C])?T:Object.prototype.hasOwnProperty.call(R,_[C])?S:E).push([_[C],o.Props[_[C]]]);if(o.Custprops)for(_=keys(o.Custprops),C=0;C<_.length;++C)Object.prototype.hasOwnProperty.call(o.Props||{},_[C])||(Object.prototype.hasOwnProperty.call(P,_[C])?T:Object.prototype.hasOwnProperty.call(R,_[C])?S:E).push([_[C],o.Custprops[_[C]]]);var I=[];for(C=0;C<E.length;++C)XLSPSSkip.indexOf(E[C][0])>-1||PseudoPropsPairs.indexOf(E[C][0])>-1||E[C][1]!=null&&I.push(E[C]);S.length&&CFB.utils.cfb_add(u,"/�SummaryInformation",write_PropertySetStream(S,PSCLSID.SI,R,SummaryPIDSI)),(T.length||I.length)&&CFB.utils.cfb_add(u,"/�DocumentSummaryInformation",write_PropertySetStream(T,PSCLSID.DSI,P,DocSummaryPIDDSI,I.length?I:null,PSCLSID.UDI))}function parse_xlscfb(o,u){u||(u={}),fix_read_opts(u),reset_cp(),u.codepage&&set_ansi(u.codepage);var T,S;if(o.FullPaths){if(CFB.find(o,"/encryption"))throw new Error("File is password-protected");T=CFB.find(o,"!CompObj"),S=CFB.find(o,"/Workbook")||CFB.find(o,"/Book")}else{switch(u.type){case"base64":o=s2a(Base64_decode(o));break;case"binary":o=s2a(o);break;case"buffer":break;case"array":Array.isArray(o)||(o=Array.prototype.slice.call(o));break}prep_blob(o,0),S={content:o}}var E,C;if(T&&parse_compobj(T),u.bookProps&&!u.bookSheets)E={};else{var _=has_buf?"buffer":"array";if(S&&S.content)E=parse_workbook(S.content,u);else if((C=CFB.find(o,"PerfectOffice_MAIN"))&&C.content)E=WK_.to_workbook(C.content,(u.type=_,u));else if((C=CFB.find(o,"NativeContent_MAIN"))&&C.content)E=WK_.to_workbook(C.content,(u.type=_,u));else throw(C=CFB.find(o,"MN0"))&&C.content?new Error("Unsupported Works 4 for Mac file"):new Error("Cannot find Workbook stream");u.bookVBA&&o.FullPaths&&CFB.find(o,"/_VBA_PROJECT_CUR/VBA/dir")&&(E.vbaraw=make_vba_xls(o))}var P={};return o.FullPaths&&parse_xls_props(o,P,u),E.Props=E.Custprops=P,u.bookFiles&&(E.cfb=o),E}function write_xlscfb(o,u){var T=u||{},S=CFB.utils.cfb_new({root:"R"}),E="/Workbook";switch(T.bookType||"xls"){case"xls":T.bookType="biff8";case"xla":T.bookType||(T.bookType="xla");case"biff8":E="/Workbook",T.biff=8;break;case"biff5":E="/Book",T.biff=5;break;default:throw new Error("invalid type "+T.bookType+" for XLS CFB")}return CFB.utils.cfb_add(S,E,write_biff_buf(o,T)),T.biff==8&&(o.Props||o.Custprops)&&write_xls_props(o,S),T.biff==8&&o.vbaraw&&fill_vba_xls(S,CFB.read(o.vbaraw,{type:typeof o.vbaraw=="string"?"binary":"buffer"})),S}var XLSBRecordEnum={0:{f:parse_BrtRowHdr},1:{f:parse_BrtCellBlank},2:{f:parse_BrtCellRk},3:{f:parse_BrtCellError},4:{f:parse_BrtCellBool},5:{f:parse_BrtCellReal},6:{f:parse_BrtCellSt},7:{f:parse_BrtCellIsst},8:{f:parse_BrtFmlaString},9:{f:parse_BrtFmlaNum},10:{f:parse_BrtFmlaBool},11:{f:parse_BrtFmlaError},12:{f:parse_BrtShortBlank},13:{f:parse_BrtShortRk},14:{f:parse_BrtShortError},15:{f:parse_BrtShortBool},16:{f:parse_BrtShortReal},17:{f:parse_BrtShortSt},18:{f:parse_BrtShortIsst},19:{f:parse_RichStr},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:parse_BrtName},40:{},42:{},43:{f:parse_BrtFont},44:{f:parse_BrtFmt},45:{f:parse_BrtFill},46:{f:parse_BrtBorder},47:{f:parse_BrtXF},48:{},49:{f:parse_Int32LE},50:{},51:{f:parse_BrtMdb},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:parse_ColInfo},62:{f:parse_BrtCellRString},63:{f:parse_BrtCalcChainItem$},64:{f:parse_BrtDVal},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:parsenoop,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:parse_BrtBeginWsView},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:parse_BrtWsProp},148:{f:parse_BrtWsDim,p:16},151:{f:parse_BrtPane},152:{},153:{f:parse_BrtWbProp},154:{},155:{},156:{f:parse_BrtBundleSh},157:{},158:{},159:{T:1,f:parse_BrtBeginSst},160:{T:-1},161:{T:1,f:parse_UncheckedRfX},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:parse_BrtMergeCell},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:parse_BrtMdtinfo},336:{T:-1},337:{f:parse_BrtBeginEsmdb,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:parse_RelID},357:{},358:{},359:{},360:{T:1},361:{},362:{f:parse_ExternSheet},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:parse_BrtArrFmla},427:{f:parse_BrtShrFmla},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:parse_BrtMargins},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:parse_BrtWsFmtInfo},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:parse_BrtHLink},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:parse_RelID},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:parse_BrtCommentAuthor},633:{T:1},634:{T:-1},635:{T:1,f:parse_BrtBeginComment},636:{T:-1},637:{f:parse_BrtCommentText},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:parse_BrtCsProp},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:parse_BrtDVal14},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}},XLSRecordEnum={6:{f:parse_Formula},10:{f:parsenoop2},12:{f:parseuint16}
272,13:{f:parseuint16},14:{f:parsebool},15:{f:parsebool},16:{f:parse_Xnum},17:{f:parsebool},18:{f:parsebool},19:{f:parseuint16},20:{f:parse_XLHeaderFooter},21:{f:parse_XLHeaderFooter},23:{f:parse_ExternSheet},24:{f:parse_Lbl},25:{f:parsebool},26:{},27:{},28:{f:parse_Note},29:{},34:{f:parsebool},35:{f:parse_ExternName},38:{f:parse_Xnum},39:{f:parse_Xnum},40:{f:parse_Xnum},41:{f:parse_Xnum},42:{f:parsebool},43:{f:parsebool},47:{f:parse_FilePass},49:{f:parse_Font},51:{f:parseuint16},60:{},61:{f:parse_Window1},64:{f:parsebool},65:{f:parse_Pane},66:{f:parseuint16},77:{},80:{},81:{},82:{},85:{f:parseuint16},89:{},90:{},91:{},92:{f:parse_WriteAccess},93:{f:parse_Obj},94:{},95:{f:parsebool},96:{},97:{},99:{f:parsebool},125:{f:parse_ColInfo},128:{f:parse_Guts},129:{f:parse_WsBool},130:{f:parseuint16},131:{f:parsebool},132:{f:parsebool},133:{f:parse_BoundSheet8},134:{},140:{f:parse_Country},141:{f:parseuint16},144:{},146:{f:parse_Palette},151:{},152:{},153:{},154:{},155:{},156:{f:parseuint16},157:{},158:{},160:{f:parse_Scl},161:{f:parse_Setup},174:{},175:{},176:{},177:{},178:{},180:{},181:{},182:{},184:{},185:{},189:{f:parse_MulRk},190:{f:parse_MulBlank},193:{f:parsenoop2},197:{},198:{},199:{},200:{},201:{},202:{f:parsebool},203:{},204:{},205:{},206:{},207:{},208:{},209:{},210:{},211:{},213:{},215:{},216:{},217:{},218:{f:parseuint16},220:{},221:{f:parsebool},222:{},224:{f:parse_XF},225:{f:parse_InterfaceHdr},226:{f:parsenoop2},227:{},229:{f:parse_MergeCells},233:{},235:{},236:{},237:{},239:{},240:{},241:{},242:{},244:{},245:{},246:{},247:{},248:{},249:{},251:{},252:{f:parse_SST},253:{f:parse_LabelSst},255:{f:parse_ExtSST},256:{},259:{},290:{},311:{},312:{},315:{},317:{f:parseuint16a},318:{},319:{},320:{},330:{},331:{},333:{},334:{},335:{},336:{},337:{},338:{},339:{},340:{},351:{},352:{f:parsebool},353:{f:parsenoop2},401:{},402:{},403:{},404:{},405:{},406:{},407:{},408:{},425:{},426:{},427:{},428:{},429:{},430:{f:parse_SupBook},431:{f:parsebool},432:{},433:{},434:{},437:{},438:{f:parse_TxO},439:{f:parsebool},440:{f:parse_HLink},441:{},442:{f:parse_XLUnicodeString},443:{},444:{f:parseuint16},445:{},446:{},448:{f:parsenoop2},449:{f:parse_RecalcId,r:2},450:{f:parsenoop2},512:{f:parse_Dimensions},513:{f:parse_Blank},515:{f:parse_Number},516:{f:parse_Label},517:{f:parse_BoolErr},519:{f:parse_String},520:{f:parse_Row},523:{},545:{f:parse_Array},549:{f:parse_DefaultRowHeight},566:{},574:{f:parse_Window2},638:{f:parse_RK},659:{},1048:{},1054:{f:parse_Format},1084:{},1212:{f:parse_ShrFmla},2048:{f:parse_HLinkTooltip},2049:{},2050:{},2051:{},2052:{},2053:{},2054:{},2055:{},2056:{},2057:{f:parse_BOF},2058:{},2059:{},2060:{},2061:{},2062:{},2063:{},2064:{},2066:{},2067:{},2128:{},2129:{},2130:{},2131:{},2132:{},2133:{},2134:{},2135:{},2136:{},2137:{},2138:{},2146:{},2147:{r:12},2148:{},2149:{},2150:{},2151:{f:parsenoop2},2152:{},2154:{},2155:{},2156:{},2161:{},2162:{},2164:{},2165:{},2166:{},2167:{},2168:{},2169:{},2170:{},2171:{},2172:{f:parse_XFCRC,r:12},2173:{f:parse_XFExt,r:12},2174:{},2175:{},2180:{},2181:{},2182:{},2183:{},2184:{},2185:{},2186:{},2187:{},2188:{f:parsebool,r:12},2189:{},2190:{r:12},2191:{},2192:{},2194:{},2195:{},2196:{f:parse_NameCmt,r:12},2197:{},2198:{f:parse_Theme,r:12},2199:{},2200:{},2201:{},2202:{f:parse_MTRSettings,r:12},2203:{f:parsenoop2},2204:{},2205:{},2206:{},2207:{},2211:{f:parse_ForceFullCalculation},2212:{},2213:{},2214:{},2215:{},4097:{},4098:{},4099:{},4102:{},4103:{},4105:{},4106:{},4107:{},4108:{},4109:{},4116:{},4117:{},4118:{},4119:{},4120:{},4121:{},4122:{},4123:{},4124:{},4125:{},4126:{},4127:{},4128:{},4129:{},4130:{},4132:{},4133:{},4134:{f:parseuint16},4135:{},4146:{},4147:{},4148:{},4149:{},4154:{},4156:{},4157:{},4158:{},4159:{},4160:{},4161:{},4163:{},4164:{f:parse_ShtProps},4165:{},4166:{},4168:{},4170:{},4171:{},4174:{},4175:{},4176:{},4177:{},4187:{},4188:{f:parse_ClrtClient},4189:{},4191:{},4192:{},4193:{},4194:{},4195:{},4196:{},4197:{},4198:{},4199:{},4200:{},0:{f:parse_Dimensions},1:{},2:{f:parse_BIFF2INT},3:{f:parse_BIFF2NUM},4:{f:parse_BIFF2STR},5:{f:parse_BoolErr},7:{f:parse_BIFF2STRING},8:{},9:{f:parse_BOF},11:{},22:{f:parseuint16},30:{f:parse_BIFF2Format},31:{},32:{},33:{f:parse_Array},36:{},37:{f:parse_DefaultRowHeight},50:{f:parse_BIFF2FONTXTRA},62:{},52:{},67:{},68:{f:parseuint16},69:{},86:{},126:{},127:{f:parse_ImData},135:{},136:{},137:{},145:{},148:{},149:{},150:{},169:{},171:{},188:{}
vendor: 46,539 bytes, lines 272-308
272,191:{},192:{},194:{},195:{},214:{f:parse_RString},223:{},234:{},354:{},421:{},518:{f:parse_Formula},521:{f:parse_BOF},536:{f:parse_Lbl},547:{f:parse_ExternName},561:{},579:{},1030:{f:parse_Formula},1033:{f:parse_BOF},1091:{},2157:{},2163:{},2177:{},2240:{},2241:{},2242:{},2243:{},2244:{},2245:{},2246:{},2247:{},2248:{},2249:{},2250:{},2251:{},2262:{r:12},29282:{}};function write_biff_rec(o,u,T,S){var E=u;if(!isNaN(E)){var C=S||(T||[]).length||0,_=o.next(4);_.write_shift(2,E),_.write_shift(2,C),C>0&&is_buf(T)&&o.push(T)}}function write_biff_continue(o,u,T,S){var E=(T||[]).length||0;if(E<=8224)return write_biff_rec(o,u,T,E);var C=u;if(!isNaN(C)){for(var _=T.parts||[],P=0,R=0,I=0;I+(_[P]||8224)<=8224;)I+=_[P]||8224,P++;var L=o.next(4);for(L.write_shift(2,C),L.write_shift(2,I),o.push(T.slice(R,R+I)),R+=I;R<E;){for(L=o.next(4),L.write_shift(2,60),I=0;I+(_[P]||8224)<=8224;)I+=_[P]||8224,P++;L.write_shift(2,I),o.push(T.slice(R,R+I)),R+=I}}}function write_BIFF2Cell(o,u,T){return o||(o=new_buf(7)),o.write_shift(2,u),o.write_shift(2,T),o.write_shift(2,0),o.write_shift(1,0),o}function write_BIFF2BERR(o,u,T,S){var E=new_buf(9);return write_BIFF2Cell(E,o,u),write_Bes(T,S||"b",E),E}function write_BIFF2LABEL(o,u,T){var S=new_buf(8+2*T.length);return write_BIFF2Cell(S,o,u),S.write_shift(1,T.length),S.write_shift(T.length,T,"sbcs"),S.l<S.length?S.slice(0,S.l):S}function write_ws_biff2_cell(o,u,T,S){if(u.v!=null)switch(u.t){case"d":case"n":var E=u.t=="d"?datenum(parseDate(u.v)):u.v;E==(E|0)&&E>=0&&E<65536?write_biff_rec(o,2,write_BIFF2INT(T,S,E)):write_biff_rec(o,3,write_BIFF2NUM(T,S,E));return;case"b":case"e":write_biff_rec(o,5,write_BIFF2BERR(T,S,u.v,u.t));return;case"s":case"str":write_biff_rec(o,4,write_BIFF2LABEL(T,S,(u.v||"").slice(0,255)));return}write_biff_rec(o,1,write_BIFF2Cell(null,T,S))}function write_ws_biff2(o,u,T,S){var E=Array.isArray(u),C=safe_decode_range(u["!ref"]||"A1"),_,P="",R=[];if(C.e.c>255||C.e.r>16383){if(S.WTF)throw new Error("Range "+(u["!ref"]||"A1")+" exceeds format limit A1:IV16384");C.e.c=Math.min(C.e.c,255),C.e.r=Math.min(C.e.c,16383),_=encode_range(C)}for(var I=C.s.r;I<=C.e.r;++I){P=encode_row(I);for(var L=C.s.c;L<=C.e.c;++L){I===C.s.r&&(R[L]=encode_col(L)),_=R[L]+P;var j=E?(u[I]||[])[L]:u[_];j&&write_ws_biff2_cell(o,j,I,L)}}}function write_biff2_buf(o,u){for(var T=u||{},S=buf_array(),E=0,C=0;C<o.SheetNames.length;++C)o.SheetNames[C]==T.sheet&&(E=C);if(E==0&&T.sheet&&o.SheetNames[0]!=T.sheet)throw new Error("Sheet not found: "+T.sheet);return write_biff_rec(S,T.biff==4?1033:T.biff==3?521:9,write_BOF(o,16,T)),write_ws_biff2(S,o.Sheets[o.SheetNames[E]],E,T),write_biff_rec(S,10),S.end()}function write_FONTS_biff8(o,u,T){write_biff_rec(o,49,write_Font({sz:12,name:"Arial"},T))}function write_FMTS_biff8(o,u,T){u&&[[5,8],[23,26],[41,44],[50,392]].forEach(function(S){for(var E=S[0];E<=S[1];++E)u[E]!=null&&write_biff_rec(o,1054,write_Format(E,u[E],T))})}function write_FEAT(o,u){var T=new_buf(19);T.write_shift(4,2151),T.write_shift(4,0),T.write_shift(4,0),T.write_shift(2,3),T.write_shift(1,1),T.write_shift(4,0),write_biff_rec(o,2151,T),T=new_buf(39),T.write_shift(4,2152),T.write_shift(4,0),T.write_shift(4,0),T.write_shift(2,3),T.write_shift(1,0),T.write_shift(4,0),T.write_shift(2,1),T.write_shift(4,4),T.write_shift(2,0),write_Ref8U(safe_decode_range(u["!ref"]||"A1"),T),T.write_shift(4,4),write_biff_rec(o,2152,T)}function write_CELLXFS_biff8(o,u){for(var T=0;T<16;++T)write_biff_rec(o,224,write_XF({numFmtId:0,style:!0},0,u));u.cellXfs.forEach(function(S){write_biff_rec(o,224,write_XF(S,0,u))})}function write_ws_biff8_hlinks(o,u){for(var T=0;T<u["!links"].length;++T){var S=u["!links"][T];write_biff_rec(o,440,write_HLink(S)),S[1].Tooltip&&write_biff_rec(o,2048,write_HLinkTooltip(S))}delete u["!links"]}function write_ws_cols_biff8(o,u){if(u){var T=0;u.forEach(function(S,E){++T<=256&&S&&write_biff_rec(o,125,write_ColInfo(col_obj_w(E,S),E))})}}function write_ws_biff8_cell(o,u,T,S,E){var C=16+get_cell_style(E.cellXfs,u,E);if(u.v==null&&!u.bf){write_biff_rec(o,513,write_XLSCell(T,S,C));return}if(u.bf)write_biff_rec(o,6,write_Formula(u,T,S,E,C));else switch(u.t){case"d":case"n":var _=u.t=="d"?datenum(parseDate(u.v)):u.v;write_biff_rec(o,515,write_Number(T,S,_,C));break;case"b":case"e":write_biff_rec(o,517,write_BoolErr(T,S,u.v,C,E,u.t));break;case"s":case"str":if(E.bookSST){var P=get_sst_id(E.Strings,u.v,E.revStrings);write_biff_rec(o,253,write_LabelSst(T,S,P,C))}else write_biff_rec(o,516,write_Label(T,S,(u.v||"").slice(0,255),C,E));break;default:write_biff_rec(o,513,write_XLSCell(T,S,C))}}function write_ws_biff8(o,u,T){var S=buf_array(),E=T.SheetNames[o],C=T.Sheets[E]||{},_=(T||{}).Workbook||{},P=(_.Sheets||[])[o]||{},R=Array.isArray(C),I=u.biff==8,L,j="",M=[],D=safe_decode_range(C["!ref"]||"A1"),F=I?65536:16384;if(D.e.c>255||D.e.r>=F){if(u.WTF)throw new Error("Range "+(C["!ref"]||"A1")+" exceeds format limit A1:IV16384");D.e.c=Math.min(D.e.c,255),D.e.r=Math.min(D.e.c,F-1)}write_biff_rec(S,2057,write_BOF(T,16,u)),write_biff_rec(S,13,writeuint16(1)),write_biff_rec(S,12,writeuint16(100)),write_biff_rec(S,15,writebool(!0)),write_biff_rec(S,17,writebool(!1)),write_biff_rec(S,16,write_Xnum(.001)),write_biff_rec(S,95,writebool(!0)),write_biff_rec(S,42,writebool(!1)),write_biff_rec(S,43,writebool(!1)),write_biff_rec(S,130,writeuint16(1)),write_biff_rec(S,128,write_Guts()),write_biff_rec(S,131,writebool(!1)),write_biff_rec(S,132,writebool(!1)),I&&write_ws_cols_biff8(S,C["!cols"]),write_biff_rec(S,512,write_Dimensions(D,u)),I&&(C["!links"]=[]);for(var N=D.s.r;N<=D.e.r;++N){j=encode_row(N);for(var G=D.s.c;G<=D.e.c;++G){N===D.s.r&&(M[G]=encode_col(G)),L=M[G]+j;var B=R?(C[N]||[])[G]:C[L];B&&(write_ws_biff8_cell(S,B,N,G,u),I&&B.l&&C["!links"].push([L,B.l]))}}var H=P.CodeName||P.name||E;return I&&write_biff_rec(S,574,write_Window2((_.Views||[])[0])),I&&(C["!merges"]||[]).length&&write_biff_rec(S,229,write_MergeCells(C["!merges"])),I&&write_ws_biff8_hlinks(S,C),write_biff_rec(S,442,write_XLUnicodeString(H)),I&&write_FEAT(S,C),write_biff_rec(S,10),S.end()}function write_biff8_global(o,u,T){var S=buf_array(),E=(o||{}).Workbook||{},C=E.Sheets||[],_=E.WBProps||{},P=T.biff==8,R=T.biff==5;if(write_biff_rec(S,2057,write_BOF(o,5,T)),T.bookType=="xla"&&write_biff_rec(S,135),write_biff_rec(S,225,P?writeuint16(1200):null),write_biff_rec(S,193,writezeroes(2)),R&&write_biff_rec(S,191),R&&write_biff_rec(S,192),write_biff_rec(S,226),write_biff_rec(S,92,write_WriteAccess("SheetJS",T)),write_biff_rec(S,66,writeuint16(P?1200:1252)),P&&write_biff_rec(S,353,writeuint16(0)),P&&write_biff_rec(S,448),write_biff_rec(S,317,write_RRTabId(o.SheetNames.length)),P&&o.vbaraw&&write_biff_rec(S,211),P&&o.vbaraw){var I=_.CodeName||"ThisWorkbook";write_biff_rec(S,442,write_XLUnicodeString(I))}write_biff_rec(S,156,writeuint16(17)),write_biff_rec(S,25,writebool(!1)),write_biff_rec(S,18,writebool(!1)),write_biff_rec(S,19,writeuint16(0)),P&&write_biff_rec(S,431,writebool(!1)),P&&write_biff_rec(S,444,writeuint16(0)),write_biff_rec(S,61,write_Window1()),write_biff_rec(S,64,writebool(!1)),write_biff_rec(S,141,writeuint16(0)),write_biff_rec(S,34,writebool(safe1904(o)=="true")),write_biff_rec(S,14,writebool(!0)),P&&write_biff_rec(S,439,writebool(!1)),write_biff_rec(S,218,writeuint16(0)),write_FONTS_biff8(S,o,T),write_FMTS_biff8(S,o.SSF,T),write_CELLXFS_biff8(S,T),P&&write_biff_rec(S,352,writebool(!1));var L=S.end(),j=buf_array();P&&write_biff_rec(j,140,write_Country()),P&&T.Strings&&write_biff_continue(j,252,write_SST(T.Strings)),write_biff_rec(j,10);var M=j.end(),D=buf_array(),F=0,N=0;for(N=0;N<o.SheetNames.length;++N)F+=(P?12:11)+(P?2:1)*o.SheetNames[N].length;var G=L.length+F+M.length;for(N=0;N<o.SheetNames.length;++N){var B=C[N]||{};write_biff_rec(D,133,write_BoundSheet8({pos:G,hs:B.Hidden||0,dt:0,name:o.SheetNames[N]},T)),G+=u[N].length}var H=D.end();if(F!=H.length)throw new Error("BS8 "+F+" != "+H.length);var O=[];return L.length&&O.push(L),H.length&&O.push(H),M.length&&O.push(M),bconcat(O)}function write_biff8_buf(o,u){var T=u||{},S=[];o&&!o.SSF&&(o.SSF=dup(table_fmt)),o&&o.SSF&&(make_ssf(),SSF_load_table(o.SSF),T.revssf=evert_num(o.SSF),T.revssf[o.SSF[65535]]=0,T.ssf=o.SSF),T.Strings=[],T.Strings.Count=0,T.Strings.Unique=0,fix_write_opts(T),T.cellXfs=[],get_cell_style(T.cellXfs,{},{revssf:{General:0}}),o.Props||(o.Props={});for(var E=0;E<o.SheetNames.length;++E)S[S.length]=write_ws_biff8(E,T,o);return S.unshift(write_biff8_global(o,S,T)),bconcat(S)}function write_biff_buf(o,u){for(var T=0;T<=o.SheetNames.length;++T){var S=o.Sheets[o.SheetNames[T]];if(!(!S||!S["!ref"])){var E=decode_range(S["!ref"]);E.e.c>255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+o.SheetNames[T]+"' extends beyond column IV (255). Data may be lost.")}}var C=u||{};switch(C.biff||2){case 8:case 5:return write_biff8_buf(o,u);case 4:case 3:case 2:return write_biff2_buf(o,u)}throw new Error("invalid type "+C.bookType+" for BIFF")}function html_to_sheet(o,u){var T=u||{},S=T.dense?[]:{};o=o.replace(/<!--.*?-->/g,"");var E=o.match(/<table/i);if(!E)throw new Error("Invalid HTML: could not find <table>");var C=o.match(/<\/table/i),_=E.index,P=C&&C.index||o.length,R=split_regex(o.slice(_,P),/(:?<tr[^>]*>)/i,"<tr>"),I=-1,L=0,j=0,M=0,D={s:{r:1e7,c:1e7},e:{r:0,c:0}},F=[];for(_=0;_<R.length;++_){var N=R[_].trim(),G=N.slice(0,3).toLowerCase();if(G=="<tr"){if(++I,T.sheetRows&&T.sheetRows<=I){--I;break}L=0;continue}if(!(G!="<td"&&G!="<th")){var B=N.split(/<\/t[dh]>/i);for(P=0;P<B.length;++P){var H=B[P].trim();if(H.match(/<t[dh]/i)){for(var O=H,V=0;O.charAt(0)=="<"&&(V=O.indexOf(">"))>-1;)O=O.slice(V+1);for(var U=0;U<F.length;++U){var W=F[U];W.s.c==L&&W.s.r<I&&I<=W.e.r&&(L=W.e.c+1,U=-1)}var K=parsexmltag(H.slice(0,H.indexOf(">")));M=K.colspan?+K.colspan:1,((j=+K.rowspan)>1||M>1)&&F.push({s:{r:I,c:L},e:{r:I+(j||1)-1,c:L+M-1}});var Y=K.t||K["data-t"]||"";if(!O.length){L+=M;continue}if(O=htmldecode(O),D.s.r>I&&(D.s.r=I),D.e.r<I&&(D.e.r=I),D.s.c>L&&(D.s.c=L),D.e.c<L&&(D.e.c=L),!O.length){L+=M;continue}var ee={t:"s",v:O};T.raw||!O.trim().length||Y=="s"||(O==="TRUE"?ee={t:"b",v:!0}:O==="FALSE"?ee={t:"b",v:!1}:isNaN(fuzzynum(O))?isNaN(fuzzydate(O).getDate())||(ee={t:"d",v:parseDate(O)},T.cellDates||(ee={t:"n",v:datenum(ee.v)}),ee.z=T.dateNF||table_fmt[14]):ee={t:"n",v:fuzzynum(O)}),T.dense?(S[I]||(S[I]=[]),S[I][L]=ee):S[encode_cell({r:I,c:L})]=ee,L+=M}}}}return S["!ref"]=encode_range(D),F.length&&(S["!merges"]=F),S}function make_html_row(o,u,T,S){for(var E=o["!merges"]||[],C=[],_=u.s.c;_<=u.e.c;++_){for(var P=0,R=0,I=0;I<E.length;++I)if(!(E[I].s.r>T||E[I].s.c>_)&&!(E[I].e.r<T||E[I].e.c<_)){if(E[I].s.r<T||E[I].s.c<_){P=-1;break}P=E[I].e.r-E[I].s.r+1,R=E[I].e.c-E[I].s.c+1;break}if(!(P<0)){var L=encode_cell({r:T,c:_}),j=S.dense?(o[T]||[])[_]:o[L],M=j&&j.v!=null&&(j.h||escapehtml(j.w||(format_cell(j),j.w)||""))||"",D={};P>1&&(D.rowspan=P),R>1&&(D.colspan=R),S.editable?M='<span contenteditable="true">'+M+"</span>":j&&(D["data-t"]=j&&j.t||"z",j.v!=null&&(D["data-v"]=j.v),j.z!=null&&(D["data-z"]=j.z),j.l&&(j.l.Target||"#").charAt(0)!="#"&&(M='<a href="'+j.l.Target+'">'+M+"</a>")),D.id=(S.id||"sjs")+"-"+L,C.push(writextag("td",M,D))}}var F="<tr>";return F+C.join("")+"</tr>"}var HTML_BEGIN='<html><head><meta charset="utf-8"/><title>SheetJS Table Export</title></head><body>',HTML_END="</body></html>";function html_to_workbook(o,u){var T=o.match(/<table[\s\S]*?>[\s\S]*?<\/table>/gi);if(!T||T.length==0)throw new Error("Invalid HTML: could not find <table>");if(T.length==1)return sheet_to_workbook(html_to_sheet(T[0],u),u);var S=book_new();return T.forEach(function(E,C){book_append_sheet(S,html_to_sheet(E,u),"Sheet"+(C+1))}),S}function make_html_preamble(o,u,T){var S=[];return S.join("")+"<table"+(T&&T.id?' id="'+T.id+'"':"")+">"}function sheet_to_html(o,u){var T=u||{},S=T.header!=null?T.header:HTML_BEGIN,E=T.footer!=null?T.footer:HTML_END,C=[S],_=decode_range(o["!ref"]);T.dense=Array.isArray(o),C.push(make_html_preamble(o,_,T));for(var P=_.s.r;P<=_.e.r;++P)C.push(make_html_row(o,_,P,T));return C.push("</table>"+E),C.join("")}function sheet_add_dom(o,u,T){var S=T||{},E=0,C=0;if(S.origin!=null)if(typeof S.origin=="number")E=S.origin;else{var _=typeof S.origin=="string"?decode_cell(S.origin):S.origin;E=_.r,C=_.c}var P=u.getElementsByTagName("tr"),R=Math.min(S.sheetRows||1e7,P.length),I={s:{r:0,c:0},e:{r:E,c:C}};if(o["!ref"]){var L=decode_range(o["!ref"]);I.s.r=Math.min(I.s.r,L.s.r),I.s.c=Math.min(I.s.c,L.s.c),I.e.r=Math.max(I.e.r,L.e.r),I.e.c=Math.max(I.e.c,L.e.c),E==-1&&(I.e.r=E=L.e.r+1)}var j=[],M=0,D=o["!rows"]||(o["!rows"]=[]),F=0,N=0,G=0,B=0,H=0,O=0;for(o["!cols"]||(o["!cols"]=[]);F<P.length&&N<R;++F){var V=P[F];if(is_dom_element_hidden(V)){if(S.display)continue;D[N]={hidden:!0}}var U=V.children;for(G=B=0;G<U.length;++G){var W=U[G];if(!(S.display&&is_dom_element_hidden(W))){var K=W.hasAttribute("data-v")?W.getAttribute("data-v"):W.hasAttribute("v")?W.getAttribute("v"):htmldecode(W.innerHTML),Y=W.getAttribute("data-z")||W.getAttribute("z");for(M=0;M<j.length;++M){var ee=j[M];ee.s.c==B+C&&ee.s.r<N+E&&N+E<=ee.e.r&&(B=ee.e.c+1-C,M=-1)}O=+W.getAttribute("colspan")||1,((H=+W.getAttribute("rowspan")||1)>1||O>1)&&j.push({s:{r:N+E,c:B+C},e:{r:N+E+(H||1)-1,c:B+C+(O||1)-1}});var oe={t:"s",v:K},se=W.getAttribute("data-t")||W.getAttribute("t")||"";K!=null&&(K.length==0?oe.t=se||"z":S.raw||K.trim().length==0||se=="s"||(K==="TRUE"?oe={t:"b",v:!0}:K==="FALSE"?oe={t:"b",v:!1}:isNaN(fuzzynum(K))?isNaN(fuzzydate(K).getDate())||(oe={t:"d",v:parseDate(K)},S.cellDates||(oe={t:"n",v:datenum(oe.v)}),oe.z=S.dateNF||table_fmt[14]):oe={t:"n",v:fuzzynum(K)})),oe.z===void 0&&Y!=null&&(oe.z=Y);var Q="",ie=W.getElementsByTagName("A");if(ie&&ie.length)for(var ae=0;ae<ie.length&&!(ie[ae].hasAttribute("href")&&(Q=ie[ae].getAttribute("href"),Q.charAt(0)!="#"));++ae);Q&&Q.charAt(0)!="#"&&(oe.l={Target:Q}),S.dense?(o[N+E]||(o[N+E]=[]),o[N+E][B+C]=oe):o[encode_cell({c:B+C,r:N+E})]=oe,I.e.c<B+C&&(I.e.c=B+C),B+=O}}++N}return j.length&&(o["!merges"]=(o["!merges"]||[]).concat(j)),I.e.r=Math.max(I.e.r,N-1+E),o["!ref"]=encode_range(I),N>=R&&(o["!fullref"]=encode_range((I.e.r=P.length-F+N-1+E,I))),o}function parse_dom_table(o,u){var T=u||{},S=T.dense?[]:{};return sheet_add_dom(S,o,u)}function table_to_book(o,u){return sheet_to_workbook(parse_dom_table(o,u),u)}function is_dom_element_hidden(o){var u="",T=get_get_computed_style_function(o);return T&&(u=T(o).getPropertyValue("display")),u||(u=o.style&&o.style.display),u==="none"}function get_get_computed_style_function(o){return o.ownerDocument.defaultView&&typeof o.ownerDocument.defaultView.getComputedStyle=="function"?o.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}function parse_text_p(o){var u=o.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(/<text:s\/>/g," ").replace(/<text:s text:c="(\d+)"\/>/g,function(S,E){return Array(parseInt(E,10)+1).join(" ")}).replace(/<text:tab[^>]*\/>/g," ").replace(/<text:line-break\/>/g,` 273`),T=unescapexml(u.replace(/<[^>]*>/g,""));return[T]}var number_formats_ods={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};function parse_content_xml(o,u){var T=u||{},S=xlml_normalize(o),E=[],C,_,P={name:""},R="",I=0,L,j,M={},D=[],F=T.dense?[]:{},N,G,B={value:""},H="",O=0,V=[],U=-1,W=-1,K={s:{r:1e6,c:1e7},e:{r:0,c:0}},Y=0,ee={},oe=[],se={},Q=0,ie=0,ae=[],re=1,J=1,te=[],Z={Names:[]},X={},de=["",""],he=[],ne={},ue="",ce=0,fe=!1,ve=!1,Te=0;for(xlmlregex.lastIndex=0,S=S.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");N=xlmlregex.exec(S);)switch(N[3]=N[3].replace(/_.*$/,"")){case"table":case"å·¥ä½è¡¨":N[1]==="/"?(K.e.c>=K.s.c&&K.e.r>=K.s.r?F["!ref"]=encode_range(K):F["!ref"]="A1:A1",T.sheetRows>0&&T.sheetRows<=K.e.r&&(F["!fullref"]=F["!ref"],K.e.r=T.sheetRows-1,F["!ref"]=encode_range(K)),oe.length&&(F["!merges"]=oe),ae.length&&(F["!rows"]=ae),L.name=L.åç§°||L.name,typeof JSON<"u"&&JSON.stringify(L),D.push(L.name),M[L.name]=F,ve=!1):N[0].charAt(N[0].length-2)!=="/"&&(L=parsexmltag(N[0],!1),U=W=-1,K.s.r=K.s.c=1e7,K.e.r=K.e.c=0,F=T.dense?[]:{},oe=[],ae=[],ve=!0);break;case"table-row-group":N[1]==="/"?--Y:++Y;break;case"table-row":case"è¡":if(N[1]==="/"){U+=re,re=1;break}if(j=parsexmltag(N[0],!1),j.è¡å·?U=j.è¡å·-1:U==-1&&(U=0),re=+j["number-rows-repeated"]||1,re<10)for(Te=0;Te<re;++Te)Y>0&&(ae[U+Te]={level:Y});W=-1;break;case"covered-table-cell":N[1]!=="/"&&++W,T.sheetStubs&&(T.dense?(F[U]||(F[U]=[]),F[U][W]={t:"z"}):F[encode_cell({r:U,c:W})]={t:"z"}),H="",V=[];break;case"table-cell":case"æ°æ®":if(N[0].charAt(N[0].length-2)==="/")++W,B=parsexmltag(N[0],!1),J=parseInt(B["number-columns-repeated"]||"1",10),G={t:"z",v:null},B.formula&&T.cellFormula!=!1&&(G.f=ods_to_csf_formula(unescapexml(B.formula))),(B.æ°æ®ç±»å||B["value-type"])=="string"&&(G.t="s",G.v=unescapexml(B["string-value"]||""),T.dense?(F[U]||(F[U]=[]),F[U][W]=G):F[encode_cell({r:U,c:W})]=G),W+=J-1;else if(N[1]!=="/"){++W,H="",O=0,V=[],J=1;var Se=re?U+re-1:U;if(W>K.e.c&&(K.e.c=W),W<K.s.c&&(K.s.c=W),U<K.s.r&&(K.s.r=U),Se>K.e.r&&(K.e.r=Se),B=parsexmltag(N[0],!1),he=[],ne={},G={t:B.æ°æ®ç±»å||B["value-type"],v:null},T.cellFormula)if(B.formula&&(B.formula=unescapexml(B.formula)),B["number-matrix-columns-spanned"]&&B["number-matrix-rows-spanned"]&&(Q=parseInt(B["number-matrix-rows-spanned"],10)||0,ie=parseInt(B["number-matrix-columns-spanned"],10)||0,se={s:{r:U,c:W},e:{r:U+Q-1,c:W+ie-1}},G.F=encode_range(se),te.push([se,G.F])),B.formula)G.f=ods_to_csf_formula(B.formula);else for(Te=0;Te<te.length;++Te)U>=te[Te][0].s.r&&U<=te[Te][0].e.r&&W>=te[Te][0].s.c&&W<=te[Te][0].e.c&&(G.F=te[Te][1]);switch((B["number-columns-spanned"]||B["number-rows-spanned"])&&(Q=parseInt(B["number-rows-spanned"],10)||0,ie=parseInt(B["number-columns-spanned"],10)||0,se={s:{r:U,c:W},e:{r:U+Q-1,c:W+ie-1}},oe.push(se)),B["number-columns-repeated"]&&(J=parseInt(B["number-columns-repeated"],10)),G.t){case"boolean":G.t="b",G.v=parsexmlbool(B["boolean-value"]);break;case"float":G.t="n",G.v=parseFloat(B.value);break;case"percentage":G.t="n",G.v=parseFloat(B.value);break;case"currency":G.t="n",G.v=parseFloat(B.value);break;case"date":G.t="d",G.v=parseDate(B["date-value"]),T.cellDates||(G.t="n",G.v=datenum(G.v)),G.z="m/d/yy";break;case"time":G.t="n",G.v=parse_isodur(B["time-value"])/86400,T.cellDates&&(G.t="d",G.v=numdate(G.v)),G.z="HH:MM:SS";break;case"number":G.t="n",G.v=parseFloat(B.æ°æ®æ°å¼);break;default:if(G.t==="string"||G.t==="text"||!G.t)G.t="s",B["string-value"]!=null&&(H=unescapexml(B["string-value"]),V=[]);else throw new Error("Unsupported value type "+G.t)}}else{if(fe=!1,G.t==="s"&&(G.v=H||"",V.length&&(G.R=V),fe=O==0),X.Target&&(G.l=X),he.length>0&&(G.c=he,he=[]),H&&T.cellText!==!1&&(G.w=H),fe&&(G.t="z",delete G.v),(!fe||T.sheetStubs)&&!(T.sheetRows&&T.sheetRows<=U))for(var ke=0;ke<re;++ke){if(J=parseInt(B["number-columns-repeated"]||"1",10),T.dense)for(F[U+ke]||(F[U+ke]=[]),F[U+ke][W]=ke==0?G:dup(G);--J>0;)F[U+ke][W+J]=dup(G);else for(F[encode_cell({r:U+ke,c:W})]=G;--J>0;)F[encode_cell({r:U+ke,c:W+J})]=dup(G);K.e.c<=W&&(K.e.c=W)}J=parseInt(B["number-columns-repeated"]||"1",10),W+=J-1,J=0,G={},H="",V=[]}X={};break;case"document":case"document-content":case"çµåè¡¨æ ¼ææ¡£":case"spreadsheet":case"主ä½":case"scripts":case"styles":case"font-face-decls":case"master-styles":if(N[1]==="/"){if((C=E.pop())[0]!==N[3])throw"Bad state: "+C}else N[0].charAt(N[0].length-2)!=="/"&&E.push([N[3],!0]);break;case"annotation":if(N[1]==="/"){if((C=E.pop())[0]!==N[3])throw"Bad state: "+C;ne.t=H,V.length&&(ne.R=V),ne.a=ue,he.push(ne)}else N[0].charAt(N[0].length-2)!=="/"&&E.push([N[3],!1]);ue="",ce=0,H="",O=0,V=[];break;case"creator":N[1]==="/"?ue=S.slice(ce,N.index):ce=N.index+N[0].length;break;case"meta":case"å æ°æ®":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if(N[1]==="/"){if((C=E.pop())[0]!==N[3])throw"Bad state: "+C}else N[0].charAt(N[0].length-2)!=="/"&&E.push([N[3],!1]);H="",O=0,V=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if(N[1]==="/"){if(ee[P.name]=R,(C=E.pop())[0]!==N[3])throw"Bad state: "+C}else N[0].charAt(N[0].length-2)!=="/"&&(R="",P=parsexmltag(N[0],!1),E.push([N[3],!0]));break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(E[E.length-1][0]){case"time-style":case"date-style":_=parsexmltag(N[0],!1),R+=number_formats_ods[N[3]][_.style==="long"?1:0];break}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(E[E.length-1][0]){case"time-style":case"date-style":_=parsexmltag(N[0],!1),R+=number_formats_ods[N[3]][_.style==="long"?1:0];break}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(N[0].slice(-2)==="/>")break;if(N[1]==="/")switch(E[E.length-1][0]){case"number-style":case"date-style":case"time-style":R+=S.slice(I,N.index);break}else I=N.index+N[0].length;break;case"named-range":_=parsexmltag(N[0],!1),de=ods_to_csf_3D(_["cell-range-address"]);var we={Name:_.name,Ref:de[0]+"!"+de[1]};ve&&(we.Sheet=D.length),Z.Names.push(we);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":case"çµåè¡¨æ ¼":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":case"ææ¬ä¸²":if(["master-styles"].indexOf(E[E.length-1][0])>-1)break;if(N[1]==="/"&&(!B||!B["string-value"])){var Le=parse_text_p(S.slice(O,N.index));H=(H.length>0?H+` 274`:"")+Le[0]}else parsexmltag(N[0],!1),O=N.index+N[0].length;break;case"s":break;case"database-range":if(N[1]==="/")break;try{de=ods_to_csf_3D(parsexmltag(N[0])["target-range-address"]),M[de[0]]["!autofilter"]={ref:de[1]}}catch{}break;case"date":break;case"object":break;case"title":case"æ é¢":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":break;case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":break;case"properties":break;case"property":break;case"a":if(N[1]!=="/"){if(X=parsexmltag(N[0],!1),!X.href)break;X.Target=unescapexml(X.href),delete X.href,X.Target.charAt(0)=="#"&&X.Target.indexOf(".")>-1?(de=ods_to_csf_3D(X.Target.slice(1)),X.Target="#"+de[0]+"!"+de[1]):X.Target.match(/^\.\.[\\\/]/)&&(X.Target=X.Target.slice(3))}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(N[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"表:":case"å:":break;default:if(T.WTF)throw new Error(N)}}var pe={Sheets:M,SheetNames:D,Workbook:Z};return T.bookSheets&&delete pe.Sheets,pe}function parse_ods(o,u){u=u||{},safegetzipfile(o,"META-INF/manifest.xml")&&parse_manifest(getzipdata(o,"META-INF/manifest.xml"),u);var T=getzipstr(o,"content.xml");if(!T)throw new Error("Missing content.xml in ODS / UOF file");var S=parse_content_xml(utf8read(T),u);return safegetzipfile(o,"meta.xml")&&(S.Props=parse_core_props(getzipdata(o,"meta.xml"))),S}function parse_fods(o,u){return parse_content_xml(o,u)}var write_styles_ods=function(){var o=["<office:master-styles>",'<style:master-page style:name="mp1" style:page-layout-name="mp1">',"<style:header/>",'<style:header-left style:display="false"/>',"<style:footer/>",'<style:footer-left style:display="false"/>',"</style:master-page>","</office:master-styles>"].join(""),u="<office:document-styles "+wxt_helper({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","office:version":"1.2"})+">"+o+"</office:document-styles>";return function(){return XML_HEADER+u}}(),write_content_ods=function(){var o=function(C){return escapexml(C).replace(/ +/g,function(_){return'<text:s text:c="'+_.length+'"/>'}).replace(/\t/g,"<text:tab/>").replace(/\n/g,"</text:p><text:p>").replace(/^ /,"<text:s/>").replace(/ $/,"<text:s/>")},u=` <table:table-cell /> 275`,T=` <table:covered-table-cell/> 276`,S=function(C,_,P){var R=[];R.push(' <table:table table:name="'+escapexml(_.SheetNames[P])+`" table:style-name="ta1"> 277`);var I=0,L=0,j=decode_range(C["!ref"]||"A1"),M=C["!merges"]||[],D=0,F=Array.isArray(C);if(C["!cols"])for(L=0;L<=j.e.c;++L)R.push(" <table:table-column"+(C["!cols"][L]?' table:style-name="co'+C["!cols"][L].ods+'"':"")+`></table:table-column> 278`);var N="",G=C["!rows"]||[];for(I=0;I<j.s.r;++I)N=G[I]?' table:style-name="ro'+G[I].ods+'"':"",R.push(" <table:table-row"+N+`></table:table-row> 279`);for(;I<=j.e.r;++I){for(N=G[I]?' table:style-name="ro'+G[I].ods+'"':"",R.push(" <table:table-row"+N+`> 280`),L=0;L<j.s.c;++L)R.push(u);for(;L<=j.e.c;++L){var B=!1,H={},O="";for(D=0;D!=M.length;++D)if(!(M[D].s.c>L)&&!(M[D].s.r>I)&&!(M[D].e.c<L)&&!(M[D].e.r<I)){(M[D].s.c!=L||M[D].s.r!=I)&&(B=!0),H["table:number-columns-spanned"]=M[D].e.c-M[D].s.c+1,H["table:number-rows-spanned"]=M[D].e.r-M[D].s.r+1;break}if(B){R.push(T);continue}var V=encode_cell({r:I,c:L}),U=F?(C[I]||[])[L]:C[V];if(U&&U.f&&(H["table:formula"]=escapexml(csf_to_ods_formula(U.f)),U.F&&U.F.slice(0,V.length)==V)){var W=decode_range(U.F);H["table:number-matrix-columns-spanned"]=W.e.c-W.s.c+1,H["table:number-matrix-rows-spanned"]=W.e.r-W.s.r+1}if(!U){R.push(u);continue}switch(U.t){case"b":O=U.v?"TRUE":"FALSE",H["office:value-type"]="boolean",H["office:boolean-value"]=U.v?"true":"false";break;case"n":O=U.w||String(U.v||0),H["office:value-type"]="float",H["office:value"]=U.v||0;break;case"s":case"str":O=U.v==null?"":U.v,H["office:value-type"]="string";break;case"d":O=U.w||parseDate(U.v).toISOString(),H["office:value-type"]="date",H["office:date-value"]=parseDate(U.v).toISOString(),H["table:style-name"]="ce1";break;default:R.push(u);continue}var K=o(O);if(U.l&&U.l.Target){var Y=U.l.Target;Y=Y.charAt(0)=="#"?"#"+csf_to_ods_3D(Y.slice(1)):Y,Y.charAt(0)!="#"&&!Y.match(/^\w+:/)&&(Y="../"+Y),K=writextag("text:a",K,{"xlink:href":Y.replace(/&/g,"&")})}R.push(" "+writextag("table:table-cell",writextag("text:p",K,{}),H)+` 281`)}R.push(` </table:table-row> 282`)}return R.push(` </table:table> 283`),R.join("")},E=function(C,_){C.push(` <office:automatic-styles> 284`),C.push(` <number:date-style style:name="N37" number:automatic-order="true"> 285`),C.push(` <number:month number:style="long"/> 286`),C.push(` <number:text>/</number:text> 287`),C.push(` <number:day number:style="long"/> 288`),C.push(` <number:text>/</number:text> 289`),C.push(` <number:year/> 290`),C.push(` </number:date-style> 291`);var P=0;_.SheetNames.map(function(I){return _.Sheets[I]}).forEach(function(I){if(I&&I["!cols"]){for(var L=0;L<I["!cols"].length;++L)if(I["!cols"][L]){var j=I["!cols"][L];if(j.width==null&&j.wpx==null&&j.wch==null)continue;process_col(j),j.ods=P;var M=I["!cols"][L].wpx+"px";C.push(' <style:style style:name="co'+P+`" style:family="table-column"> 292`),C.push(' <style:table-column-properties fo:break-before="auto" style:column-width="'+M+`"/> 293`),C.push(` </style:style> 294`),++P}}});var R=0;_.SheetNames.map(function(I){return _.Sheets[I]}).forEach(function(I){if(I&&I["!rows"]){for(var L=0;L<I["!rows"].length;++L)if(I["!rows"][L]){I["!rows"][L].ods=R;var j=I["!rows"][L].hpx+"px";C.push(' <style:style style:name="ro'+R+`" style:family="table-row"> 295`),C.push(' <style:table-row-properties fo:break-before="auto" style:row-height="'+j+`"/> 296`),C.push(` </style:style> 297`),++R}}}),C.push(` <style:style style:name="ta1" style:family="table" style:master-page-name="mp1"> 298`),C.push(` <style:table-properties table:display="true" style:writing-mode="lr-tb"/> 299`),C.push(` </style:style> 300`),C.push(` <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/> 301`),C.push(` </office:automatic-styles> 302`)};return function(_,P){var R=[XML_HEADER],I=wxt_helper({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"}),L=wxt_helper({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});P.bookType=="fods"?(R.push("<office:document"+I+L+`> 303`),R.push(write_meta_ods().replace(/office:document-meta/g,"office:meta"))):R.push("<office:document-content"+I+`> 304`),E(R,_),R.push(` <office:body> 305`),R.push(` <office:spreadsheet> 306`);for(var j=0;j!=_.SheetNames.length;++j)R.push(S(_.Sheets[_.SheetNames[j]],_,j));return R.push(` </office:spreadsheet> 307`),R.push(` </office:body> 308`),P.bookType=="fods"?R.push("</office:document>"):R.push("</office:document-content>"),R.join("")}}();function write_ods(o,u){if(u.bookType=="fods")return write_content_ods(o,u);var T=zip_new(),S="",E=[],C=[];return S="mimetype",zip_add_file(T,S,"application/vnd.oasis.opendocument.spreadsheet"),S="content.xml",zip_add_file(T,S,write_content_ods(o,u)),E.push([S,"text/xml"]),C.push([S,"ContentFile"]),S="styles.xml",zip_add_file(T,S,write_styles_ods(o,u)),E.push([S,"text/xml"]),C.push([S,"StylesFile"]),S="meta.xml",zip_add_file(T,S,XML_HEADER+write_meta_ods()),E.push([S,"text/xml"]),C.push([S,"MetadataFile"]),S="manifest.rdf",zip_add_file(T,S,write_rdf(C)),E.push([S,"application/rdf+xml"]),S="META-INF/manifest.xml",zip_add_file(T,S,write_manifest(E)),T}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function u8_to_dataview(o){return new DataView(o.buffer,o.byteOffset,o.byteLength)}function u8str(o){return typeof TextDecoder<"u"?new TextDecoder().decode(o):utf8read(a2s(o))}function stru8(o){return typeof TextEncoder<"u"?new TextEncoder().encode(o):s2a(utf8write(o))}function u8contains(o,u){e:for(var T=0;T<=o.length-u.length;++T){for(var S=0;S<u.length;++S)if(o[T+S]!=u[S])continue e;return!0}return!1}function u8concat(o){var u=o.reduce(function(E,C){return E+C.length},0),T=new Uint8Array(u),S=0;return o.forEach(function(E){T.set(E,S),S+=E.length}),T}function popcnt(o){return o-=o>>1&1431655765,o=(o&858993459)+(o>>2&858993459),(o+(o>>4)&252645135)*16843009>>>24}function readDecimal128LE(o,u){for(var T=(o[u+15]&127)<<7|o[u+14]>>1,S=o[u+14]&1,E=u+13;E>=u;--E)S=S*256+o[E];return(o[u+15]&128?-S:S)*Math.pow(10,T-6176)}function writeDecimal128LE(o,u,T){var S=Math.floor(T==0?0:Math.LOG10E*Math.log(Math.abs(T)))+6176-20,E=T/Math.pow(10,S-6176);o[u+15]|=S>>7,o[u+14]|=(S&127)<<1;for(var C=0;E>=1;++C,E/=256)o[u+C]=E&255;o[u+15]|=T>=0?0:128}function parse_varint49(o,u){var T=u?u[0]:0,S=o[T]&127;e:if(o[T++]>=128&&(S|=(o[T]&127)<<7,o[T++]<128||(S|=(o[T]&127)<<14,o[T++]<128)||(S|=(o[T]&127)<<21,o[T++]<128)||(S+=(o[T]&127)*Math.pow(2,28),++T,o[T++]<128)||(S+=(o[T]&127)*Math.pow(2,35),++T,o[T++]<128)||(S+=(o[T]&127)*Math.pow(2,42),++T,o[T++]<128)))break e;return u&&(u[0]=T),S}function write_varint49(o){var u=new Uint8Array(7);u[0]=o&127;var T=1;e:if(o>127){if(u[T-1]|=128,u[T]=o>>7&127,++T,o<=16383||(u[T-1]|=128,u[T]=o>>14&127,++T,o<=2097151)||(u[T-1]|=128,u[T]=o>>21&127,++T,o<=268435455)||(u[T-1]|=128,u[T]=o/256>>>21&127,++T,o<=34359738367)||(u[T-1]|=128,u[T]=o/65536>>>21&127,++T,o<=4398046511103))break e;u[T-1]|=128,u[T]=o/16777216>>>21&127,++T}return u.slice(0,T)}function varint_to_i32(o){var u=0,T=o[u]&127;e:if(o[u++]>=128){if(T|=(o[u]&127)<<7,o[u++]<128||(T|=(o[u]&127)<<14,o[u++]<128)||(T|=(o[u]&127)<<21,o[u++]<128))break e;T|=(o[u]&127)<<28}return T}function parse_shallow(o){for(var u=[],T=[0];T[0]<o.length;){var S=T[0],E=parse_varint49(o,T),C=E&7;E=Math.floor(E/8);var _=0,P;if(E==0)break;switch(C){case 0:{for(var R=T[0];o[T[0]++]>=128;);P=o.slice(R,T[0])}break;case 5:_=4,P=o.slice(T[0],T[0]+_),T[0]+=_;break;case 1:_=8,P=o.slice(T[0],T[0]+_),T[0]+=_;break;case 2:_=parse_varint49(o,T),P=o.slice(T[0],T[0]+_),T[0]+=_;break;case 3:case 4:default:throw new Error("PB Type ".concat(C," for Field ").concat(E," at offset ").concat(S))}var I={data:P,type:C};u[E]==null?u[E]=[I]:u[E].push(I)}return u}function write_shallow(o){var u=[];return o.forEach(function(T,S){T.forEach(function(E){E.data&&(u.push(write_varint49(S*8+E.type)),E.type==2&&u.push(write_varint49(E.data.length)),u.push(E.data))})}),u8concat(u)}function mappa(o,u){return(o==null?void 0:o.map(function(T){return u(T.data)}))||[]}function parse_iwa_file(o){for(var u,T=[],S=[0];S[0]<o.length;){var E=parse_varint49(o,S),C=parse_shallow(o.slice(S[0],S[0]+E));S[0]+=E;var _={id:varint_to_i32(C[1][0].data),messages:[]};C[2].forEach(function(P){var R=parse_shallow(P.data),I=varint_to_i32(R[3][0].data);_.messages.push({meta:R,data:o.slice(S[0],S[0]+I)}),S[0]+=I}),(u=C[3])!=null&&u[0]&&(_.merge=varint_to_i32(C[3][0].data)>>>0>0),T.push(_)}return T}function write_iwa_file(o){var u=[];return o.forEach(function(T){var S=[];S[1]=[{data:write_varint49(T.id),type:0}],S[2]=[],T.merge!=null&&(S[3]=[{data:write_varint49(+!!T.merge),type:0}]);var E=[];T.messages.forEach(function(_){E.push(_.data),_.meta[3]=[{type:0,data:write_varint49(_.data.length)}],S[2].push({data:write_shallow(_.meta),type:2})});var C=write_shallow(S);u.push(write_varint49(C.length)),u.push(C),E.forEach(function(_){return u.push(_)})}),u8concat(u)}function parse_snappy_chunk(o,u){if(o!=0)throw new Error("Unexpected Snappy chunk type ".concat(o));for(var T=[0],S=parse_varint49(u,T),E=[];T[0]<u.length;){var C=u[T[0]]&3;if(C==0){var _=u[T[0]++]>>2;if(_<60)++_;else{var P=_-59;_=u[T[0]],P>1&&(_|=u[T[0]+1]<<8),P>2&&(_|=u[T[0]+2]<<16),P>3&&(_|=u[T[0]+3]<<24),_>>>=0,_++,T[0]+=P}E.push(u.slice(T[0],T[0]+_)),T[0]+=_;continue}else{var R=0,I=0;if(C==1?(I=(u[T[0]]>>2&7)+4,R=(u[T[0]++]&224)<<3,R|=u[T[0]++]):(I=(u[T[0]++]>>2)+1,C==2?(R=u[T[0]]|u[T[0]+1]<<8,T[0]+=2):(R=(u[T[0]]|u[T[0]+1]<<8|u[T[0]+2]<<16|u[T[0]+3]<<24)>>>0,T[0]+=4)),E=[u8concat(E)],R==0)throw new Error("Invalid offset 0");if(R>E[0].length)throw new Error("Invalid offset beyond length");if(I>=R)for(E.push(E[0].slice(-R)),I-=R;I>=E[E.length-1].length;)E.push(E[E.length-1]),I-=E[E.length-1].length;E.push(E[0].slice(-R,-R+I))}}var L=u8concat(E);if(L.length!=S)throw new Error("Unexpected length: ".concat(L.length," != ").concat(S));return L}function decompress_iwa_file(o){for(var u=[],T=0;T<o.length;){var S=o[T++],E=o[T]|o[T+1]<<8|o[T+2]<<16;T+=3,u.push(parse_snappy_chunk(S,o.slice(T,T+E))),T+=E}if(T!==o.length)throw new Error("data is not a valid framed stream!");return u8concat(u)}function compress_iwa_file(o){for(var u=[],T=0;T<o.length;){var S=Math.min(o.length-T,268435455),E=new Uint8Array(4);u.push(E);var C=write_varint49(S),_=C.length;u.push(C),S<=60?(_++,u.push(new Uint8Array([S-1<<2]))):S<=256?(_+=2,u.push(new Uint8Array([240,S-1&255]))):S<=65536?(_+=3,u.push(new Uint8Array([244,S-1&255,S-1>>8&255]))):S<=16777216?(_+=4,u.push(new Uint8Array([248,S-1&255,S-1>>8&255,S-1>>16&255]))):S<=4294967296&&(_+=5,u.push(new Uint8Array([252,S-1&255,S-1>>8&255,S-1>>16&255,S-1>>>24&255]))),u.push(o.slice(T,T+S)),_+=S,E[0]=0,E[1]=_&255,E[2]=_>>8&255,E[3]=_>>16&255,T+=S}return u8concat(u)}function parse_old_storage(o,u,T,S){var E=u8_to_dataview(o),C=E.getUint32(4,!0),_=(S>1?12:8)+popcnt(C&(S>1?3470:398))*4,P=-1,R=-1,I=NaN,L=new Date(2001,0,1);C&512&&(P=E.getUint32(_,!0),_+=4),_+=popcnt(C&(S>1?12288:4096))*4,C&16&&(R=E.getUint32(_,!0),_+=4),C&32&&(I=E.getFloat64(_,!0),_+=8),C&64&&(L.setTime(L.getTime()+E.getFloat64(_,!0)*1e3),_+=8);var j;switch(o[2]){case 0:break;case 2:j={t:"n",v:I};break;case 3:j={t:"s",v:u[R]};break;case 5:j={t:"d",v:L};break;case 6:j={t:"b",v:I>0};break;case 7:j={t:"n",v:I/86400};break;case 8:j={t:"e",v:0};break;case 9:if(P>-1)j={t:"s",v:T[P]};else if(R>-1)j={t:"s",v:u[R]};else if(!isNaN(I))j={t:"n",v:I};else throw new Error("Unsupported cell type ".concat(o.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(o.slice(0,4)))}return j}function parse_new_storage(o,u,T){var S=u8_to_dataview(o),E=S.getUint32(8,!0),C=12,_=-1,P=-1,R=NaN,I=NaN,L=new Date(2001,0,1);E&1&&(R=readDecimal128LE(o,C),C+=16),E&2&&(I=S.getFloat64(C,!0),C+=8),E&4&&(L.setTime(L.getTime()+S.getFloat64(C,!0)*1e3),C+=8),E&8&&(P=S.getUint32(C,!0),C+=4),E&16&&(_=S.getUint32(C,!0),C+=4);var j;switch(o[1]){case 0:break;case 2:j={t:"n",v:R};break;case 3:j={t:"s",v:u[P]};break;case 5:j={t:"d",v:L};break;case 6:j={t:"b",v:I>0};break;case 7:j={t:"n",v:I/86400};break;case 8:j={t:"e",v:0};break;case 9:if(_>-1)j={t:"s",v:T[_]};else throw new Error("Unsupported cell type ".concat(o[1]," : ").concat(E&31," : ").concat(o.slice(0,4)));break;case 10:j={t:"n",v:R};break;default:throw new Error("Unsupported cell type ".concat(o[1]," : ").concat(E&31," : ").concat(o.slice(0,4)))}return j}function write_new_storage(o,u){var T=new Uint8Array(32),S=u8_to_dataview(T),E=12,C=0;switch(T[0]=5,o.t){case"n":T[1]=2,writeDecimal128LE(T,E,o.v),C|=1,E+=16;break;case"b":T[1]=6,S.setFloat64(E,o.v?1:0,!0),C|=2,E+=8;break;case"s":if(u.indexOf(o.v)==-1)throw new Error("Value ".concat(o.v," missing from SST!"));T[1]=3,S.setUint32(E,u.indexOf(o.v),!0),C|=8,E+=4;break;default:throw"unsupported cell type "+o.t}return S.setUint32(8,C,!0),T.slice(0,E)}function write_old_storage(o,u){var T=new Uint8Array(32),S=u8_to_dataview(T),E=12,C=0;switch(T[0]=3,o.t){case"n":T[2]=2,S.setFloat64(E,o.v,!0),C|=32,E+=8;break;case"b":T[2]=6,S.setFloat64(E,o.v?1:0,!0),C|=32,E+=8;break;case"s":if(u.indexOf(o.v)==-1)throw new Error("Value ".concat(o.v," missing from SST!"));T[2]=3,S.setUint32(E,u.indexOf(o.v),!0),C|=16,E+=4;break;default:throw"unsupported cell type "+o.t}return S.setUint32(4,C,!0),T.slice(0,E)}function parse_cell_storage(o,u,T){switch(o[0]){case 0:case 1:case 2:case 3:return parse_old_storage(o,u,T,o[0]);case 5:return parse_new_storage(o,u,T);default:throw new Error("Unsupported payload version ".concat(o[0]))}}function parse_TSP_Reference(o){var u=parse_shallow(o);return parse_varint49(u[1][0].data)}function parse_TST_TableDataList(o,u){var T=parse_shallow(u.data),S=varint_to_i32(T[1][0].data),E=T[3],C=[];return(E||[]).forEach(function(_){var P=parse_shallow(_.data),R=varint_to_i32(P[1][0].data)>>>0;switch(S){case 1:C[R]=u8str(P[3][0].data);break;case 8:{var I=o[parse_TSP_Reference(P[9][0].data)][0],L=parse_shallow(I.data),j=o[parse_TSP_Reference(L[1][0].data)][0],M=varint_to_i32(j.meta[1][0].data);if(M!=2001)throw new Error("2000 unexpected reference to ".concat(M));var D=parse_shallow(j.data);C[R]=D[3].map(function(F){return u8str(F.data)}).join("")}break}}),C}function parse_TST_TileRowInfo(o,u){var T,S,E,C,_,P,R,I,L,j,M,D,F,N,G=parse_shallow(o),B=varint_to_i32(G[1][0].data)>>>0,H=varint_to_i32(G[2][0].data)>>>0,O=((S=(T=G[8])==null?void 0:T[0])==null?void 0:S.data)&&varint_to_i32(G[8][0].data)>0||!1,V,U;if((C=(E=G[7])==null?void 0:E[0])!=null&&C.data&&u!=0)V=(P=(_=G[7])==null?void 0:_[0])==null?void 0:P.data,U=(I=(R=G[6])==null?void 0:R[0])==null?void 0:I.data;else if((j=(L=G[4])==null?void 0:L[0])!=null&&j.data&&u!=1)V=(D=(M=G[4])==null?void 0:M[0])==null?void 0:D.data,U=(N=(F=G[3])==null?void 0:F[0])==null?void 0:N.data;else throw"NUMBERS Tile missing ".concat(u," cell storage");for(var W=O?4:1,K=u8_to_dataview(V),Y=[],ee=0;ee<V.length/2;++ee){var oe=K.getUint16(ee*2,!0);oe<65535&&Y.push([ee,oe])}if(Y.length!=H)throw"Expected ".concat(H," cells, found ").concat(Y.length);var se=[];for(ee=0;ee<Y.length-1;++ee)se[Y[ee][0]]=U.subarray(Y[ee][1]*W,Y[ee+1][1]*W);return Y.length>=1&&(se[Y[Y.length-1][0]]=U.subarray(Y[Y.length-1][1]*W)),{R:B,cells:se}}function parse_TST_Tile(o,u){var T,S=parse_shallow(u.data),E=(T=S==null?void 0:S[7])!=null&&T[0]?varint_to_i32(S[7][0].data)>>>0>0?1:0:-1,C=mappa(S[5],function(_){return parse_TST_TileRowInfo(_,E)});return{nrows:varint_to_i32(S[4][0].data)>>>0,data:C.reduce(function(_,P){return _[P.R]||(_[P.R]=[]),P.cells.forEach(function(R,I){if(_[P.R][I])throw new Error("Duplicate cell r=".concat(P.R," c=").concat(I));_[P.R][I]=R}),_},[])}}function parse_TST_TableModelArchive(o,u,T){var S,E=parse_shallow(u.data),C={s:{r:0,c:0},e:{r:0,c:0}};if(C.e.r=(varint_to_i32(E[6][0].data)>>>0)-1,C.e.r<0)throw new Error("Invalid row varint ".concat(E[6][0].data));if(C.e.c=(varint_to_i32(E[7][0].data)>>>0)-1,C.e.c<0)throw new Error("Invalid col varint ".concat(E[7][0].data));T["!ref"]=encode_range(C);var _=parse_shallow(E[4][0].data),P=parse_TST_TableDataList(o,o[parse_TSP_Reference(_[4][0].data)][0]),R=(S=_[17])!=null&&S[0]?parse_TST_TableDataList(o,o[parse_TSP_Reference(_[17][0].data)][0]):[],I=parse_shallow(_[3][0].data),L=0;I[1].forEach(function(j){var M=parse_shallow(j.data),D=o[parse_TSP_Reference(M[2][0].data)][0],F=varint_to_i32(D.meta[1][0].data);if(F!=6002)throw new Error("6001 unexpected reference to ".concat(F));var N=parse_TST_Tile(o,D);N.data.forEach(function(G,B){G.forEach(function(H,O){var V=encode_cell({r:L+B,c:O}),U=parse_cell_storage(H,P,R);U&&(T[V]=U)})}),L+=N.nrows})}function parse_TST_TableInfoArchive(o,u){var T=parse_shallow(u.data),S={"!ref":"A1"},E=o[parse_TSP_Reference(T[2][0].data)],C=varint_to_i32(E[0].meta[1][0].data);if(C!=6001)throw new Error("6000 unexpected reference to ".concat(C));return parse_TST_TableModelArchive(o,E[0],S),S}function parse_TN_SheetArchive(o,u){var T,S=parse_shallow(u.data),E={name:(T=S[1])!=null&&T[0]?u8str(S[1][0].data):"",sheets:[]},C=mappa(S[2],parse_TSP_Reference);
308return C.forEach(function(_){o[_].forEach(function(P){var R=varint_to_i32(P.meta[1][0].data);R==6e3&&E.sheets.push(parse_TST_TableInfoArchive(o,P))})}),E}function parse_TN_DocumentArchive(o,u){var T=book_new(),S=parse_shallow(u.data),E=mappa(S[1],parse_TSP_Reference);if(E.forEach(function(C){o[C].forEach(function(_){var P=varint_to_i32(_.meta[1][0].data);if(P==2){var R=parse_TN_SheetArchive(o,_);R.sheets.forEach(function(I,L){book_append_sheet(T,I,L==0?R.name:R.name+"_"+L,!0)})}})}),T.SheetNames.length==0)throw new Error("Empty NUMBERS file");return T}function parse_numbers_iwa(o){var u,T,S,E,C={},_=[];if(o.FullPaths.forEach(function(R){if(R.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),o.FileIndex.forEach(function(R){if(R.name.match(/\.iwa$/)){var I;try{I=decompress_iwa_file(R.content)}catch(j){return console.log("?? "+R.content.length+" "+(j.message||j))}var L;try{L=parse_iwa_file(I)}catch(j){return console.log("## "+(j.message||j))}L.forEach(function(j){C[j.id]=j.messages,_.push(j.id)})}}),!_.length)throw new Error("File has no messages");var P=((E=(S=(T=(u=C==null?void 0:C[1])==null?void 0:u[0])==null?void 0:T.meta)==null?void 0:S[1])==null?void 0:E[0].data)&&varint_to_i32(C[1][0].meta[1][0].data)==1&&C[1][0];if(P||_.forEach(function(R){C[R].forEach(function(I){var L=varint_to_i32(I.meta[1][0].data)>>>0;if(L==1)if(!P)P=I;else throw new Error("Document has multiple roots")})}),!P)throw new Error("Cannot find Document root");return parse_TN_DocumentArchive(C,P)}function write_tile_row(o,u,T){var S,E,C,_;if(!((S=o[6])!=null&&S[0])||!((E=o[7])!=null&&E[0]))throw"Mutation only works on post-BNC storages!";var P=((_=(C=o[8])==null?void 0:C[0])==null?void 0:_.data)&&varint_to_i32(o[8][0].data)>0||!1;if(P)throw"Math only works with normal offsets";for(var R=0,I=u8_to_dataview(o[7][0].data),L=0,j=[],M=u8_to_dataview(o[4][0].data),D=0,F=[],N=0;N<u.length;++N){if(u[N]==null){I.setUint16(N*2,65535,!0),M.setUint16(N*2,65535);continue}I.setUint16(N*2,L,!0),M.setUint16(N*2,D,!0);var G,B;switch(typeof u[N]){case"string":G=write_new_storage({t:"s",v:u[N]},T),B=write_old_storage({t:"s",v:u[N]},T);break;case"number":G=write_new_storage({t:"n",v:u[N]},T),B=write_old_storage({t:"n",v:u[N]},T);break;case"boolean":G=write_new_storage({t:"b",v:u[N]},T),B=write_old_storage({t:"b",v:u[N]},T);break;default:throw new Error("Unsupported value "+u[N])}j.push(G),L+=G.length,F.push(B),D+=B.length,++R}for(o[2][0].data=write_varint49(R);N<o[7][0].data.length/2;++N)I.setUint16(N*2,65535,!0),M.setUint16(N*2,65535,!0);return o[6][0].data=u8concat(j),o[3][0].data=u8concat(F),R}function write_numbers_iwa(o,u){if(!u||!u.numbers)throw new Error("Mu
308st pass a `numbers` option -- check the README");var T=o.Sheets[o.SheetNames[0]];o.SheetNames.length>1&&console.error("The Numbers writer currently writes only the first table");var S=decode_range(T["!ref"]);S.s.r=S.s.c=0;var E=!1;S.e.c>9&&(E=!0,S.e.c=9),S.e.r>49&&(E=!0,S.e.r=49),E&&console.error("The Numbers writer is currently limited to ".concat(encode_range(S)));var C=sheet_to_json(T,{range:S,header:1}),_=["~Sh33tJ5~"];C.forEach(function(ue){return ue.forEach(function(ce){typeof ce=="string"&&_.push(ce)})});var P={},R=[],I=CFB.read(u.numbers,{type:"base64"});I.FileIndex.map(function(ue,ce){return[ue,I.FullPaths[ce]]}).forEach(function(ue){var ce=ue[0],fe=ue[1];if(ce.type==2&&ce.name.match(/\.iwa/)){var ve=ce.content,Te=decompress_iwa_file(ve),Se=parse_iwa_file(Te);Se.forEach(function(ke){R.push(ke.id),P[ke.id]={deps:[],location:fe,type:varint_to_i32(ke.messages[0].meta[1][0].data)}})}}),R.sort(function(ue,ce){return ue-ce});var L=R.filter(function(ue){return ue>1}).map(function(ue){return[ue,write_varint49(ue)]});I.FileIndex.map(function(ue,ce){return[ue,I.FullPaths[ce]]}).forEach(function(ue){var ce=ue[0];if(ue[1],!!ce.name.match(/\.iwa/)){var fe=parse_iwa_file(decompress_iwa_file(ce.content));fe.forEach(function(ve){ve.messages.forEach(function(Te){L.forEach(function(Se){ve.messages.some(function(ke){return varint_to_i32(ke.meta[1][0].data)!=11006&&u8contains(ke.data,Se[1])})&&P[Se[0]].deps.push(ve.id)})})})}});for(var j=CFB.find(I,P[1].location),M=parse_iwa_file(decompress_iwa_file(j.content)),D,F=0;F<M.length;++F){var N=M[F];N.id==1&&(D=N)}var G=parse_TSP_Reference(parse_shallow(D.messages[0].data)[1][0].data);for(j=CFB.find(I,P[G].location),M=parse_iwa_file(decompress_iwa_file(j.content)),F=0;F<M.length;++F)N=M[F],N.id==G&&(D=N);for(G=parse_TSP_Reference(parse_shallow(D.messages[0].data)[2][0].data),j=CFB.find(I,P[G].location),M=parse_iwa_file(decompress_iwa_file(j.content)),F=0;F<M.length;++F)N=M[F],N.id==G&&(D=N);for(G=parse_TSP_Reference(parse_shallow(D.messages[0].data)[2][0].data),j=CFB.find(I,P[G].location),M=parse_iwa_file(decompress_iwa_file(j.content)),F=0;F<M.length;++F)N=M[F],N.id==G&&(D=N);var B=parse_shallow(D.messages[0].data);{B[6][0].data=write_varint49(S.e.r+1),B[7][0].data=write_varint49(S.e.c+1);var H=parse_TSP_Reference(B[46][0].data),O=CFB.find(I,P[H].location),V=parse_iwa_file(decompress_iwa_file(O.content));{for(var U=0;U<V.length&&V[U].id!=H;++U);if(V[U].id!=H)throw"Bad ColumnRowUIDMapArchive";var W=parse_shallow(V[U].messages[0].data);W[1]=[],W[2]=[],W[3]=[];for(var K=0;K<=S.e.c;++K){var Y=[];Y[1]=Y[2]=[{type:0,data:write_varint49(K+420690)}],W[1].push({type:2,data:write_shallow(Y)}),W[2].push({type:0,data:write_varint49(K)}),W[3].push({type:0,data:write_varint49(K)})}W[4]=[],W[5]=[],W[6]=[];for(var ee=0;ee<=S.e.r;++ee)Y=[],Y[1]=Y[2]=[{type:0,data:write_varint49(ee+726270)}],W[4].push({type:2,data:write_shallow(Y)}),W[5].push({type:0,data:write_varint49(ee)}),W[6].push({type:0,data:write_varint49(ee)});V[U].messages[0].data=write_shallow(W)}O.content=compress_iwa_file(write_iwa_file(V)),O.size=O.content.length,delete B[46];var oe=parse_shallow(B[4][0].data);{oe[7][0].data=write_varint49(S.e.r+1);var se=parse_shallow(oe[1][0].data),Q=parse_TSP_Reference(se[2][0].data);O=CFB.find(I,P[Q].location),V=parse_iwa_file(decompress_iwa_file(O.content));{if(V[0].id!=Q)throw"Bad HeaderStorageBucket";var ie=parse_shallow(V[0].messages[0].data);for(ee=0;ee<C.length;++ee){var ae=parse_shallow(ie[2][0].data);ae[1][0].data=write_varint49(ee),ae[4][0].data=write_varint49(C[ee].length),ie[2][ee]={type:ie[2][0].type,data:write_shallow(ae)}}V[0].messages[0].data=write_shallow(ie)}O.content=compress_iwa_file(write_iwa_file(V)),O.size=O.content.length;var re=parse_TSP_Reference(oe[2][0].data);O=CFB.find(I,P[re].location),V=parse_iwa_file(decompress_iwa_file(O.content));{if(V[0].id!=re)throw"Bad HeaderStorageBucket";for(ie=parse_shallow(V[0].messages[0].data),K=0;K<=S.e.c;++K)ae=parse_shallow(ie[2][0].data),ae[1][0].data=write_varint49(K),ae[4][0].data=write_varint49(S.e.r+1),ie[2][K]={type:ie[2][0].type,data:write_shallow(ae)};V[0].messages[0].data=write_shallow(ie)}O.content=compress_iwa_file(write_iwa_file(V)),O.size=O.content.length;var J=parse_TSP_Reference(oe[4][0].data);(function(){for(var ue=CFB.find(I,P[J].location),ce=parse_iwa_file(decompress_iwa_file(ue.content)),fe,ve=0;ve<ce.length;++ve){var Te=ce[ve];Te.id==J&&(fe=Te)}var Se=parse_shallow(fe.messages[0].data);{Se[3]=[];var ke=[];_.forEach(function(pe,Me){ke[1]=[{type:0,data:write_varint49(Me)}],ke[2]=[{type:0,data:write_varint49(1)}],ke[3]=[{type:2,data:stru8(pe)}],Se[3].push({type:2,data:write_shallow(ke)})})}fe.messages[0].data=write_shallow(Se);var we=write_iwa_file(ce),Le=compress_iwa_file(we);ue.content=Le,ue.size=ue.content.length})();var te=parse_shallow(oe[3][0].data);{var Z=te[1][0];delete te[2];var X=parse_shallow(Z.data);{var de=parse_TSP_Reference(X[2][0].data);(function(){for(var ue=CFB.find(I,P[de].location),ce=parse_iwa_file(decompress_iwa_file(ue.content)),fe,ve=0;ve<ce.length;++ve){var Te=ce[ve];Te.id==de&&(fe=Te)}var Se=parse_shallow(fe.messages[0].data);{delete Se[6],delete te[7];var ke=new Uint8Array(Se[5][0].data);Se[5]=[];for(var we=0,Le=0;Le<=S.e.r;++Le){var pe=parse_shallow(ke);we+=write_tile_row(pe,C[Le],_),pe[1][0].data=write_varint49(Le),Se[5].push({data:write_shallow(pe),type:2})}Se[1]=[{type:0,data:write_varint49(S.e.c+1)}],Se[2]=[{type:0,data:write_varint49(S.e.r+1)}],Se[3]=[{type:0,data:write_varint49(we)}],Se[4]=[{type:0,data:write_varint49(S.e.r+1)}]}fe.messages[0].data=write_shallow(Se);var Me=write_iwa_file(ce),Pe=compress_iwa_file(Me);ue.content=Pe,ue.size=ue.content.length})()}Z.data=write_shallow(X)}oe[3][0].data=write_shallow(te)}B[4][0].data=write_shallow(oe)}D.messages[0].data=write_shallow(B);var he=write_iwa_file(M),ne=compress_iwa_file(he);return j.content=ne,j.size=j.content.length,I}function fix_opts_func(o){return function(T){for(var S=0;S!=o.length;++S){var E=o[S];T[E[0]]===void 0&&(T[E[0]]=E[1]),E[2]==="n"&&(T[E[0]]=Number(T[E[0]]))}}}function fix_read_opts(o){fix_opts_func([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0
308],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]])(o)}function fix_write_opts(o){fix_opts_func([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]])(o)}function get_sheet_type(o){return RELS.WS.indexOf(o)>-1?"sheet":o==RELS.CS?"chart":o==RELS.DS?"dialog":o==RELS.MS?"macro":o&&o.length?o:"sheet"}function safe_parse_wbrels(o,u){if(!o)return 0;try{o=u.map(function(S){return S.id||(S.id=S.strRelID),[S.name,o["!id"][S.id].Target,get_sheet_type(o["!id"][S.id].Type)]})}catch{return null}return!o||o.length===0?null:o}function safe_parse_sheet(o,u,T,S,E,C,_,P,R,I,L,j){try{C[S]=parse_rels(getzipstr(o,T,!0),u);var M=getzipdata(o,u),D;switch(P){case"sheet":D=parse_ws(M,u,E,R,C[S],I,L,j);break;case"chart":if(D=parse_cs(M,u,E,R,C[S],I,L,j),!D||!D["!drawel"])break;var F=resolve_path(D["!drawel"].Target,u),N=get_rels_path(F),G=parse_drawing(getzipstr(o,F,!0),parse_rels(getzipstr(o,N,!0),F)),B=resolve_path(G,F),H=get_rels_path(B);D=parse_chart(getzipstr(o,B,!0),B,R,parse_rels(getzipstr(o,H,!0),B),I,D);break;case"macro":D=parse_ms(M,u,E,R,C[S],I,L,j);break;case"dialog":D=parse_ds(M,u,E,R,C[S],I,L,j);break;default:throw new Error("Unrecognized sheet type "+P)}_[S]=D;var O=[];C&&C[S]&&keys(C[S]).forEach(function(V){var U="";if(C[S][V].Type==RELS.CMNT){U=resolve_path(C[S][V].Target,u);var W=parse_cmnt(getzipdata(o,U,!0),U,R);if(!W||!W.length)return;sheet_insert_comments(D,W,!1)}C[S][V].Type==RELS.TCMNT&&(U=resolve_path(C[S][V].Target,u),O=O.concat(parse_tcmnt_xml(getzipdata(o,U,!0),R)))}),O&&O.length&&sheet_insert_comments(D,O,!0,R.people||[])}catch(V){if(R.WTF)throw V}}function strip_front_slash(o){return o.charAt(0)=="/"?o.slice(1):o}function parse_zip(o,u){if(make_ssf(),u=u||{},fix_read_opts(u),safegetzipfile(o,"META-INF/manifest.xml")||safegetzipfile(o,"objectdata.xml"))return parse_ods(o,u);if(safegetzipfile(o,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof parse_numbers_iwa<"u"){if(o.FileIndex)return parse_numbers_iwa(o);var T=CFB.utils.cfb_new();return zipentries(o).forEach(function(ae){zip_add_file(T,ae,getzipbin(o,ae))}),parse_numbers_iwa(T)}throw new Error("Unsupported NUMBERS file")}if(!safegetzipfile(o,"[Content_Types].xml"))throw safegetzipfile(o,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):safegetzipfile(o,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var S=zipentries(o),E=parse_ct(getzipstr(o,"[Content_Types].xml")),C=!1,_,P;
vendor: 24,211 bytes, lines 308-310
308if(E.workbooks.length===0&&(P="xl/workbook.xml",getzipdata(o,P,!0)&&E.workbooks.push(P)),E.workbooks.length===0){if(P="xl/workbook.bin",!getzipdata(o,P,!0))throw new Error("Could not find workbook");E.workbooks.push(P),C=!0}E.workbooks[0].slice(-3)=="bin"&&(C=!0);var R={},I={};if(!u.bookSheets&&!u.bookProps){if(strs=[],E.sst)try{strs=parse_sst(getzipdata(o,strip_front_slash(E.sst)),E.sst,u)}catch(ae){if(u.WTF)throw ae}u.cellStyles&&E.themes.length&&(R=parse_theme(getzipstr(o,E.themes[0].replace(/^\//,""),!0)||"",E.themes[0],u)),E.style&&(I=parse_sty(getzipdata(o,strip_front_slash(E.style)),E.style,R,u))}E.links.map(function(ae){try{var re=parse_rels(getzipstr(o,get_rels_path(strip_front_slash(ae))),ae);return parse_xlink(getzipdata(o,strip_front_slash(ae)),re,ae,u)}catch{}});var L=parse_wb(getzipdata(o,strip_front_slash(E.workbooks[0])),E.workbooks[0],u),j={},M="";E.coreprops.length&&(M=getzipdata(o,strip_front_slash(E.coreprops[0]),!0),M&&(j=parse_core_props(M)),E.extprops.length!==0&&(M=getzipdata(o,strip_front_slash(E.extprops[0]),!0),M&&parse_ext_props(M,j,u)));var D={};(!u.bookSheets||u.bookProps)&&E.custprops.length!==0&&(M=getzipstr(o,strip_front_slash(E.custprops[0]),!0),M&&(D=parse_cust_props(M,u)));var F={};if((u.bookSheets||u.bookProps)&&(L.Sheets?_=L.Sheets.map(function(re){return re.name}):j.Worksheets&&j.SheetNames.length>0&&(_=j.SheetNames),u.bookProps&&(F.Props=j,F.Custprops=D),u.bookSheets&&typeof _<"u"&&(F.SheetNames=_),u.bookSheets?F.SheetNames:u.bookProps))return F;_={};var N={};u.bookDeps&&E.calcchain&&(N=parse_cc(getzipdata(o,strip_front_slash(E.calcchain)),E.calcchain));var G=0,B={},H,O;{var V=L.Sheets;j.Worksheets=V.length,j.SheetNames=[];for(var U=0;U!=V.length;++U)j.SheetNames[U]=V[U].name}var W=C?"bin":"xml",K=E.workbooks[0].lastIndexOf("/"),Y=(E.workbooks[0].slice(0,K+1)+"_rels/"+E.workbooks[0].slice(K+1)+".rels").replace(/^\//,"");safegetzipfile(o,Y)||(Y="xl/_rels/workbook."+W+".rels");var ee=parse_rels(getzipstr(o,Y,!0),Y.replace(/_rels.*/,"s5s"));(E.metadata||[]).length>=1&&(u.xlmeta=parse_xlmeta(getzipdata(o,strip_front_slash(E.metadata[0])),E.metadata[0],u)),(E.people||[]).length>=1&&(u.people=parse_people_xml(getzipdata(o,strip_front_slash(E.people[0])),u)),ee&&(ee=safe_parse_wbrels(ee,L.Sheets));var oe=getzipdata(o,"xl/worksheets/sheet.xml",!0)?1:0;e:for(G=0;G!=j.Worksheets;++G){var se="sheet";if(ee&&ee[G]?(H="xl/"+ee[G][1].replace(/[\/]?xl\//,""),safegetzipfile(o,H)||(H=ee[G][1]),safegetzipfile(o,H)||(H=Y.replace(/_rels\/.*$/,"")+ee[G][1]),se=ee[G][2]):(H="xl/worksheets/sheet"+(G+1-oe)+"."+W,H=H.replace(/sheet0\./,"sheet.")),O=H.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),u&&u.sheets!=null)switch(typeof u.sheets){case"number":if(G!=u.sheets)continue e;break;case"string":if(j.SheetNames[G].toLowerCase()!=u.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(u.sheets)){for(var Q=!1,ie=0;ie!=u.sheets.length;++ie)typeof u.sheets[ie]=="number"&&u.sheets[ie]==G&&(Q=1),typeof u.sheets[ie]=="string"&&u.sheets[ie].toLowerCase()==j.SheetNames[G].toLowerCase()&&(Q=1);if(!Q)continue e}}safe_parse_sheet(o,H,O,j.SheetNames[G],G,B,_,se,u,L,R,I)}return F={Directory:E,Workbook:L,Props:j,Custprops:D,Deps:N,Sheets:_,SheetNames:j.SheetNames,Strings:strs,Styles:I,Themes:R,SSF:dup(table_fmt)},u&&u.bookFiles&&(o.files?(F.keys=S,F.files=o.files):(F.keys=[],F.files={},o.FullPaths.forEach(function(ae,re){ae=ae.replace(/^Root Entry[\/]/,""),F.keys.push(ae),F.files[ae]=o.FileIndex[re]}))),u&&u.bookVBA&&(E.vba.length>0?F.vbaraw=getzipdata(o,strip_front_slash(E.vba[0]),!0):E.defaults&&E.defaults.bin===CT_VBA&&(F.vbaraw=getzipdata(o,"xl/vbaProject.bin",!0))),F}function parse_xlsxcfb(o,u){var T=u||{},S="Workbook",E=CFB.find(o,S);try{if(S="/!DataSpaces/Version",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);if(parse_DataSpaceVersionInfo(E.content),S="/!DataSpaces/DataSpaceMap",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);var C=parse_DataSpaceMap(E.content);if(C.length!==1||C[0].comps.length!==1||C[0].comps[0].t!==0||C[0].name!=="StrongEncryptionDataSpace"||C[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+S);if(S="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);var _=parse_DataSpaceDefinition(E.content);if(_.length!=1||_[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+S);if(S="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);parse_Primary(E.content)}catch{}if(S="/EncryptionInfo",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);var P=parse_EncryptionInfo(E.content);if(S="/EncryptedPackage",E=CFB.find(o,S),!E||!E.content)throw new Error("ECMA-376 Encrypted file missing "+S);if(P[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(P[1],E.content,T.password||"",T);if(P[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(P[1],E.content,T.password||"",T);throw new Error("File is password-protected")}function write_zip(o,u){return u.bookType=="ods"?write_ods(o,u):u.bookType=="numbers"?write_numbers_iwa(o,u):u.bookType=="xlsb"?write_zip_xlsxb(o,u):write_zip_xlsx(o,u)}function write_zip_xlsxb(o,u){_shapeid=1024,o&&!o.SSF&&(o.SSF=dup(table_fmt)),o&&o.SSF&&(make_ssf(),SSF_load_table(o.SSF),u.revssf=evert_num(o.SSF),u.revssf[o.SSF[65535]]=0,u.ssf=o.SSF),u.rels={},u.wbrels={},u.Strings=[],u.Strings.Count=0,u.Strings.Unique=0,browser_has_Map?u.revStrings=new Map:(u.revStrings={},u.revStrings.foo=[],delete u.revStrings.foo);var T=u.bookType=="xlsb"?"bin":"xml",S=VBAFMTS.indexOf(u.bookType)>-1,E=new_ct();fix_write_opts(u=u||{});var C=zip_new(),_="",P=0;if(u.cellXfs=[],get_cell_style(u.cellXfs,{},{revssf:{General:0}}),o.Props||(o.Props={}),_="docProps/core.xml",zip_add_file(C,_,write_core_props(o.Props,u)),E.coreprops.push(_),add_rels(u.rels,2,_,RELS.CORE_PROPS),_="docProps/app.xml",!(o.Props&&o.Props.SheetNames))if(!o.Workbook||!o.Workbook.Sheets)o.Props.SheetNames=o.SheetNames;else{for(var R=[],I=0;I<o.SheetNames.length;++I)(o.Workbook.Sheets[I]||{}).Hidden!=2&&R.push(o.SheetNames[I]);o.Props.SheetNames=R}for(o.Props.Worksheets=o.Props.SheetNames.length,zip_add_file(C,_,write_ext_props(o.Props)),E.extprops.push(_),add_rels(u.rels,3,_,RELS.EXT_PROPS),o.Custprops!==o.Props&&keys(o.Custprops||{}).length>0&&(_="docProps/custom.xml",zip_add_file(C,_,write_cust_props(o.Custprops)),E.custprops.push(_),add_rels(u.rels,4,_,RELS.CUST_PROPS)),P=1;P<=o.SheetNames.length;++P){var L={"!id":{}},j=o.Sheets[o.SheetNames[P-1]],M=(j||{})["!type"]||"sheet";switch(M){case"chart":default:_="xl/worksheets/sheet"+P+"."+T,zip_add_file(C,_,write_ws(P-1,_,u,o,L)),E.sheets.push(_),add_rels(u.wbrels,-1,"worksheets/sheet"+P+"."+T,RELS.WS[0])}if(j){var D=j["!comments"],F=!1,N="";D&&D.length>0&&(N="xl/comments"+P+"."+T,zip_add_file(C,N,write_cmnt(D,N)),E.comments.push(N),add_rels(L,-1,"../comments"+P+"."+T,RELS.CMNT),F=!0),j["!legacy"]&&F&&zip_add_file(C,"xl/drawings/vmlDrawing"+P+".vml",write_comments_vml(P,j["!comments"])),delete j["!comments"],delete j["!legacy"]}L["!id"].rId1&&zip_add_file(C,get_rels_path(_),write_rels(L))}return u.Strings!=null&&u.Strings.length>0&&(_="xl/sharedStrings."+T,zip_add_file(C,_,write_sst(u.Strings,_,u)),E.strs.push(_),add_rels(u.wbrels,-1,"sharedStrings."+T,RELS.SST)),_="xl/workbook."+T,zip_add_file(C,_,write_wb(o,_)),E.workbooks.push(_),add_rels(u.rels,1,_,RELS.WB),_="xl/theme/theme1.xml",zip_add_file(C,_,write_theme(o.Themes,u)),E.themes.push(_),add_rels(u.wbrels,-1,"theme/theme1.xml",RELS.THEME),_="xl/styles."+T,zip_add_file(C,_,write_sty(o,_,u)),E.styles.push(_),add_rels(u.wbrels,-1,"styles."+T,RELS.STY),o.vbaraw&&S&&(_="xl/vbaProject.bin",zip_add_file(C,_,o.vbaraw),E.vba.push(_),add_rels(u.wbrels,-1,"vbaProject.bin",RELS.VBA)),_="xl/metadata."+T,zip_add_file(C,_,write_xlmeta(_)),E.metadata.push(_),add_rels(u.wbrels,-1,"metadata."+T,RELS.XLMETA),zip_add_file(C,"[Content_Types].xml",write_ct(E,u)),zip_add_file(C,"_rels/.rels",write_rels(u.rels)),zip_add_file(C,"xl/_rels/workbook."+T+".rels",write_rels(u.wbrels)),delete u.revssf,delete u.ssf,C}function write_zip_xlsx(o,u){_shapeid=1024,o&&!o.SSF&&(o.SSF=dup(table_fmt)),o&&o.SSF&&(make_ssf(),SSF_load_table(o.SSF),u.revssf=evert_num(o.SSF),u.revssf[o.SSF[65535]]=0,u.ssf=o.SSF),u.rels={},u.wbrels={},u.Strings=[],u.Strings.Count=0,u.Strings.Unique=0,browser_has_Map?u.revStrings=new Map:(u.revStrings={},u.revStrings.foo=[],delete u.revStrings.foo);var T="xml",S=VBAFMTS.indexOf(u.bookType)>-1,E=new_ct();fix_write_opts(u=u||{});var C=zip_new(),_="",P=0;if(u.cellXfs=[],get_cell_style(u.cellXfs,{},{revssf:{General:0}}),o.Props||(o.Props={}),_="docProps/core.xml",zip_add_file(C,_,write_core_props(o.Props,u)),E.coreprops.push(_),add_rels(u.rels,2,_,RELS.CORE_PROPS),_="docProps/app.xml",!(o.Props&&o.Props.SheetNames))if(!o.Workbook||!o.Workbook.Sheets)o.Props.SheetNames=o.SheetNames;else{for(var R=[],I=0;I<o.SheetNames.length;++I)(o.Workbook.Sheets[I]||{}).Hidden!=2&&R.push(o.SheetNames[I]);o.Props.SheetNames=R}o.Props.Worksheets=o.Props.SheetNames.length,zip_add_file(C,_,write_ext_props(o.Props)),E.extprops.push(_),add_rels(u.rels,3,_,RELS.EXT_PROPS),o.Custprops!==o.Props&&keys(o.Custprops||{}).length>0&&(_="docProps/custom.xml",zip_add_file(C,_,write_cust_props(o.Custprops)),E.custprops.push(_),add_rels(u.rels,4,_,RELS.CUST_PROPS));var L=["SheetJ5"];for(u.tcid=0,P=1;P<=o.SheetNames.length;++P){var j={"!id":{}},M=o.Sheets[o.SheetNames[P-1]],D=(M||{})["!type"]||"sheet";switch(D){case"chart":default:_="xl/worksheets/sheet"+P+"."+T,zip_add_file(C,_,write_ws_xml(P-1,u,o,j)),E.sheets.push(_),add_rels(u.wbrels,-1,"worksheets/sheet"+P+"."+T,RELS.WS[0])}if(M){var F=M["!comments"],N=!1,G="";if(F&&F.length>0){var B=!1;F.forEach(function(H){H[1].forEach(function(O){O.T==!0&&(B=!0)})}),B&&(G="xl/threadedComments/threadedComment"+P+"."+T,zip_add_file(C,G,write_tcmnt_xml(F,L,u)),E.threadedcomments.push(G),add_rels(j,-1,"../threadedComments/threadedComment"+P+"."+T,RELS.TCMNT)),G="xl/comments"+P+"."+T,zip_add_file(C,G,write_comments_xml(F)),E.comments.push(G),add_rels(j,-1,"../comments"+P+"."+T,RELS.CMNT),N=!0}M["!legacy"]&&N&&zip_add_file(C,"xl/drawings/vmlDrawing"+P+".vml",write_comments_vml(P,M["!comments"])),delete M["!comments"],delete M["!legacy"]}j["!id"].rId1&&zip_add_file(C,get_rels_path(_),write_rels(j))}return u.Strings!=null&&u.Strings.length>0&&(_="xl/sharedStrings."+T,zip_add_file(C,_,write_sst_xml(u.Strings,u)),E.strs.push(_),add_rels(u.wbrels,-1,"sharedStrings."+T,RELS.SST)),_="xl/workbook."+T,zip_add_file(C,_,write_wb_xml(o)),E.workbooks.push(_),add_rels(u.rels,1,_,RELS.WB),_="xl/theme/theme1.xml",zip_add_file(C,_,write_theme(o.Themes,u)),E.themes.push(_),add_rels(u.wbrels,-1,"theme/theme1.xml",RELS.THEME),_="xl/styles."+T,zip_add_file(C,_,write_sty_xml(o,u)),E.styles.push(_),add_rels(u.wbrels,-1,"styles."+T,RELS.STY),o.vbaraw&&S&&(_="xl/vbaProject.bin",zip_add_file(C,_,o.vbaraw),E.vba.push(_),add_rels(u.wbrels,-1,"vbaProject.bin",RELS.VBA)),_="xl/metadata."+T,zip_add_file(C,_,write_xlmeta_xml()),E.metadata.push(_),add_rels(u.wbrels,-1,"metadata."+T,RELS.XLMETA),L.length>1&&(_="xl/persons/person.xml",zip_add_file(C,_,write_people_xml(L)),E.people.push(_),add_rels(u.wbrels,-1,"persons/person.xml",RELS.PEOPLE)),zip_add_file(C,"[Content_Types].xml",write_ct(E,u)),zip_add_file(C,"_rels/.rels",write_rels(u.rels)),zip_add_file(C,"xl/_rels/workbook."+T+".rels",write_rels(u.wbrels)),delete u.revssf,delete u.ssf,C}function firstbyte(o,u){var T="";switch((u||{}).type||"base64"){case"buffer":return[o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7]];case"base64":T=Base64_decode(o.slice(0,12));break;case"binary":T=o;break;case"array":return[o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7]];default:throw new Error("Unrecognized type "+(u&&u.type||"undefined"))}return[T.charCodeAt(0),T.charCodeAt(1),T.charCodeAt(2),T.charCodeAt(3),T.charCodeAt(4),T.charCodeAt(5),T.charCodeAt(6),T.charCodeAt(7)]}function read_cfb(o,u){return CFB.find(o,"EncryptedPackage")?parse_xlsxcfb(o,u):parse_xlscfb(o,u)}function read_zip(o,u){var T,S=o,E=u||{};return E.type||(E.type=has_buf&&Buffer.isBuffer(o)?"buffer":"base64"),T=zip_read(S,E),parse_zip(T,E)}function read_plaintext(o,u){var T=0;e:for(;T<o.length;)switch(o.charCodeAt(T)){case 10:case 13:case 32:++T;break;case 60:return parse_xlml(o.slice(T),u);default:break e}return PRN.to_workbook(o,u)}function read_plaintext_raw(o,u){var T="",S=firstbyte(o,u);switch(u.type){case"base64":T=Base64_decode(o);break;case"binary":T=o;break;case"buffer":T=o.toString("binary");break;case"array":T=cc2str(o);break;default:throw new Error("Unrecognized type "+u.type)}return S[0]==239&&S[1]==187&&S[2]==191&&(T=utf8read(T)),u.type="binary",read_plaintext(T,u)}function read_utf16(o,u){var T=o;return u.type=="base64"&&(T=Base64_decode(T)),T=$cptable.utils.decode(1200,T.slice(2),"str"),u.type="binary",read_plaintext(T,u)}function bstrify(o){return o.match(/[^\x00-\x7F]/)?utf8write(o):o}function read_prn(o,u,T,S){return S?(T.type="string",PRN.to_workbook(o,T)):PRN.to_workbook(u,T)}function readSync(o,u){reset_cp();var T=u||{};if(typeof ArrayBuffer<"u"&&o instanceof ArrayBuffer)return readSync(new Uint8Array(o),(T=dup(T),T.type="array",T));typeof Uint8Array<"u"&&o instanceof Uint8Array&&!T.type&&(T.type=typeof Deno<"u"?"buffer":"array");var S=o,E=[0,0,0,0],C=!1;if(T.cellStyles&&(T.cellNF=!0,T.sheetStubs=!0),_ssfopts={},T.dateNF&&(_ssfopts.dateNF=T.dateNF),T.type||(T.type=has_buf&&Buffer.isBuffer(o)?"buffer":"base64"),T.type=="file"&&(T.type=has_buf?"buffer":"binary",S=read_binary(o),typeof Uint8Array<"u"&&!has_buf&&(T.type="array")),T.type=="string"&&(C=!0,T.type="binary",T.codepage=65001,S=bstrify(o)),T.type=="array"&&typeof Uint8Array<"u"&&o instanceof Uint8Array&&typeof ArrayBuffer<"u"){var _=new ArrayBuffer(3),P=new Uint8Array(_);if(P.foo="bar",!P.foo)return T=dup(T),T.type="array",readSync(ab2a(S),T)}switch((E=firstbyte(S,T))[0]){case 208:if(E[1]===207&&E[2]===17&&E[3]===224&&E[4]===161&&E[5]===177&&E[6]===26&&E[7]===225)return read_cfb(CFB.read(S,T),T);break;case 9:if(E[1]<=8)return parse_xlscfb(S,T);break;case 60:return parse_xlml(S,T);case 73:if(E[1]===73&&E[2]===42&&E[3]===0)throw new Error("TIFF Image File is not a spreadsheet");if(E[1]===68)return read_wb_ID(S,T);break;case 84:if(E[1]===65&&E[2]===66&&E[3]===76)return DIF.to_workbook(S,T);break;case 80:return E[1]===75&&E[2]<9&&E[3]<9?read_zip(S,T):read_prn(o,S,T,C);case 239:return E[3]===60?parse_xlml(S,T):read_prn(o,S,T,C);case 255:if(E[1]===254)return read_utf16(S,T);if(E[1]===0&&E[2]===2&&E[3]===0)return WK_.to_workbook(S,T);break;case 0:if(E[1]===0&&(E[2]>=2&&E[3]===0||E[2]===0&&(E[3]===8||E[3]===9)))return WK_.to_workbook(S,T);break;case 3:case 131:case 139:case 140:return DBF.to_workbook(S,T);case 123:if(E[1]===92&&E[2]===114&&E[3]===116)return RTF.to_workbook(S,T);break;case 10:case 13:case 32:return read_plaintext_raw(S,T);case 137:if(E[1]===80&&E[2]===78&&E[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return DBF_SUPPORTED_VERSIONS.indexOf(E[0])>-1&&E[2]<=12&&E[3]<=31?DBF.to_workbook(S,T):read_prn(o,S,T,C)}function readFileSync(o,u){var T=u||{};return T.type="file",readSync(o,T)}function write_cfb_ctr(o,u){switch(u.type){case"base64":case"binary":break;case"buffer":case"array":u.type="";break;case"file":return write_dl(u.file,CFB.write(o,{type:has_buf?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+u.bookType+"' files");default:throw new Error("Unrecognized type "+u.type)}return CFB.write(o,u)}function write_zip_type(o,u){var T=dup(u||{}),S=write_zip(o,T);return write_zip_denouement(S,T)}function write_zip_typeXLSX(o,u){var T=dup(u||{}),S=write_zip_xlsx(o,T);return write_zip_denouement(S,T)}function write_zip_denouement(o,u){var T={},S=has_buf?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(u.compression&&(T.compression="DEFLATE"),u.password)T.type=S;else switch(u.type){case"base64":T.type="base64";break;case"binary":T.type="string";break;case"string":throw new Error("'string' output type invalid for '"+u.bookType+"' files");case"buffer":case"file":T.type=S;break;default:throw new Error("Unrecognized type "+u.type)}var E=o.FullPaths?CFB.write(o,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[T.type]||T.type,compression:!!u.compression}):o.generate(T);if(typeof Deno<"u"&&typeof E=="string"){if(u.type=="binary"||u.type=="base64")return E;E=new Uint8Array(s2ab(E))}return u.password&&typeof encrypt_agile<"u"?write_cfb_ctr(encrypt_agile(E,u.password),u):u.type==="file"?write_dl(u.file,E):u.type=="string"?utf8read(E):E}function write_cfb_type(o,u){var T=u||{},S=write_xlscfb(o,T);return write_cfb_ctr(S,T)}function write_string_type(o,u,T){T||(T="");var S=T+o;switch(u.type){case"base64":return Base64_encode(utf8write(S));case"binary":return utf8write(S);case"string":return o;case"file":return write_dl(u.file,S,"utf8");case"buffer":return has_buf?Buffer_from(S,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(S):write_string_type(S,{type:"binary"}).split("").map(function(E){return E.charCodeAt(0)})}throw new Error("Unrecognized type "+u.type)}function write_stxt_type(o,u){switch(u.type){case"base64":return Base64_encode(o);case"binary":return o;case"string":return o;case"file":return write_dl(u.file,o,"binary");case"buffer":return has_buf?Buffer_from(o,"binary"):o.split("").map(function(T){return T.charCodeAt(0)})}throw new Error("Unrecognized type "+u.type)}function write_binary_type(o,u){switch(u.type){case"string":case"base64":case"binary":for(var T="",S=0;S<o.length;++S)T+=String.fromCharCode(o[S]);return u.type=="base64"?Base64_encode(T):u.type=="string"?utf8read(T):T;case"file":return write_dl(u.file,o);case"buffer":return o;default:throw new Error("Unrecognized type "+u.type)}}function writeSyncXLSX(o,u){reset_cp(),check_wb(o);var T=dup(u||{});if(T.cellStyles&&(T.cellNF=!0,T.sheetStubs=!0),T.type=="array"){T.type="binary";var S=writeSyncXLSX(o,T);return T.type="array",s2ab(S)}return write_zip_typeXLSX(o,T)}function writeSync(o,u){reset_cp(),check_wb(o);var T=dup(u||{});if(T.cellStyles&&(T.cellNF=!0,T.sheetStubs=!0),T.type=="array"){T.type="binary";var S=writeSync(o,T);return T.type="array",s2ab(S)}var E=0;if(T.sheet&&(typeof T.sheet=="number"?E=T.sheet:E=o.SheetNames.indexOf(T.sheet),!o.SheetNames[E]))throw new Error("Sheet not found: "+T.sheet+" : "+typeof T.sheet);switch(T.bookType||"xlsb"){case"xml":case"xlml":return write_string_type(write_xlml(o,T),T);case"slk":case"sylk":return write_string_type(SYLK.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"htm":case"html":return write_string_type(sheet_to_html(o.Sheets[o.SheetNames[E]],T),T);case"txt":return write_stxt_type(sheet_to_txt(o.Sheets[o.SheetNames[E]],T),T);case"csv":return write_string_type(sheet_to_csv(o.Sheets[o.SheetNames[E]],T),T,"\uFEFF");case"dif":return write_string_type(DIF.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"dbf":return write_binary_type(DBF.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"prn":return write_string_type(PRN.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"rtf":return write_string_type(RTF.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"eth":return write_string_type(ETH.from_sheet(o.Sheets[o.SheetNames[E]],T),T);case"fods":return write_string_type(write_ods(o,T),T);case"wk1":return write_binary_type(WK_.sheet_to_wk1(o.Sheets[o.SheetNames[E]],T),T);case"wk3":return write_binary_type(WK_.book_to_wk3(o,T),T);case"biff2":T.biff||(T.biff=2);case"biff3":T.biff||(T.biff=3);case"biff4":return T.biff||(T.biff=4),write_binary_type(write_biff_buf(o,T),T);case"biff5":T.biff||(T.biff=5);case"biff8":case"xla":case"xls":return T.biff||(T.biff=8),write_cfb_type(o,T);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"numbers":case"ods":return write_zip_type(o,T);default:throw new Error("Unrecognized bookType |"+T.bookType+"|")}}function resolve_book_type(o){if(!o.bookType){var u={xls:"biff8",htm:"html",slk:"sylk",socialcalc:"eth",Sh33tJS:"WTF"},T=o.file.slice(o.file.lastIndexOf(".")).toLowerCase();T.match(/^\.[a-z]+$/)&&(o.bookType=T.slice(1)),o.bookType=u[o.bookType]||o.bookType}}function writeFileSync(o,u,T){var S=T||{};return S.type="file",S.file=u,resolve_book_type(S),writeSync(o,S)}function writeFileSyncXLSX(o,u,T){var S=T||{};return S.type="file",S.file=u,resolve_book_type(S),writeSyncXLSX(o,S)}function writeFileAsync(o,u,T,S){var E=T||{};E.type="file",E.file=o,resolve_book_type(E),E.type="buffer";var C=S;return C instanceof Function||(C=T),_fs.writeFile(o,writeSync(u,E),C)}function make_json_row(o,u,T,S,E,C,_,P){var R=encode_row(T),I=P.defval,L=P.raw||!Object.prototype.hasOwnProperty.call(P,"raw"),j=!0,M=E===1?[]:{};if(E!==1)if(Object.defineProperty)try{Object.defineProperty(M,"__rowNum__",{value:T,enumerable:!1})}catch{M.__rowNum__=T}else M.__rowNum__=T;if(!_||o[T])for(var D=u.s.c;D<=u.e.c;++D){var F=_?o[T][D]:o[S[D]+R];if(F===void 0||F.t===void 0){if(I===void 0)continue;C[D]!=null&&(M[C[D]]=I);continue}var N=F.v;switch(F.t){case"z":if(N==null)break;continue;case"e":N=N==0?null:void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+F.t)}if(C[D]!=null){if(N==null)if(F.t=="e"&&N===null)M[C[D]]=null;else if(I!==void 0)M[C[D]]=I;else if(L&&N===null)M[C[D]]=null;else continue;else M[C[D]]=L&&(F.t!=="n"||F.t==="n"&&P.rawNumbers!==!1)?N:format_cell(F,N,P);N!=null&&(j=!1)}}return{row:M,isempty:j}}function sheet_to_json(o,u){if(o==null||o["!ref"]==null)return[];var T={t:"n",v:0},S=0,E=1,C=[],_=0,P="",R={s:{r:0,c:0},e:{r:0,c:0}},I=u||{},L=I.range!=null?I.range:o["!ref"];switch(I.header===1?S=1:I.header==="A"?S=2:Array.isArray(I.header)?S=3:I.header==null&&(S=0),typeof L){case"string":R=safe_decode_range(L);break;case"number":R=safe_decode_range(o["!ref"]),R.s.r=L;break;default:R=L}S>0&&(E=0);var j=encode_row(R.s.r),M=[],D=[],F=0,N=0,G=Array.isArray(o),B=R.s.r,H=0,O={};G&&!o[B]&&(o[B]=[]);var V=I.skipHidden&&o["!cols"]||[],U=I.skipHidden&&o["!rows"]||[];for(H=R.s.c;H<=R.e.c;++H)if(!(V[H]||{}).hidden)switch(M[H]=encode_col(H),T=G?o[B][H]:o[M[H]+j],S){case 1:C[H]=H-R.s.c;break;case 2:C[H]=M[H];break;case 3:C[H]=I.header[H-R.s.c];break;default:if(T==null&&(T={w:"__EMPTY",t:"s"}),P=_=format_cell(T,null,I),N=O[_]||0,!N)O[_]=1;else{do P=_+"_"+N++;while(O[P]);O[_]=N,O[P]=1}C[H]=P}for(B=R.s.r+E;B<=R.e.r;++B)if(!(U[B]||{}).hidden){var W=make_json_row(o,R,B,M,S,C,G,I);(W.isempty===!1||(S===1?I.blankrows!==!1:I.blankrows))&&(D[F++]=W.row)}return D.length=F,D}var qreg=/"/g;function make_csv_row(o,u,T,S,E,C,_,P){for(var R=!0,I=[],L="",j=encode_row(T),M=u.s.c;M<=u.e.c;++M)if(S[M]){var D=P.dense?(o[T]||[])[M]:o[S[M]+j];if(D==null)L="";else if(D.v!=null){R=!1,L=""+(P.rawNumbers&&D.t=="n"?D.v:format_cell(D,null,P));for(var F=0,N=0;F!==L.length;++F)if((N=L.charCodeAt(F))===E||N===C||N===34||P.forceQuotes){L='"'+L.replace(qreg,'""')+'"';break}L=="ID"&&(L='"ID"')}else D.f!=null&&!D.F?(R=!1,L="="+D.f,L.indexOf(",")>=0&&(L='"'+L.replace(qreg,'""')+'"')):L="";I.push(L)}return P.blankrows===!1&&R?null:I.join(_)}function sheet_to_csv(o,u){var T=[],S=u??{};if(o==null||o["!ref"]==null)return"";var E=safe_decode_range(o["!ref"]),C=S.FS!==void 0?S.FS:",",_=C.charCodeAt(0),P=S.RS!==void 0?S.RS:` 309`,R=P.charCodeAt(0),I=new RegExp((C=="|"?"\\|":C)+"+$"),L="",j=[];S.dense=Array.isArray(o);for(var M=S.skipHidden&&o["!cols"]||[],D=S.skipHidden&&o["!rows"]||[],F=E.s.c;F<=E.e.c;++F)(M[F]||{}).hidden||(j[F]=encode_col(F));for(var N=0,G=E.s.r;G<=E.e.r;++G)(D[G]||{}).hidden||(L=make_csv_row(o,E,G,j,_,R,C,S),L!=null&&(S.strip&&(L=L.replace(I,"")),(L||S.blankrows!==!1)&&T.push((N++?P:"")+L)));return delete S.dense,T.join("")}function sheet_to_txt(o,u){u||(u={}),u.FS=" ",u.RS=` 310`;var T=sheet_to_csv(o,u);if(typeof $cptable>"u"||u.type=="string")return T;var S=$cptable.utils.encode(1200,T,"str");return"ÿþ"+S}function sheet_to_formulae(o){var u="",T,S="";if(o==null||o["!ref"]==null)return[];var E=safe_decode_range(o["!ref"]),C="",_=[],P,R=[],I=Array.isArray(o);for(P=E.s.c;P<=E.e.c;++P)_[P]=encode_col(P);for(var L=E.s.r;L<=E.e.r;
310++L)for(C=encode_row(L),P=E.s.c;P<=E.e.c;++P)if(u=_[P]+C,T=I?(o[L]||[])[P]:o[u],S="",T!==void 0){if(T.F!=null){if(u=T.F,!T.f)continue;S=T.f,u.indexOf(":")==-1&&(u=u+":"+u)}if(T.f!=null)S=T.f;else{if(T.t=="z")continue;if(T.t=="n"&&T.v!=null)S=""+T.v;else if(T.t=="b")S=T.v?"TRUE":"FALSE";else if(T.w!==void 0)S="'"+T.w;else{if(T.v===void 0)continue;T.t=="s"?S="'"+T.v:S=""+T.v}}R[R.length]=u+"="+S}return R}function sheet_add_json(o,u,T){var S=T||{},E=+!S.skipHeader,C=o||{},_=0,P=0;if(C&&S.origin!=null)if(typeof S.origin=="number")_=S.origin;else{var R=typeof S.origin=="string"?decode_cell(S.origin):S.origin;_=R.r,P=R.c}var I,L={s:{c:0,r:0},e:{c:P,r:_+u.length-1+E}};if(C["!ref"]){var j=safe_decode_range(C["!ref"]);L.e.c=Math.max(L.e.c,j.e.c),L.e.r=Math.max(L.e.r,j.e.r),_==-1&&(_=j.e.r+1,L.e.r=_+u.length-1+E)}else _==-1&&(_=0,L.e.r=u.length-1+E);var M=S.header||[],D=0;u.forEach(function(N,G){keys(N).forEach(function(B){(D=M.indexOf(B))==-1&&(M[D=M.length]=B);var H=N[B],O="z",V="",U=encode_cell({c:P+D,r:_+G+E});I=ws_get_cell_stub(C,U),H&&typeof H=="object"&&!(H instanceof Date)?C[U]=H:(typeof H=="number"?O="n":typeof H=="boolean"?O="b":typeof H=="string"?O="s":H instanceof Date?(O="d",S.cellDates||(O="n",H=datenum(H)),V=S.dateNF||table_fmt[14]):H===null&&S.nullError&&(O="e",H=0),I?(I.t=O,I.v=H,delete I.w,delete I.R,V&&(I.z=V)):C[U]=I={t:O,v:H},V&&(I.z=V))})}),L.e.c=Math.max(L.e.c,P+M.length-1);var F=encode_row(_);if(E)for(D=0;D<M.length;++D)C[encode_col(D+P)+F]={t:"s",v:M[D]};return C["!ref"]=encode_range(L),C}function json_to_sheet(o,u){return sheet_add_json(null,o,u)}function ws_get_cell_stub(o,u,T){if(typeof u=="string"){if(Array.isArray(o)){var S=decode_cell(u);return o[S.r]||(o[S.r]=[]),o[S.r][S.c]||(o[S.r][S.c]={t:"z"})}return o[u]||(o[u]={t:"z"})}return typeof u!="number"?ws_get_cell_stub(o,encode_cell(u)):ws_get_cell_stub(o,encode_cell({r:u,c:T||0}))}function wb_sheet_idx(o,u){if(typeof u=="number"){if(u>=0&&o.SheetNames.length>u)return u;throw new Error("Cannot find sheet # "+u)}else if(typeof u=="string"){var T=o.SheetNames.indexOf(u);if(T>-1)return T;throw new Error("Cannot find sheet name |"+u+"|")}else throw new Error("Cannot find sheet |"+u+"|")}function book_new(){return{SheetNames:[],Sheets:{}}}function book_append_sheet(o,u,T,S){var E=1;if(!T)for(;E<=65535&&o.SheetNames.indexOf(T="Sheet"+E)!=-1;++E,T=void 0);if(!T||o.SheetNames.length>=65535)throw new Error("Too many worksheets");if(S&&o.SheetNames.indexOf(T)>=0){var C=T.match(/(^.*?)(\d+)$/);E=C&&+C[2]||0;var _=C&&C[1]||T;for(++E;E<=65535&&o.SheetNames.indexOf(T=_+E)!=-1;++E);}if(check_ws_name(T),o.SheetNames.indexOf(T)>=0)throw new Error("Worksheet with name |"+T+"| already exists!");return o.SheetNames.push(T),o.Sheets[T]=u,T}function book_set_sheet_visibility(o,u,T){o.Workbook||(o.Workbook={}),o.Workbook.Sheets||(o.Workbook.Sheets=[]);var S=wb_sheet_idx(o,u);switch(o.Workbook.Sheets[S]||(o.Workbook.Sheets[S]={}),T){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+T)}o.Workbook.Sheets[S].Hidden=T}function cell_set_number_format(o,u){return o.z=u,o}function cell_set_hyperlink(o,u,T){return u?(o.l={Target:u},T&&(o.l.Tooltip=T)):delete o.l,o}function cell_set_internal_link(o,u,T){return cell_set_hyperlink(o,"#"+u,T)}function cell_add_comment(o,u,T){o.c||(o.c=[]),o.c.push({t:u,a:T||"SheetJS"})}function sheet_set_array_formula(o,u,T,S){for(var E=typeof u!="string"?u:safe_decode_range(u),C=typeof u=="string"?u:encode_range(u),_=E.s.r;_<=E.e.r;++_)for(var P=E.s.c;P<=E.e.c;++P){var R=ws_get_cell_stub(o,_,P);R.t="n",R.F=C,delete R.v,_==E.s.r&&P==E.s.c&&(R.f=T,S&&(R.D=!0))}return o}var utils={encode_col,encode_row,encode_cell,encode_range,decode_col,decode_row,split_cell,decode_cell,decode_range,format_cell,sheet_add_aoa,sheet_add_json,sheet_add_dom,aoa_to_sheet,json_to_sheet,table_to_sheet:parse_dom_table,table_to_book,sheet_to_csv,sheet_to_txt,sheet_to_json,sheet_to_html,sheet_to_formulae,sheet_to_row_object_array:sheet_to_json,sheet_get_cell:ws_get_cell_stub,book_new,book_append_sheet,book_set_sheet_visibility,cell_set_number_format,cell_set_hyperlink,cell_set_internal_link,cell_add_comment,sheet_set_array_formula,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}},_Readable;function set_readable(o){_Readable=o}function write_csv_stream(o,u){var T=_Readable(),S=u??{};if(o==null||o["!ref"]==null)return T.push(null),T;var E=safe_decode_range(o["!ref"]),C=S.FS!==void 0?S.FS:",",_=C.charCodeAt(0),P=S.RS!==void 0?S.RS:` 311`,R=P.charCodeAt(0),I=new RegExp((C=="|"?"\\|":C)+"+$"),L="",j=[];S.dense=Array.isArray(o);for(var M=S.skipHidden&&o["!cols"]||[],D=S.skipHidden&&o["!rows"]||[],F=E.s.c;F<=E.e.c;++F)(M[F]||{}).hidden||(j[F]=encode_col(F));var N=E.s.r,G=!1,B=0;return T._read=function(){if(!G)return G=!0,T.push("\uFEFF");for(;N<=E.e.r;)if(++N,!(D[N-1]||{}).hidden&&(L=make_csv_row(o,E,N-1,j,_,R,C,S),L!=null&&(S.strip&&(L=L.replace(I,"")),L||S.blankrows!==!1)))return T.push((B++?P:"")+L);return T.push(null)},T}function write_html_stream(o,u){var T=_Readable(),S=u||{},E=S.header!=null?S.header:HTML_BEGIN,C=S.footer!=null?S.footer:HTML_END;T.push(E);var _=decode_range(o["!ref"]);
311S.dense=Array.isArray(o),T.push(make_html_preamble(o,_,S));var P=_.s.r,R=!1;return T._read=function(){if(P>_.e.r)return R||(R=!0,T.push("</table>"+C)),T.push(null);for(;P<=_.e.r;){T.push(make_html_row(o,_,P,S)),++P;break}},T}function write_json_stream(o,u){var T=_Readable({objectMode:!0});if(o==null||o["!ref"]==null)return T.push(null),T;var S={t:"n",v:0},E=0,C=1,_=[],P=0,R="",I={s:{r:0,c:0},e:{r:0,c:0}},L=u||{},j=L.range!=null?L.range:o["!ref"];switch(L.header===1?E=1:L.header==="A"?E=2:Array.isArray(L.header)&&(E=3),typeof j){case"string":I=safe_decode_range(j);break;case"number":I=safe_decode_range(o["!ref"]),I.s.r=j;break;default:I=j}E>0&&(C=0);var M=encode_row(I.s.r),D=[],F=0,N=Array.isArray(o),G=I.s.r,B=0,H={};N&&!o[G]&&(o[G]=[]);var O=L.skipHidden&&o["!cols"]||[],V=L.skipHidden&&o["!rows"]||[];for(B=I.s.c;B<=I.e.c;++B)if(!(O[B]||{}).hidden)switch(D[B]=encode_col(B),S=N?o[G][B]:o[D[B]+M],E){case 1:_[B]=B-I.s.c;break;case 2:_[B]=D[B];break;case 3:_[B]=L.header[B-I.s.c];break;default:if(S==null&&(S={w:"__EMPTY",t:"s"}),R=P=format_cell(S,null,L),F=H[P]||0,!F)H[P]=1;else{do R=P+"_"+F++;while(H[R]);H[P]=F,H[R]=1}_[B]=R}return G=I.s.r+C,T._read=function(){for(;G<=I.e.r;)if(!(V[G-1]||{}).hidden){var U=make_json_row(o,I,G,D,E,_,N,L);if(++G,U.isempty===!1||(E===1?L.blankrows!==!1:L.blankrows)){T.push(U.row);return}}return T.push(null)},T}var __stream={to_json:write_json_stream,to_html:write_html_stream,to_csv:write_csv_stream,set_readable};const version=XLSX.version,xlsx=Object.freeze(Object.defineProperty({__proto__:null,CFB,SSF,parse_xlscfb,parse_zip,read:readSync,readFile:readFileSync,readFileSync,set_cptable,set_fs,stream:__stream,utils,version,write:writeSync,writeFile:writeFileSync,writeFileAsync,writeFileSync,writeFileXLSX:writeFileSyncXLSX,writeXLSX:writeSyncXLSX},Symbol.toStringTag,{value:"Module"}));function CopyTransferButton({text:o,sx:u}){const[T,S]=React$1.useState(!1),E=React$1.useRef(void 0);React$1.useEffect(()=>()=>clearTimeout(E.current),[]);const C=async()=>{try{await navigator.clipboard.writeText(o)}catch{const _=document.createElement("textarea");_.value=o,_.style.position="fixed",_.style.opacity="0",document.body.appendChild(_),_.select(),document.execCommand("copy"),document.body.removeChild(_)}S(!0),clearTimeout(E.current),E.current=setTimeout(()=>S(!1),2e3)};return jsxRuntimeExports.jsx(Button,{onClick:C,size:"small",variant:T?"contained":"outlined",color:T?"success":"error",startIcon:T?jsxRuntimeExports.jsx(CheckIcon,{}):jsxRuntimeExports.jsx(ContentCopyIcon,{}),sx:{fontWeight:700,px:1.5,py:.25,fontSize:"0.8rem",textTransform:"none",...u},children:T?"Äã copy!":"Copy ná»i dung"})}function ManualTransferAccordion({transferContent:o,amount:u,sx:T}){const{t:S}=useTranslation("common"),[E,C]=React$1.useState(!1);return jsxRuntimeExports.jsxs(Box,{sx:{width:"100%",border:"1px solid #cbd5e1",borderRadius:2,bgcolor:"#f8fafc",overflow:"hidden",...T},children:[jsxRuntimeExports.jsxs(Box,{onClick:()=>C(_=>!_),role:"button",tabIndex:0,onKeyDown:_=>{(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),C(P=>!P))},sx:{display:"flex",alignItems:"center",gap:.75,px:1.25,py:.85,cursor:"pointer",userSelect:"none","&:hover":{bgcolor:"#eef2f7"}},children:[jsxRuntimeExports.jsx(ExpandMoreIcon,{sx:{fontSize:"1.1rem",color:"#64748b",transition:"transform .2s",transform:E?"rotate(180deg)":"none"}}),jsxRuntimeExports.jsx(Typography,{sx:{fontSize:"0.82rem",fontWeight:700,color:"#475569",lineHeight:1.3},children:S("manualTransfer.toggle","Không quét ÄÆ°á»£c mã QR? Chuyá»n khoản thá»§ công")})]}),jsxRuntimeExports.jsx(Collapse,{in:E,unmountOnExit:!0,children:jsxRuntimeExports.jsxs(Box,{sx:{px:1.25,pb:1.25,pt:.25,borderTop:"1px dashed #cbd5e1"},children:[jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{color:"#334155",lineHeight:1.7,fontSize:"0.82rem"},children:[jsxRuntimeExports.jsx("strong",{children:S("proModal.bankLabel")})," ",PAYMENT_CONFIG.BANK_ID,jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("strong",{children:S("proModal.accountLabel")})," ",PAYMENT_CONFIG.ACCOUNT_NO,jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("strong",{children:S("proModal.ownerLabel")})," ",PAYMENT_CONFIG.ACCOUNT_NAME,u!==void 0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("strong",{children:S("manualTransfer.amountLabel","ð° Sá» tiá»n:")}
311)," ",u.toLocaleString("vi-VN")," VNÄ"]})]}),jsxRuntimeExports.jsx(Typography,{sx:{mt:.85,fontSize:"0.78rem",fontWeight:700,color:"#b45309"},children:S("manualTransfer.contentLabel","Ná»i dung chuyá»n khoản â copy rá»i dán, Äừng gõ tay:")}),jsxRuntimeExports.jsx(Typography,{sx:{mt:.4,p:.75,bgcolor:"#fff",border:"1px solid #f59e0b",borderRadius:1,fontFamily:"monospace",fontWeight:900,color:"#b45309",fontSize:"0.92rem",wordBreak:"break-all",textAlign:"center"},children:o}),jsxRuntimeExports.jsx(Box,{sx:{mt:.75,textAlign:"center"},children:jsxRuntimeExports.jsx(CopyTransferButton,{text:o})})]})})]})}const MULTI_YEAR_DISCOUNTS=PAYMENT_CONFIG.MULTI_YEAR_DISCOUNTS||{};function parseEmails(o,u){const T=o.split(/[\s,;\n]+/).map(P=>P.trim().toLowerCase()).filter(Boolean),S=[],E=[],C=new Set([u]),_=/^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}$/;for(const P of T){if(!_.test(P)){E.push(P);continue}C.has(P)||(C.add(P),S.push(P))}return{valid:S,invalid:E}}function GroupPurchaseModal({open:o,onClose:u,feature:T,featureCode:S,basePrice:E,selectedYears:C,featureName:_}){const{t:P}=useTranslation("common"),{currentUser:R}=useAuth(),{toast:I}=useToast(),L=((R==null?void 0:R.email)||"").toLowerCase(),j=(R==null?void 0:R.uid)||"",[M,D]=React$1.useState(0),[F,N]=React$1.useState(C),[G,B]=React$1.useState(""),[H,O]=React$1.useState([]),[V,U]=React$1.useState([]),[W,K]=React$1.useState(""),[Y,ee]=React$1.useState(!1),[oe,se]=React$1.useState("waiting"),Q=React$1.useRef(null),[ie,ae]=React$1.useState(0),[re,J]=React$1.useState([]),[te,Z]=React$1.useState(""),[X,de]=React$1.useState(null),[he,ne]=React$1.useState("");React$1.useEffect(()=>{o||(Q.current&&(deleteDoc(Q.current).catch(()=>{}),Q.current=null),D(0),B(""),O([]),U([]),K(""),ee(!1),se("waiting"),ae(0),J([]),Z(""),de(null),ne(""),N(C))},[o,C]),React$1.useEffect(()=>{const{valid:ze,invalid:Ze}=parseEmails(G,L);O(ze),U(Ze)},[G,L]);const ue=L?[L,...H]:H,ce=ue.length,fe=getGroupDiscount(ce),ve=MULTI_YEAR_DISCOUNTS[F]||0,Te=(X==null?void 0:X.discount)||0,Se=Math.round(E*(1-Te/100)),ke=Math.round(ce*Se*F*(1-ve/100)),we=Math.round(ke*(1-fe/100)),Le=ce>0?Math.round(we/ce):E,pe=+(100-we/(ce*E*F)*100).toFixed(1),Me=getBonusMonths(T),Pe=H.length>=GROUP_MAX_MEMBERS,Ue=ce>=2,qe=()=>{const ze=utils.aoa_to_sheet([["email"],["[email protected]"],...Array(8).fill([""])]);ze["!cols"]=[{wch:35}];const Ze=utils.book_new();utils.book_append_sheet(Ze,ze,P("groupPurchaseModal.sheetName")),writeFileSync(Ze,P("groupPurchaseModal.templateFileName"))},Ie=ze=>{var rt;const Ze=(rt=ze.target.files)==null?void 0:rt[0];if(!Ze)return;const He=new FileReader;He.onload=it=>{var Qe;const st=new Uint8Array((Qe=it.target)==null?void 0:Qe.result),at=readSync(st,{type:"array"}),ot=at.Sheets[at.SheetNames[0]],Be=utils.sheet_to_json(ot,{header:1,defval:""}).map(Ge=>String(Ge[0]||"").trim().toLowerCase()).filter(Ge=>Ge&&Ge!=="email").join(` 312`);B(Ge=>Ge?Ge+` 313`+Be:Be)},He.readAsArrayBuffer(Ze),ze.target.value=""},Xe=async()=>{if(!(!j||ce<2)){ee(!0);try{const ze=Math.random().toString(36).substring(2,8).toUpperCase(),Ze=doc(db,"groupPurchaseRequests",`${j}_${ze}`),He=Timestamp.fromDate(new Date(Date.now()+24*60*60*1e3));await setDoc(Ze,{buyerUid:j,buyerEmail:L,groupId:ze,featureKey:T,featureCode:S,durationYears:F,recipientEmails:ue,recipientCount:ce,unitPricePerYear:E,groupDiscountPct:fe,multiYearDiscountPct:ve,promoCode:(X==null?void 0:X.code)||null,promoDiscountPct:Te,totalPrice:we,status:"pending",processedCount:0,failedEmails:[],createdAt:new Date().toISOString(),processedAt:null,expireAt:He}),Q.current=Ze,K(ze),D(2)}catch(ze){console.error("[GroupPurchase] setDoc failed:",ze),I.error(P("groupPurchaseModal.errorPrefix",{message:(ze==null?void 0:ze.message)||ze}))}finally{ee(!1)}}};React$1.useEffect(()=>{if(M!==2||!W||!j)return;const ze=onSnapshot(doc(db,"groupPurchaseRequests",`${j}_${W}`),Ze=>{if(!Ze.exists())return;const He=Ze.data();(He.status==="completed"||He.status==="completed_with_errors")&&(Q.current=null,se("completed"),ae(He.processedCount||0),J(He.failedEmails||[]),He.status==="completed"&&(I.success(P("groupPurchaseModal.unlockSuccessToast",{processed:He.processedCount,total:ce})),setTimeout(()=>{u(),window.location.reload()},2500)))});return()=>ze()},[M,W,j,ce,u,I,P]);const{transferContent:et,qrUrl:tt}=usePaymentQr({featureCode:S,basePrice:E,uid:j,appliedPromo:X,priceOverride:we,transferCodeOverride:`GRP${W}`}),Ye=W?tt:"";return jsxRuntimeExports.jsxs(Dialog,{open:o,onClose:u,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderRadius:3}},children:[jsxRuntimeExports.jsxs(DialogTitle,{sx:{background:"linear-gradient(135deg, #16a34a, #15803d)",color:"#fff",fontWeight:"bold",py:1.5,display:"flex",alignItems:"center",gap:1},children:[jsxRuntimeExports.jsx(GroupsIcon,{}),P("groupPurchaseModal.title")]}),jsxRuntimeExports.jsxs(DialogContent,{sx:{pt:2,pb:1},children:[jsxRuntimeExports.jsx(Stepper,{activeStep:M,sx:{mb:2},children:[P("groupPurchaseModal.stepEmail"),P("groupPurchaseModal.stepConfirm"),P("groupPurchaseModal.stepPayment")].map(ze=>jsxRuntimeExports.jsx(Step,{children:jsxRuntimeExports.jsx(StepLabel,{children:ze})},ze))}),M===0&&jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",gap:2},children:[jsxRuntimeExports.jsxs(Box,{sx:{flex:1,minWidth:0},children:[jsxRuntimeExports.jsx(Alert,{severity:"info",sx:{mb:1.5,py:.5},children:jsxRuntimeExports.jsx(Typography,{variant:"body2",children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"groupPurchaseModal.infoAlert",values:{featureName:_},children:["Mua ",jsxRuntimeExports.jsx("strong",{children:_})," cho nhiá»u ngưá»i â email cá»§a bạn tá»± Äá»ng thêm và o."]})})}),jsxRuntimeExports.jsxs(Box,{sx:{mb:1.5,display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[jsxRuntimeExports.jsx(Chip,{icon:jsxRuntimeExports.jsx(EmailIcon,{}),label:P("groupPurchaseModal.buyerLabel",{email:L}),color:"success",size:"small",sx:{fontWeight:700}}),jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#555"},children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"groupPurchaseModal.memberCount",values:{count:H.length,total:ce},children:["+ ",H.length," email khác = ",jsxRuntimeExports.jsxs("strong",{children:[ce," ngưá»i"]})]})})]}),jsxRuntimeExports.jsx(TextField,{multiline:!0,minRows:4,maxRows:10,fullWidth:!0,placeholder:P("groupPurchaseModal.placeholder"),value:G,onChange:ze=>B(ze.target.value),sx:{mb:1},size:"small"}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5,flexWrap:"wrap"},children:[jsxRuntimeExports.jsxs(Button,{component:"label",variant:"outlined",size:"small",sx:{fontSize:"0.78rem"},children:[P("groupPurchaseModal.uploadBtn"),jsxRuntimeExports.jsx("input",{type:"file",accept:".csv,.txt,.xlsx",hidden:!0,onChange:Ie})]}),jsxRuntimeExports.jsx(Button,{variant:"outlined",size:"small",onClick:qe,sx:{fontSize:"0.78rem",borderColor:"#0ea5e9",color:"#0369a1","&:hover":{bgcolor:"#f0f9ff",borderColor:"#0ea5e9"}},children:P("groupPurchaseModal.exportTemplateBtn")})]}),V.length>0&&jsxRuntimeExports.jsx(Alert,{severity:"warning",sx:{mb:1,py:.5},children:jsxRuntimeExports.jsx(Typography,{variant:"caption",children:P("groupPurchaseModal.invalidEmail
313s",{count:V.length,emails:V.slice(0,3).join(", ")+(V.length>3?"...":"")})})}),Pe&&jsxRuntimeExports.jsx(Alert,{severity:"error",sx:{mb:1,py:.5},children:jsxRuntimeExports.jsx(Typography,{variant:"caption",children:P("groupPurchaseModal.overLimit",{max:GROUP_MAX_MEMBERS})})}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",gap:1,mb:1.5},children:[jsxRuntimeExports.jsx(TextField,{size:"small",placeholder:P("groupPurchaseModal.promoPlaceholder"),value:te,onChange:ze=>{Z(ze.target.value.toUpperCase()),ne("")},disabled:!!X,error:!!he,helperText:he,sx:{flex:1,bgcolor:"#fff",borderRadius:1},InputProps:{sx:{height:"36px"}}}),X?jsxRuntimeExports.jsx(Button,{variant:"outlined",color:"error",size:"small",onClick:()=>{de(null),Z(""),ne("")},sx:{height:"36px",minWidth:"60px"},children:P("groupPurchaseModal.promoDelete")}):jsxRuntimeExports.jsx(Button,{variant:"contained",color:"primary",size:"small",onClick:()=>{var He;const ze=te.trim().toUpperCase();if(!ze){ne(P("groupPurchaseModal.promoRequired"));return}const Ze=(He=PAYMENT_CONFIG.PROMO_CODES)==null?void 0:He[ze];Ze?(de({code:ze,discount:Ze}),ne("")):ne(P("groupPurchaseModal.promoInvalid"))},sx:{height:"36px",minWidth:"70px",flexShrink:0},children:P("groupPurchaseModal.promoApply")})]}),X&&jsxRuntimeExports.jsx(Chip,{label:P("groupPurchaseModal.promoApplied",{code:X.code,discount:X.discount}),color:"success",size:"small",sx:{mb:1.5}}),Ue&&jsxRuntimeExports.jsxs(Box,{sx:{p:1.5,bgcolor:"#f0fdf4",border:"1.5px solid #86efac",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:700,color:"#15803d",mb:.5},children:P("groupPurchaseModal.summaryTitle")}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555",textDecoration:"line-through"},children:P("groupPurchaseModal.originalPrice",{price:(ce*E*F).toLocaleString("vi-VN")})}),Te>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.promoDiscount",{discount:Te})}),ve>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.multiYearDiscount",{years:F,discount:ve})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.groupDiscount",{count:ce,discount:fe.toFixed(1)})}),Me>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#16a34a",fontWeight:700},children:P("groupPurchaseModal.bonusMonths",{month:new Date().getMonth()+1,count:Me})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#15803d",fontWeight:700},children:jsxRuntimeExports.jsx(Trans,{i18nKey:"groupPurchaseModal.totalDiscount",values:{discount:pe,price:Le.toLocaleString("vi-VN"),period:F>1?P("groupPurchaseModal.multiYearPeriod",{years:F}):P("groupPurchaseModal.yearPeriod"),bonus:Me>0?P("groupPurchaseModal.bonusSuffix",{count:Me}):""},components:{strong:jsxRuntimeExports.jsx("strong",{})}})}),jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:900,color:"#f44336",mt:.5},children:P("groupPurchaseModal.totalPayment",{price:we.toLocaleString("vi-VN")})})]})]}),jsxRuntimeExports.jsxs(Box,{sx:{width:200,flexShrink:0,display:"flex",flexDirection:"column",gap:1.5},children:[jsxRuntimeExports.jsxs(Box,{sx:{p:1.5,bgcolor:"#f8fafc",border:"1px solid #e2e8f0",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:700,color:"#1e293b",mb:1},children:P("groupPurchaseModal.yearsTitle")}),jsxRuntimeExports.jsx(Box,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:.75},children:[1,2,3,5].map(ze=>{const Ze=MULTI_YEAR_DISCOUNTS[ze],He=F===ze;return jsxRuntimeExports.jsxs(Button,{variant:He?"contained":"outlined",size:"small",onClick:()=>N(ze),sx:{flexDirection:"column",py:.75,px:.5,minWidth:0,lineHeight:1.2,fontWeight:700,fontSize:"0.82rem",color:He?"#fff":"#374151",bgcolor:He?"#16a34a":"transparent",borderColor:He?"#16a34a":"#d1d5db","&:hover":{bgcolor:He?"#15803d":"#f0fdf4",borderColor:"#16a34a"}},children:[P("groupPurchaseModal.yearsButton",{years:ze}),Ze>0&&jsxRuntimeExports.jsx(Typography,{component:"span",sx:{fontSize:"0.65rem",fontWeight:800,color:He?"#bbf7d0":"#16a34a",lineHeight:1},children:P("groupPurchaseModal.yearsDiscountBadge",{discount:Ze})})]},ze)})})]}),jsxRuntimeExports.jsxs(Box,{sx:{p:1.5,bgcolor:"#fefce8",border:"1px solid #fde68a",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:700,color:"#92400e",mb:.75},children:P("groupPurchaseModal.groupTableTitle")}),[{n:2},{n:5},{n:10},{n:20},{n:30},{n:50},{n:100}].map(({n:ze})=>jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",justifyContent:"space-between",py:.2},children:[jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#555"},children:P("groupPurchaseModal.groupPeople",{count:ze})}),jsxRuntimeExports.jsxs(Typography,{variant:"caption",sx:{fontWeight:700,color:"#b45309"},children:["-",getGroupDiscount(ze).toFixed(0),"%"]})]},ze))]})]})]}),M===1&&jsxRuntimeExports.jsxs(Box,{children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:700,mb:1},children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"groupPurchaseModal.confirmListTitle",values:{total:ce,featureName:_,years:F},children:["Danh sách ",ce," ngưá»i sẽ ÄÆ°á»£c má» khóa ",jsxRuntimeExports.jsx("strong",{children:_})," (",F," nÄm):"]})}),jsxRuntimeExports.jsx(Box,{sx:{maxHeight:200,overflowY:"auto",border:"1px solid #e0e0e0",borderRadius:1,p:1,mb:2,bgcolor:"#fafafa"},children:ue.map((ze,Ze)=>jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{py:.3,color:Ze===0?"#15803d":"#333"},children:[Ze+1,". ",ze,Ze===0?P("groupPurchaseModal.youSuffix"):""]},ze))}),jsxRuntimeExports.jsxs(Box,{sx:{p:1.5,bgcolor:"#fff3cd",border:"2px s
313olid #ffc107",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555",textDecoration:"line-through"},children:P("groupPurchaseModal.originalPrice",{price:(ce*E*F).toLocaleString("vi-VN")})}),Te>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.promoDiscount",{discount:Te})}),ve>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.multiYearDiscount",{years:F,discount:ve})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.groupDiscount",{count:ce,discount:fe.toFixed(1)})}),Me>0&&jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#16a34a",fontWeight:700},children:P("groupPurchaseModal.bonusMonths",{month:new Date().getMonth()+1,count:Me})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#15803d",fontWeight:700},children:P("groupPurchaseModal.totalDiscountPct",{discount:pe})}),jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:900,color:"#f44336",mt:.5},children:P("groupPurchaseModal.confirmTotal",{price:we.toLocaleString("vi-VN")})}),jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#777"},children:P("groupPurchaseModal.perPersonSummary",{price:Le.toLocaleString("vi-VN"),years:F,bonus:Me>0?P("groupPurchaseModal.bonusMonthsSuffix",{count:Me}):""})})]}),jsxRuntimeExports.jsx(Alert,{severity:"info",sx:{mt:1.5,py:.5},children:jsxRuntimeExports.jsx(Typography,{variant:"caption",children:P("groupPurchaseModal.unregisteredHint")})})]}),M===2&&jsxRuntimeExports.jsx(Box,{children:oe==="waiting"?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"flex-start",gap:1.5,flexWrap:{xs:"wrap",sm:"nowrap"}},children:[jsxRuntimeExports.jsxs(Box,{sx:{flex:"1 1 230px",minWidth:0,display:"flex",flexDirection:"column",gap:1},children:[jsxRuntimeExports.jsx(ManualTransferAccordion,{transferContent:et,amount:we}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"center",gap:1,color:"#555"},children:[jsxRuntimeExports.jsx(CircularProgress,{size:16}),jsxRuntimeExports.jsx(Typography,{variant:"caption",children:P("groupPurchaseModal.waitingText")})]})]}),Ye&&jsxRuntimeExports.jsxs(Box,{sx:{flex:"0 0 auto",display:"flex",flexDirection:"column",alignItems:"center",width:200},children:[jsxRuntimeExports.jsx("img",{src:Ye,alt:"QR Thanh Toán",style:{width:200,height:200,borderRadius:8}}),jsxRuntimeExports.jsxs(Box,{sx:{mt:1,p:1.25,bgcolor:"#fff3cd",border:"2px solid #ffc107",borderRadius:2,textAlign:"center",width:"100%"},children:[jsxRuntimeExports.jsxs(Typography,{variant:"h6",sx:{fontWeight:900,color:"#f44336"},children:["ð³ ",we.toLocaleString("vi-VN"),"Ä"]}),jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#555"},children:P("groupPurchaseModal.paymentSummary",{count:ce,years:F,discount:pe})})]})]})]}),jsxRuntimeExports.jsx(Box,{sx:{mt:1.25,mb:1.5,py:.75,px:1.5,bgcolor:"#e8f5e9",border:"1px solid #a5d6a7",borderRadius:2},children:jsxRuntimeExports.jsxs(Typography,{sx:{fontSize:"0.82rem",fontWeight:700,color:"#2e7d32",lineHeight:1.4,textAlign:"center"},children:["â
",P("upgradeModal.qrAutoFillNote")]})})]}):jsxRuntimeExports.jsxs(Box,{sx:{textAlign:"center",py:3},children:[jsxRuntimeExports.jsx(CheckCircle,{sx:{fontSize:56,color:"#16a34a",mb:1}}),jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:700,color:"#15803d",mb:1},children:P("groupPurchaseModal.successTitle",{processed:ie,total:ce})}),re.length>0&&jsxRuntimeExports.jsx(Alert,{severity:"warning",sx:{textAlign:"left",mb:1},children:jsxRuntimeExports.jsx(Typography,{variant:"body2",children:P("groupPurchaseModal.failedEmails",{count:re.length,emails:re.join(", ")})})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{color:"#555"},children:P("groupPurchaseModal.reloadHint")})]})})]}),jsxRuntimeExports.jsxs(DialogActions,{sx:{p:2,gap:1},children:[M===0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Button,{onClick:u,variant:"outlined",size:"small",children:P("groupPurchaseModal.close")}),jsxRuntimeExports.jsx(Button,{variant:"contained",color:"success",size:"small",disabled:!Ue||Pe,onClick:()=>D(1),children:P("groupPurchaseModal.previewNext")})]}),M===1&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Button,{onClick:()=>D(0),variant:"outlined",size:"small",children:P("groupPurchaseModal.back")}),jsxRuntimeExports.jsx(Button,{variant:"contained",color:"success",size:"small",disabled:Y,onClick:Xe,startIcon:Y?jsxRuntimeExports.jsx(CircularProgress,{size:16,color:"inherit"}):void 0,children:P(Y?"groupPurchaseModal.confirmCreating":"groupPurchaseModal.confirmCreateQR")})]}),M===2&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Button,{onClick:u,variant:"outlined",size:"small",children:P("groupPurchaseModal.close")}),jsxRuntimeExports.jsx(Button,{variant:"contained",color:"success",size:"small",onClick:()=>window.location.reload(),children:P("groupPurchaseModal.paidReload")})]})]})]})}function FeatureComparisonTable({buttonLabel:o,paidColumnLabel:u,rows:T}
313){const[S,E]=React$1.useState(!1);return jsxRuntimeExports.jsxs(Box,{sx:{mt:1},children:[jsxRuntimeExports.jsxs(Button,{variant:"text",size:"small",fullWidth:!0,onClick:()=>E(C=>!C),endIcon:S?jsxRuntimeExports.jsx(ExpandLessIcon,{}):jsxRuntimeExports.jsx(ExpandMoreIcon,{}),sx:{color:"#1976d2",fontWeight:700,fontSize:"0.8rem",textTransform:"none"},children:["âï¸ ",o]}),jsxRuntimeExports.jsx(Collapse,{in:S,children:jsxRuntimeExports.jsx(Box,{sx:{mt:1,border:"1px solid #e0e0e0",borderRadius:1.5,overflow:"hidden"},children:jsxRuntimeExports.jsxs(Table,{size:"small",children:[jsxRuntimeExports.jsx(TableHead,{children:jsxRuntimeExports.jsxs(TableRow,{sx:{bgcolor:"#f5f5f5"},children:[jsxRuntimeExports.jsx(TableCell,{sx:{fontWeight:700,fontSize:"0.8rem"},children:"TÃnh nÄng"}),jsxRuntimeExports.jsx(TableCell,{sx:{fontWeight:700,fontSize:"0.8rem"},children:"Miá»
n phÃ"}),jsxRuntimeExports.jsx(TableCell,{sx:{fontWeight:700,fontSize:"0.8rem",color:"#2e7d32"},children:u})]})}),jsxRuntimeExports.jsx(TableBody,{children:T.map(C=>jsxRuntimeExports.jsxs(TableRow,{children:[jsxRuntimeExports.jsx(TableCell,{sx:{fontSize:"0.8rem"},children:C.label}),jsxRuntimeExports.jsx(TableCell,{sx:{fontSize:"0.8rem",color:"#757575"},children:C.free}),jsxRuntimeExports.jsx(TableCell,{sx:{fontSize:"0.8rem",color:"#2e7d32",fontWeight:600},children:C.paid})]},C.label))})]})})})]})}const BMAC_URL="https://buymeacoffee.com/giaoviendoimoi",getProComparisonRows=o=>[{label:o("proModal.detailedReportRow"),free:o("proModal.scoreOnlyReport"),paid:o("proModal.perQuestionReport")},{label:o("proModal.audioRecordRow"),free:o("proModal.noAudio"),paid:o("proModal.hasAudio")},...Object.entries(PRO_FEATURE_LABELS).map(([u,{name:T,unit:S}])=>({label:T,free:TRIAL_LIMITS[u]>0?`${TRIAL_LIMITS[u]}${S?" "+S:""}`:o("proModal.cannotUse"),paid:o("proModal.unlimited")}))],FEATURE_ONLINE_URL={interactiveVideo:"giaoviendoimoi.com/interactive-video",quizGame:"giaoviendoimoi.com/quiz-game",panorama:"giaoviendoimoi.com/panorama-museum",wheelQuiz:"giaoviendoimoi.com/wheel-quiz",pacedQuiz:"giaoviendoimoi.com/paced-quiz",flipPuzzle:"giaoviendoimoi.com/flip-puzzle-game",crosswordPuzzle:"giaoviendoimoi.com/crossword-puzzle",handSlashQuiz:"giaoviendoimoi.com/hand-slash-quiz",tugOfWar:"giaoviendoimoi.com/tug-of-war-game",interactiveImage:"giaoviendoimoi.com/interactive-image",headTiltQuiz:"giaoviendoimoi.com/head-tilt-quiz",noiseTracker:"giaoviendoimoi.com/noise-tracker",poseQuiz:"giaoviendoimoi.com/pose-quiz",journey:"giaoviendoimoi.com/journey",versusGame:"giaoviendoimoi.com/versus-game",faceRandom:"giaoviendoimoi.com/face-random",starBagGame:"giaoviendoimoi.com/star-bag-game",htmlEmbedGame:"giaoviendoimoi.com/html-embed-game",flashcard:"giaoviendoimoi.com/flashcard",mindMap:"giaoviendoimoi.com/mind-map",knowledgeTrain:"giaoviendoimoi.com/knowledge-train-game",flyingWordsGame:"giaoviendoimoi.com/flying-words-game",paperMode:"giaoviendoimoi.com/paper-mode"};function UpgradeModal({feature:o,open:u,onClose:T,bundleFeatureCode:S,bundlePrice:E,bundleToolNames:C,extendedLinkTier:_=1}){var ot;const{t:P,i18n:R}=useTranslation("common"),I=typeof o=="string"&&o.startsWith("offline_"),[L,j]=React$1.useState(!1),{currentUser:M}=useAuth(),{toast:D}=useToast(),[F,N]=React$1.useState(!1),[G,B]=React$1.useState(!1),[H,O]=React$1.useState(!1),[V,U]=React$1.useState(!1),[W,K]=React$1.useState(""),[Y,ee]=React$1.useState(null),[oe,se]=React$1.useState(""),[Q,ie]=React$1.useState(0),[ae,re]=React$1.useState(1),[J,te]=React$1.useState(null),[Z,X]=React$1.useState(!1),de=R.language!=="vi";React$1.useEffect(()=>{u||j(!1)},[u,o]);const he={interactiveVideo:{name:"Video tương tác",nameEn:"Interactive Video",limit:`${TRIAL_LIMITS.interactiveVideo||5} video`,limitEn:`${TRIAL_LIMITS.interactiveVideo||5} videos`,icon:"ð¬",bankContentName:"VIDEO"},quizGame:{name:"Kéo Thả - Ná»i Ã",nameEn:"Drag & Drop - Matching",limit:`${TRIAL_LIMITS.quizGame||10} bà i`,limitEn:`${TRIAL_LIMITS.quizGame||10} lessons`,icon:"ð®",bankContentName:"QUIZ"},panorama:{name:"Phòng ảo 360°",nameEn:"360° Virtual Room",limit:`${TRIAL_LIMITS.panorama||3} phòng`,limitEn:`${TRIAL_LIMITS.panorama||3} rooms`,icon:"ðï¸",bankContentName:"3D"},conductEvaluation:{name:"Hạnh kiá»m",nameEn:"Conduct Evaluation",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"HANHKIEM"},wheelQuiz:{name:"Vòng quay - Lượt chÆ¡i",nameEn:"Wheel Quiz - Play Sessions",limit:`${TRIAL_LIMITS.wheelQuizPlay||15} lượt chÆ¡i`,limitEn:`${TRIAL_LIMITS.wheelQuizPlay||15} play sessions`,icon:"ð¡",bankContentName:"WHEEL"},pacedQuiz:{name:"Paced Quiz",nameEn:"Paced Quiz",limit:`${TRIAL_LIMITS.pacedQuiz||5} bà i`,limitEn:`${TRIAL_LIMITS.pacedQuiz||5} lessons`,icon:"â±ï¸",bankContentName:"PACED"},flipPuzzle:{name:"Láºt mảnh ghép",nameEn:"Flip Puzzle",limit:`${TRIAL_LIMITS.flipPuzzle||5} bà i`,limitEn:`${TRIAL_LIMITS.flipPuzzle||5} lessons`,icon:"ð§©",bankContentName:"PUZZLE"}
313,crosswordPuzzle:{name:"Giải ô chữ",nameEn:"Crossword Puzzle",limit:`${TRIAL_LIMITS.crosswordPuzzle||5} bà i`,limitEn:`${TRIAL_LIMITS.crosswordPuzzle||5} lessons`,icon:"ð",bankContentName:"CROSSWORD"},handSlashQuiz:{name:"Game chém tay",nameEn:"Hand Slash Quiz",limit:`${TRIAL_LIMITS.handSlashQuiz||10} bà i`,limitEn:`${TRIAL_LIMITS.handSlashQuiz||10} lessons`,icon:"â",bankContentName:"HANDSLASH"},headTiltQuiz:{name:"Trắc nghiá»m nghiêng Äầu",nameEn:"Head Tilt Quiz",limit:`${TRIAL_LIMITS.headTiltQuiz||5} bà i`,limitEn:`${TRIAL_LIMITS.headTiltQuiz||5} lessons`,icon:"ð",bankContentName:"TILTQUIZ"},interactiveImage:{name:"Ảnh tương tác",nameEn:"Interactive Image",limit:`${TRIAL_LIMITS.interactiveImage||5} ảnh`,limitEn:`${TRIAL_LIMITS.interactiveImage||5} images`,icon:"ð¼ï¸",bankContentName:"IMAGE"},tugOfWar:{name:"Kéo co",nameEn:"Tug of War",limit:`${TRIAL_LIMITS.tugOfWar||5} trò chÆ¡i`,limitEn:`${TRIAL_LIMITS.tugOfWar||5} games`,icon:"ðª¢",bankContentName:"TUGOFWAR"},turnBasedGame:{name:"Game Theo Lượt",nameEn:"Turn-Based Game",limit:`${TRIAL_LIMITS.turnBasedGame||5} bà i`,limitEn:`${TRIAL_LIMITS.turnBasedGame||5} games`,icon:"ð²",bankContentName:"TURN"},noiseTracker:{name:"Quản lý tiếng á»n",nameEn:"Noise Tracker",limit:`${TRIAL_LIMITS.noiseTracker||1} lượt`,limitEn:`${TRIAL_LIMITS.noiseTracker||1} turn`,icon:"ð",bankContentName:"NOISE"},poseQuiz:{name:"Thá» dục ABC",nameEn:"Pose Slideshow Quiz",limit:`${TRIAL_LIMITS.poseQuiz||5} bà i`,limitEn:`${TRIAL_LIMITS.poseQuiz||5} lessons`,icon:"ð§",bankContentName:"POSEQUIZ"},journey:{name:"Hà nh Trình Há»c Táºp",nameEn:"Learning Journey",limit:`${TRIAL_LIMITS.journey||3} hà nh trình`,limitEn:`${TRIAL_LIMITS.journey||3} journeys`,icon:"ðºï¸",bankContentName:"JOURNEY"},versusGame:{name:"Game Äá»i Kháng",nameEn:"Versus Battle Game",limit:`${TRIAL_LIMITS.versusGame||5} bà i`,limitEn:`${TRIAL_LIMITS.versusGame||5} games`,icon:"âï¸",bankContentName:"VERSUS"},faceRandom:{name:"Gá»i Há»c Sinh Bằng Camera",nameEn:"Random Student Camera Picker",limit:`${TRIAL_LIMITS.faceRandom||10} lượt gá»i`,limitEn:`${TRIAL_LIMITS.faceRandom||10} sessions`,icon:"ð·",bankContentName:"FACERAND"},starBagGame:{name:"Cuá»c Äua ngôi sao",nameEn:"Star Bag Game",limit:`${TRIAL_LIMITS.starBagGame||5} bà i`,limitEn:`${TRIAL_LIMITS.starBagGame||5} games`,icon:"â",bankContentName:"STAR"},flashcard:{name:"Thẻ láºt (Flashcard)",nameEn:"Flip Cards (Flashcard)",limit:`${TRIAL_LIMITS.flashcard||5} bá» thẻ`,limitEn:`${TRIAL_LIMITS.flashcard||5} decks`,icon:"ð",bankContentName:"FLASHCARD"},htmlEmbedGame:{name:"Game tá»± tạo",nameEn:"Custom Game",limit:"Chá» Pro",limitEn:"Pro only",icon:"</>",bankContentName:"HTMLGAME"},ttsVoiceTool:{name:"AI Tạo giá»ng Äá»c",nameEn:"AI Voice Generator",limit:"Chá» Pro",limitEn:"Pro only",icon:"ðï¸",bankContentName:"TTSVOICE"},minesweeper:{name:"Dò Mìn",nameEn:"Minesweeper",limit:`${TRIAL_LIMITS.minesweeper||5} bà i`,limitEn:`${TRIAL_LIMITS.minesweeper||5} lessons`,icon:"ð§¨",bankContentName:"MINE"},mindMap:{name:"SÆ¡ Äá» Tư Duy",nameEn:"Mind Map Builder",limit:`${TRIAL_LIMITS.mindMap||5} sÆ¡ Äá»`,limitEn:`${TRIAL_LIMITS.mindMap||5} maps`,icon:"ðºï¸",bankContentName:"MINDMAP"},knowledgeTrain:{name:"Äoà n tà u tri thức",nameEn:"Knowledge Train",limit:`${TRIAL_LIMITS.knowledgeTrain||5} bà i`,limitEn:`${TRIAL_LIMITS.knowledgeTrain||5} lessons`,icon:"ð",bankContentName:"TRAIN"},flyingWordsGame:{name:"Từ ngữ biết bay",nameEn:"Flying Words",limit:`${TRIAL_LIMITS.flyingWordsGame||5} bà i`,limitEn:`${TRIAL_LIMITS.flyingWordsGame||5} lessons`,icon:"ð¦",bankContentName:"FLY"},paperMode:{name:"Chế Äá» giấy (Quét thẻ)",nameEn:"Paper Mode (Card Scan)",limit:`${TRIAL_LIMITS.paperMode||5} lượt quét`,limitEn:`${TRIAL_LIMITS.paperMode||5} scan sessions`,icon:"ð",bankContentName:"PAPER"},scavengerHunt:{name:"SÄn Kho Báu",nameEn:"Scavenger Hunt",limit:`${TRIAL_LIMITS.scavengerHunt||1} cuá»c sÄn`,limitEn:`${TRIAL_LIMITS.scavengerHunt||1} hunt`,icon:"ð",bankContentName:"HUNT"}
313,aiTool1:{name:"Viết sáng kiến kinh nghiá»m",nameEn:"Write SKKN",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT1",price:3e4},aiTool2:{name:"Biá»n pháp giáo viên giá»i",nameEn:"Teaching Methods",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT2",price:3e4},aiTool4:{name:"AI Phân tÃch hạnh kiá»m",nameEn:"Conduct Analysis",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT4",price:3e4},aiTool5:{name:"Tạo Äá» thi CV 7991",nameEn:"Exam CV7991",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT5",price:3e4},aiTool6:{name:"Tạo Äá» thi CV 7991 Tiếng Anh",nameEn:"English Exam CV7991",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð¬ð§",bankContentName:"aiT6",price:3e4},aiTool7:{name:"Tạo Äá» thi chuẩn Ngữ vÄn",nameEn:"Literature Exam",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ðï¸",bankContentName:"aiT7",price:3e4},aiTool8:{name:"Tạo Äá» thi chuyên biá»t",nameEn:"Specialized Exam",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT8",price:3e4},aiTool9:{name:"Soạn Giáo án MẦM NON tÃch hợp",nameEn:"Preschool Lesson Plan",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð§©",bankContentName:"aiT9",price:5e4},aiTool10:{name:"AI tạo sản phẩm phần má»m",nameEn:"AI Software Product",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð»",bankContentName:"aiT10",price:3e4},aiTool11:{name:"Tạo bảng tÃch hợp NL AI và o KHGD",nameEn:"AI Integration Table",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð¤",bankContentName:"aiT11",price:3e4},aiTool13:{name:"Soạn Giáo án Chuyên Äá» AI",nameEn:"AI Specialized Plan",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT13",price:3e4},aiTool14:{name:"Tạo KHGD tÃch hợp NL AI",nameEn:"AI Education Plan",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"aiT14",price:3e4},aiTool16:{name:"TÃch hợp tá»ng hợp và o giáo án",nameEn:"Combined AI Integration",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð§©",bankContentName:"aiT16",price:5e4},bundle:{name:"Gói nhiá»u công cụ AI",nameEn:"AI Tools Bundle",limit:"vÄ©nh viá»
n",limitEn:"forever",icon:"ð",bankContentName:"",price:0},aiTools:{name:"Nhóm 1 (Công cụ AI cÆ¡ bản)",nameEn:"AI Tools Group 1",limit:"không giá»i hạn",limitEn:"unlimited",icon:"ð¤",bankContentName:"AITOOLS1",price:1e5},aiToolsGroup2:{name:"Nhóm 2 (Äá» thi & Phân tÃch)",nameEn:"AI Tools Group 2",limit:"không giá»i hạn",limitEn:"unlimited",icon:"ð¥",bankContentName:"AITOOLS2",price:1e5},aiSpecialist:{name:"Nhóm 3: AI Chuyên Dụng",nameEn:"AI Tools Group 3",limit:"không giá»i hạn",limitEn:"unlimited",icon:"ð¤",bankContentName:"AITOOLS3",price:5e4},aiToolsGroup3:{name:"Nhóm 3: AI Chuyên Dụng (Nghiên cứu & Phần má»m)",nameEn:"AI Tools Group 3",limit:"không giá»i hạn",limitEn:"unlimited",icon:"ð¤",bankContentName:"AITOOLS3",price:5e4},aiToolsGroup4:{name:"Nhóm 4: TÃch hợp Khung NÄng lá»±c AI theo QÄ 3439",nameEn:"AI Tools Group 4",limit:"không giá»i hạn",limitEn:"unlimited",icon:"ð¤",bankContentName:"AITOOLS4",price:1e5},extendedLink:{name:"Duy trì Link Bà i Táºp Dà i Hạn",nameEn:"Extended Assignment Duration",limit:"1 nÄm",limitEn:"1 year",icon:"â°",bankContentName:"EXTLINK",price:5e4},nhanxetExtension:{name:"Extension Nháºn xét môn há»c, há»c bạ VnEdu, CSDL ngà nh GD",nameEn:"School DB Comment Chrome Extension",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"NHANXET",price:3e4},formatiW:{name:"CÄn chá»nh Nghá» Äá»nh 30",nameEn:"Decree 30 Document Formatter",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"FORMATW",price:3e4},pasteAi:{name:"Chuyá»n Äá»i AI sang DOCX",nameEn:"AI Text to DOCX Converter",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"PASTEAI",price:3e4},chuanNgheNghiep:{name:"Extension Äánh giá chuẩn nghá» nghiá»p giáo viên",nameEn:"Teacher Professional Standards Extension",limit:"1 nÄm",limitEn:"1 year",icon:"ð
",bankContentName:"CHUANNN",price:3e4},addInWord:{name:"Add-in Word GVDM",nameEn:"GVDM Word Add-in",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"ADDINW",price:5e4},mathAssistant:{name:"Trợ lý cho GV Toán (Add-in Word)",nameEn:"Math Teacher Assistant (Word Add-in)",limit:"1 nÄm",limitEn:"1 year",icon:"ð",bankContentName:"TLGVT",price:5e4},fullAiPlan:{name:"FullAI PLAN â Trá»n bá» Công cụ AI",nameEn:"FullAI PLAN â All AI Tools",limit:"tất cả công cụ AI (ká» cả tương lai)",limitEn:"all AI tools (incl. future tools)",icon:"ð¤",bankContentName:"FULLAI",price:25e4}
313,fullTienIch:{name:"FullTienIch â Trá»n bá» Tiá»n Ãch Edutech",nameEn:"FullTienIch â All Edutech Extensions",limit:"tất cả tiá»n Ãch Edutech Extensions",limitEn:"all Edutech Extensions",icon:"ð§©",bankContentName:"FULLTIENICH",price:1e5},proPlan:{name:"FullGame",nameEn:"FullGame",limit:"5 game/tool tương tác",limitEn:"all interactive games/tools",icon:"ð",bankContentName:"PROPLAN"}},ne=o||"",ue=typeof ne=="string"&&ne.startsWith("offline_"),ce=ue?ne.replace("offline_",""):ne,fe=typeof ne=="string"&&(ne.startsWith("aiTools")||ne.startsWith("aiTool")),ve=ne==="bundle",Te=/^aiTool\d+$/.test(ne),Se=he[ce]||he.interactiveVideo;let ke=5e4,we=Se.bankContentName;ve?(ke=E||0,we=S||""):Te?(ke=Se.price??PAYMENT_CONFIG.PLANS.AI_TOOL_SINGLE,we=Se.bankContentName):ue?(ke=PAYMENT_CONFIG.PLANS.OFFLINE,we=`O${Se.bankContentName}`):o==="aiTools"?(ke=PAYMENT_CONFIG.PLANS.AI_TOOLS_GROUP1,we="AITOOLS1"):o==="aiToolsGroup2"?(ke=PAYMENT_CONFIG.PLANS.AI_TOOLS_GROUP2,we="AITOOLS2"):o==="aiToolsGroup3"||o==="aiSpecialist"?(ke=PAYMENT_CONFIG.PLANS.AI_SPEC,we="AITOOLS3"):o==="aiToolsGroup4"?(ke=PAYMENT_CONFIG.PLANS.AI_TOOLS_GROUP2,we="AITOOLS4"):o==="proPlan"?(ke=PAYMENT_CONFIG.PLANS.PRO,we="PROPLAN"):o==="fullAiPlan"?(ke=PAYMENT_CONFIG.PLANS.FULL_AI_PLAN,we="FULLAI"):o==="fullTienIch"?(ke=PAYMENT_CONFIG.PLANS.FULL_TIEN_ICH,we="FULLTIENICH"):o==="extendedLink"?(ke=((ot=PAYMENT_CONFIG.PLANS.EXTLINK_TIER)==null?void 0:ot[_])??PAYMENT_CONFIG.PLANS.EXTLINK??5e4,we=`EXTLINK${_}Y`):o==="nhanxetExtension"?(ke=3e4,we="NHANXET"):o==="formatiW"?(ke=3e4,we="FORMATW"):o==="pasteAi"?(ke=3e4,we="PASTEAI"):o==="chuanNgheNghiep"?(ke=3e4,we="CHUANNN"):o==="addInWord"?(ke=5e4,we="ADDINW"):o==="mathAssistant"?(ke=5e4,we="TLGVT"):ke=PAYMENT_CONFIG.PLANS.OTHER_TOOLS;const Le=PAYMENT_CONFIG.MULTI_YEAR_DISCOUNTS||{},pe=!ue&&o!=="aiTools"&&o!=="aiToolsGroup2"&&o!=="aiToolsGroup3"&&o!=="aiSpecialist"&&o!=="aiToolsGroup4"&&o!=="extendedLink",Me=pe&&!ve?getBonusMonths(o):0,Pe=(M==null?void 0:M.uid)||"UNKNOWN_UID",{price:Ue,multiYearDiscountPct:qe,transferContent:Ie,qrUrl:Xe}=usePaymentQr({featureCode:we,basePrice:ke,uid:Pe,appliedPromo:Y,years:ae,multiYear:pe}),et=Ue,tt=de?Se.nameEn:Se.name,Ye=o==="extendedLink"?P("upgradeModal.maxYearsDuration",{tier:_}):pe?P("upgradeModal.yearsDuration",{years:ae}):P("upgradeModal.foreverDuration"),ze=TRIAL_LIMITS[ce]!==void 0,Ze=ve?(C||[]).map(je=>({label:je,free:P("upgradeModal.notUnlocked"),paid:P("upgradeModal.unlockForever")})):o==="proPlan"?getProComparisonRows(P):o==="extendedLink"?[{label:tt,free:P("upgradeModal.assignment15DaysComparison"),paid:P("upgradeModal.assignmentMaxTierComparison",{tier:_})}]:[{label:tt,free:ze?de?Se.limitEn:Se.limit:P("upgradeModal.notUnlocked"),paid:ze?P("upgradeModal.unlimitedDuration",{duration:Ye}):P("upgradeModal.unlockDuration",{duration:Ye})}],He=React$1.useRef(null),rt=React$1.useRef(T),it=React$1.useRef(D);React$1.useEffect(()=>{rt.current=T},[T]),React$1.useEffect(()=>{it.current=D},[D]),React$1.useEffect(()=>{u||(K(""),ee(null),se(""),ie(0),re(1),O(!1),B(!1),X(!1))},[u]),React$1.useEffect(()=>{if(!u||!(M!=null&&M.uid))return;N(!0);const je=onSnapshot(doc(db,"subscriptions",M.uid),Be=>{var mt,xt,vt,yt,Je;if(!Be.exists())return;const Qe=Be.data();if(te(Qe),!He.current){He.current=Qe;return}const Ge=He.current;let We=!1;if(we.startsWith("O")&&we.length>1){const $e={OVIDEO:"interactivevideo",OQUIZ:"quizgame",O3D:"panorama",OROBOT:"companionrobot",OWHEEL:"wheelquiz",OPACED:"pacedquiz",OPUZZLE:"flippuzzle",OCROSSWORD:"crosswordpuzzle",OHANDSLASH:"handslashquiz",OTUGOFWAR:"tugofwar",OIMAGE:"interactiveimage",OTILTQUIZ:"headtiltquiz",ONOISE:"noisetracker"}[we.toUpperCase()];$e&&(We=((mt=Qe.offlineDownloads)==null?void 0:mt[$e])===!0)}else{if(we.toUpperCase().startsWith("BDL"))for(let De=1;De<=16;De++){const $e=`aiTool${De}`,ht=`aiTool${De}ExpiresAt`;if(!Ge[$e]&&Qe[$e]||!Ge[ht]&&Qe[ht]&&new Date(Qe[ht])>new Date){We=!0;break}}if(!We){const De=we.match(/aiT\d+/gi);if(De){const $e={ait1:"aiTool1",ait2:"aiTool2",ait4:"aiTool4",ait5:"aiTool5",ait6:"aiTool6",ait7:"aiTool7",ait8:"aiTool8",ait9:"aiTool9",ait10:"aiTool10",ait11:"aiTool11",ait13:"aiTool13",ait14:"aiTool14",ait16:"aiTool16"};We=De.some(ht=>{const ut=$e[ht.toLowerCase()];return ut&&!Ge[ut]&&Qe[ut]}),We||(We=De.some(ht=>{const ut=$e[ht.toLowerCase()];if(!ut)return!1;
313const ft=ut+"ExpiresAt";return!Ge[ft]&&Qe[ft]&&new Date(Qe[ft])>new Date}))}}if(!We)switch(we.toUpperCase()){case"PROPLAN":if(We=!((xt=Ge.proPlan)!=null&&xt.isPurchased)&&((vt=Qe.proPlan)==null?void 0:vt.isPurchased),!We){const De=Ge.proPlanExpiresAt,$e=Qe.proPlanExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date}break;case"FULLAI":{const De=Ge.fullAiPlanExpiresAt,$e=Qe.fullAiPlanExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"FULLTIENICH":{const De=Ge.fullTienIchExpiresAt,$e=Qe.fullTienIchExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"AITOOLS1":We=!Ge.aiToolsUnlocked&&Qe.aiToolsUnlocked;break;case"AITOOLS2":We=!Ge.aiToolsGroup2Unlocked&&Qe.aiToolsGroup2Unlocked;break;case"AITOOLS3":case"AISPEC":We=!Ge.aiSpecialistUnlocked&&Qe.aiSpecialistUnlocked;break;case"AITOOLS4":We=!Ge.aiToolsGroup4Unlocked&&Qe.aiToolsGroup4Unlocked;break;case"HANHKIEM":We=((yt=Ge.conductEvaluation)==null?void 0:yt.status)!=="pro"&&((Je=Qe.conductEvaluation)==null?void 0:Je.status)==="pro";break;case"NHANXET":{const De=Ge.nhanxetExtensionExpiresAt,$e=Qe.nhanxetExtensionExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"FORMATW":{const De=Ge.formatiWExpiresAt,$e=Qe.formatiWExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"PASTEAI":{const De=Ge.pasteAiExpiresAt,$e=Qe.pasteAiExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"CHUANNN":{const De=Ge.chuanNgheNghiepExtensionExpiresAt,$e=Qe.chuanNgheNghiepExtensionExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"ADDINW":{const De=Ge.addInWordExpiresAt,$e=Qe.addInWordExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}case"TLGVT":{const De=Ge.mathAssistantExpiresAt,$e=Qe.mathAssistantExpiresAt;We=(!De||new Date(De)<=new Date)&&$e&&new Date($e)>new Date,!We&&De&&$e&&$e!==De&&new Date($e)>new Date(De)&&(We=!0);break}default:{const $e={VIDEO:"interactiveVideo",QUIZ:"quizGame","3D":"panorama",ROBOT:"companionRobot",WHEEL:"wheelQuiz",PACED:"pacedQuiz",PUZZLE:"flipPuzzle",CROSSWORD:"crosswordPuzzle",HANDSLASH:"handSlashQuiz",TUGOFWAR:"tugOfWar",IMAGE:"interactiveImage",TILTQUIZ:"headTiltQuiz",NOISE:"noiseTracker",POSEQUIZ:"poseQuiz",STAR:"starBagGame",HTMLGAME:"htmlEmbedGame",TTSVOICE:"ttsVoiceTool",FLASHCARD:"flashcard",MINDMAP:"mindMap",FLY:"flyingWordsGame",PAPER:"paperMode",HUNT:"scavengerHunt"}[we.toUpperCase()];if($e){const ht=$e+"ExpiresAt",ut=Ge[ht],ft=Qe[ht],Ct=(!ut||new Date(ut)<=new Date)&&ft&&new Date(ft)>new Date,Et=$e+"Count",_t=(Ge[Et]||0)<999999&&(Qe[Et]||0)>=999999,At=ut&&ft&&ft!==ut&&new Date(ft)>new Date(ut||0);We=Ct||_t||At}}}}We&&(N(!1),it.current.success(P("upgradeModal.paymentSuccess")),setTimeout(()=>{rt.current(),o!=="nhanxetExtension"&&window.location.reload()},2e3)),He.current=Qe});return()=>{je(),N(!1),He.current=null,te(null)}},[u,M==null?void 0:M.uid,we]);const st=React$1.useMemo(()=>{var Qe;let je=new Date;if(J){let Ge=null;if(o==="conductEvaluation")Ge=(Qe=J.conductEvaluation)==null?void 0:Qe.proExpiresAt;else if(o==="proPlan")Ge=J.proPlanExpiresAt;else if(o==="fullAiPlan")Ge=J.fullAiPlanExpiresAt;else if(o==="fullTienIch")Ge=J.fullTienIchExpiresAt;else if(o==="extendedLink")Ge=J.extendedAssignmentExpiresAt;else{const mt={interactiveVideo:"interactiveVideo",quizGame:"quizGame",panorama:"panorama",companionRobot:"companionRobot",wheelQuiz:"wheelQuiz",pacedQuiz:"pacedQuiz",flipPuzzle:"flipPuzzle",crosswordPuzzle:"crosswordPuzzle",handSlashQuiz:"handSlashQuiz",tugOfWar:"tugOfWar",interactiveImage:"interactiveImage",headTiltQuiz:"headTiltQuiz",noiseTracker:"noiseTracker",poseQuiz:"poseQuiz"}[ce]||ce;Ge=J[mt+"ExpiresAt"]}if(Ge){const We=Ge.toDate?Ge.toDate():new Date(Ge);We>je&&(je=We)}}const Be=new Date(je);return Be.setFullYear(je.getFullYear()+ae),Be.toLocaleDateString("vi-VN")},[J,o,ce,ae]);if(I&&u&&!L){const je=o.replace("offline_","");return jsxRuntimeExports.jsx(OfflineWarningDialog,{open:!0,onClose:T,featureName:je,onConfirm:()=>j(!0)})}return G||de&&!H?jsxRuntimeExports.jsxs(Dialog,{open:u,onClose:()=>{T(),B(!1)},maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{backgroundImage:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"}},children:[jsxRuntimeExports.jsx(DialogTitle,{sx:{background:"linear-gradient(135deg, #1a1a2e, #16213e)",color:"white",fontWeight:"bold",fontSize:"1.3rem",textAlign:"center",paddingBottom:2},children:P("internationalModal.title")}),jsxRuntimeExports.jsxs(DialogContent,{sx:{background:"rgba(255, 255, 255, 0.95)",py:3},children:[jsxRuntimeExports.jsx(Typography,{variant:"body1",sx:{mb:2,color:"#444",textAlign:"center"},children:P("internationalModal.description")}),jsxRuntimeExports.jsxs(Box,{sx:{my:2,p:2,bgcolor:"#eff6ff",border:"2px s
313olid #2563eb",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:"bold",mb:1,color:"#1e40af"},children:P("internationalModal.pricingTitle")}),jsxRuntimeExports.jsx("ul",{style:{margin:"0 0 0 12px",paddingLeft:0,lineHeight:1.8},children:Array.isArray(P("internationalModal.features",{returnObjects:!0}))&&P("internationalModal.features",{returnObjects:!0}).map(je=>jsxRuntimeExports.jsxs("li",{style:{fontSize:"0.9rem",color:"#374151",marginBottom:6},children:["â
",je]},je))})]}),jsxRuntimeExports.jsxs(Box,{sx:{my:2,p:2,bgcolor:"#fff3e0",border:"2px solid #ff9800",borderRadius:2},children:[jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:"bold",mb:1,color:"#e65100"},children:P("internationalModal.howToTitle")}),jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{mb:1},children:["1. ",P("internationalModal.step1")]}),jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{mb:1},children:["2. ",P("internationalModal.step2")]}),jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{mt:1,p:1,bgcolor:"#ffebee",borderRadius:1,border:"1px dashed #d32f2f",color:"#d32f2f",fontWeight:"bold"},children:["3. ",P("internationalModal.step3")]})]}),jsxRuntimeExports.jsx(Alert,{severity:"info",sx:{textAlign:"left",mb:2},children:jsxRuntimeExports.jsx(Typography,{variant:"body2",children:P("internationalModal.note")})}),jsxRuntimeExports.jsx(Box,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:1.5,mt:2},children:jsxRuntimeExports.jsx(Button,{variant:"contained",size:"large",fullWidth:!0,onClick:()=>window.open(BMAC_URL,"_blank"),sx:{py:1.2,fontSize:"1rem",fontWeight:"bold",background:"linear-gradient(135deg, #FFDD00, #FBB034)",color:"#000","&:hover":{background:"linear-gradient(135deg, #FBB034, #FFDD00)"}},children:P("internationalModal.payBtn")})})]}),jsxRuntimeExports.jsxs(DialogActions,{sx:{p:2,background:"rgba(255, 255, 255, 0.9)",gap:1},children:[jsxRuntimeExports.jsxs(Button,{onClick:()=>{B(!1),O(!0)},variant:"outlined",color:"success",size:"small",sx:{mr:"auto"},children:["ð»ð³ ",P("internationalModal.hasVnAccount")]}),jsxRuntimeExports.jsx(Button,{onClick:()=>{T(),B(!1),O(!1)},variant:"outlined",children:P("internationalModal.closeBtn")})]})]}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs(Dialog,{open:u,onClose:T,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderRadius:3}},children:[jsxRuntimeExports.jsxs(DialogTitle,{sx:{background:ue?"#b71c1c":o==="nhanxetExtension"||o==="chuanNgheNghiep"?"linear-gradient(135deg, #667eea, #764ba2)":"#f44336",color:"white",fontWeight:"bold",py:1,fontSize:"1.05rem",textAlign:"center"},children:[Se.icon," ",ue?P("upgradeModal.offlineTitle"):o==="nhanxetExtension"||o==="chuanNgheNghiep"?"Mua Extension":P("upgradeModal.title")," â ",de?Se.nameEn:Se.name]}),jsxRuntimeExports.jsxs(DialogContent,{sx:{py:1.5,px:2.5},children:[ve&&C&&C.length>0&&jsxRuntimeExports.jsxs(Box,{sx:{mb:1.5,p:1,bgcolor:"#f0fdf4",border:"1.5px solid #86efac",borderRadius:2},children:[jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{fontWeight:700,color:"#166534",mb:.25},children:["ð ",P("upgradeModal.bundleSelectedCount",{count:C.length})]}),C.map((je,Be)=>jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{color:"#15803d",ml:1,lineHeight:1.5},children:["â ",je]},Be))]}),jsxRuntimeExports.jsx(Alert,{severity:"info",sx:{mb:1.5,py:.5},children:jsxRuntimeExports.jsxs(Typography,{variant:"body2",children:[ve?P("upgradeModal.bundleSelectedHint"):ue?P("upgradeModal.offlineBenefitTitle"):o==="aiSpecialist"?P("upgradeModal.unlockRequired"):Te?P("upgradeModal.singleAiToolHint"):fe?P("upgradeModal.aiToolsGroupHint"):o==="journey"?P("upgradeModal.journeyHint"):o==="versusGame"?P("upgradeModal.versus1v1Hint"):o==="extendedLink"?P("upgradeModal.assignment15DaysHint"):o==="htmlEmbedGame"||o==="ttsVoiceTool"?P("upgradeModal.genericUnlockRequired"):o==="nhanxetExtension"?P("upgradeModal.extCommentsDesc"):o==="addInWord"?P("upgradeModal.extWordAddinDesc"):o==="mathAssistant"?P("upgradeModal.extMathAddinDesc"):o==="formatiW"?P("upgradeModal.extAlignDocxDesc"):o==="pasteAi"?P("upgradeModal.extAiToDocxDesc"):o==="chuanNgheNghiep"?P("upgradeModal.extTeacherStandardDesc"):o==="fullAiPlan"?P("upgradeModal.aiBundleDesc",{price:ke.toLocaleStr
313ing("vi-VN")}):o==="fullTienIch"?P("upgradeModal.edutechBundleDesc",{price:ke.toLocaleString("vi-VN")}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[P("upgradeModal.freeLimit")," ",jsxRuntimeExports.jsx("strong",{children:de?Se.limitEn:Se.limit})," ",P("upgradeModal.differentClasses")]}),ue&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[" ",P("upgradeModal.offlineGuide")," ",jsxRuntimeExports.jsx("a",{href:"https://youtu.be/oIOQ4BJkDc0",target:"_blank",rel:"noopener noreferrer",children:P("upgradeModal.here")})]}),o==="conductEvaluation"&&jsxRuntimeExports.jsx(Box,{component:"span",sx:{display:"block",color:"#1565c0",mt:.5},children:P("upgradeModal.evaluationYear",{date:st,selectedYears:ae})}),o==="fullAiPlan"&&jsxRuntimeExports.jsxs(Box,{component:"span",sx:{display:"block",mt:.75,p:1,bgcolor:"#fff3e0",border:"2px solid #e65100",borderRadius:1,textAlign:"left"},children:[jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{fontWeight:700,color:"#bf360c",mb:.25,display:"block",lineHeight:1.4},children:P("upgradeModal.aiBundleHeader")}),jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#bf360c",ml:1,lineHeight:1.45,display:"block"},children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.aiBundleFeatures",children:["⢠Toà n bá» công cụ AI trả phà hiá»n có + má»i tool má»i ra mắt sau nà y",jsxRuntimeExports.jsx("br",{}),"⢠Hiá»u lá»±c theo nÄm, có thá» gia hạn cá»ng dá»n"]})}),jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#b71c1c",fontWeight:700,mt:.5,display:"block",lineHeight:1.4},children:P("upgradeModal.aiBundleExcludes")})]}),o==="fullTienIch"&&jsxRuntimeExports.jsxs(Box,{component:"span",sx:{display:"block",mt:.75,p:1,bgcolor:"#fff3e0",border:"2px solid #e65100",borderRadius:1,textAlign:"left"},children:[jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{fontWeight:700,color:"#bf360c",mb:.25,display:"block",lineHeight:1.4},children:P("upgradeModal.edutechBundleHeader")}),jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#bf360c",ml:1,lineHeight:1.45,display:"block"},children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.edutechBundleFeatures",children:["⢠Nháºn xét CSDL, Chuẩn nghá» nghiá»p, Chuyá»n AIâDOCX (30.000Ä/nÄm má»i tiá»n Ãch)",jsxRuntimeExports.jsx("br",{}),"⢠Add-in Word GVDM (50.000Ä/nÄm) · Hiá»u lá»±c theo nÄm, gia hạn cá»ng dá»n"]})}),jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#b71c1c",fontWeight:700,mt:.5,display:"block",lineHeight:1.4},children:P("upgradeModal.edutechBundleExcludes")})]}),o==="extendedLink"&&jsxRuntimeExports.jsx(Box,{component:"span",sx:{display:"block",color:"#7c3aed",mt:.5,fontWeight:600},children:P("upgradeModal.extendedLinkBenefit",{tier:_})}),(o==="tugOfWar"||o==="minesweeper"||o==="flipPuzzle"||o==="knowledgeTrain"||o==="turnBasedGame")&&jsxRuntimeExports.jsx(Box,{component:"span",sx:{display:"block",color:"#16a34a",mt:.5,fontWeight:600},children:P("upgradeModal.downloadOfflineBenefit")}),(fe||ne==="aiSpecialist")&&!Te&&!ve&&jsxRuntimeExports.jsxs(Box,{component:"span",sx:{display:"block",mt:.75,p:1,bgcolor:"#fff3e0",border:"2px solid #e65100",borderRadius:1,textAlign:"left"},children:[jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{fontWeight:700,color:"#bf360c",mb:.25,display:"block",lineHeight:1.4},children:jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.legacyAiUnlockHeader",children:["â ï¸ Khi má» khóa, bạn sá» hữu ",jsxRuntimeExports.jsx("u",{children:"VĨNH VIá»N TẤT CẢ"})," các công cụ sau:"]})}),jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#bf360c",ml:1,lineHeight:1.45,display:"block"},children:o==="aiToolsGroup4"?jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.aiGroup4Features",children:["⢠Tạo bảng tÃch hợp NL AI và o KHGD",jsxRuntimeExports.jsx("br",{}),"⢠Soạn Giáo án TÃch hợp AI",jsxRuntimeExports.jsx("br",{}
313),"⢠Soạn Giáo án Chuyên Äá» AI",jsxRuntimeExports.jsx("br",{}),"⢠Tà i liá»u táºp huấn NÄng lá»±c AI (miá»
n phÃ)"]}):o==="aiSpecialist"||o==="aiToolsGroup3"?jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.aiGroup3Features",children:["⢠Viết báo cáo kỹ thuáºt (NCKH)",jsxRuntimeExports.jsx("br",{}),"⢠Tạo sản phẩm phần má»m (AI App)"]}):o==="aiTools"?jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.aiGroup1Features",children:["⢠Viết sáng kiến kinh nghiá»m",jsxRuntimeExports.jsx("br",{}),"⢠Biá»n pháp giáo viên giá»i",jsxRuntimeExports.jsx("br",{}),"⢠Giáo án tÃch hợp NLS",jsxRuntimeExports.jsx("br",{}),"⢠Phân tÃch há»c bạ (Sá» theo dõi)"]}):jsxRuntimeExports.jsxs(Trans,{i18nKey:"upgradeModal.aiGroup2Features",children:["⢠Tạo Äá» thi theo CV 7991",jsxRuntimeExports.jsx("br",{}),"⢠Tạo Äá» thi CV 7991 Tiếng Anh",jsxRuntimeExports.jsx("br",{}),"⢠Tạo Äá» thi chuẩn Ngữ vÄn",jsxRuntimeExports.jsx("br",{}),"⢠Công cụ Phân tÃch Äá» thi"]})})]}),!ue&&!fe&&!ve&&!Te&&ne!=="aiSpecialist"&&ne!=="conductEvaluation"&&ne!=="proPlan"&&ne!=="extendedLink"&&ne!=="aiToolsGroup4"&&ne!=="nhanxetExtension"&&ne!=="formatiW"&&ne!=="pasteAi"&&ne!=="chuanNgheNghiep"&&ne!=="addInWord"&&ne!=="mathAssistant"&&ne!=="fullAiPlan"&&ne!=="fullTienIch"&&jsxRuntimeExports.jsxs(Box,{component:"span",sx:{display:"block",color:"#1565c0",mt:.5},children:["ð ",P("upgradeModal.expiryDateInfo",{date:st})]}),!ue&&ce==="interactiveVideo"&&!fe&&!ve&&!Te&&jsxRuntimeExports.jsx(Box,{component:"span",sx:{display:"block",color:"#1565c0",mt:.5},children:P("upgradeModal.interactiveVideoDownload")}),!ue&&!fe&&!ve&&!Te&&ne!=="aiSpecialist"&&ne!=="conductEvaluation"&&ne!=="journey"&&ne!=="versusGame"&&ne!=="extendedLink"&&ne!=="aiToolsGroup4"&&ne!=="nhanxetExtension"&&ne!=="formatiW"&&ne!=="pasteAi"&&ne!=="chuanNgheNghiep"&&ne!=="addInWord"&&ne!=="mathAssistant"&&ne!=="fullAiPlan"&&ne!=="fullTienIch"&&jsxRuntimeExports.jsx(Box,{component:"span",sx:{display:"block",color:"#e65100",mt:.5},children:o==="htmlEmbedGame"||o==="ttsVoiceTool"?P("upgradeModal.postExpiryWarning"):P("upgradeModal.expiryWarning",{count:TRIAL_LIMITS[ce]||5})}),!ue&&!fe&&!ve&&!Te&&ne!=="aiSpecialist"&&ne!=="conductEvaluation"&&ne!=="proPlan"&&ne!=="journey"&&ne!=="versusGame"&&ne!=="extendedLink"&&ne!=="aiToolsGroup4"&&ne!=="nhanxetExtension"&&ne!=="formatiW"&&ne!=="pasteAi"&&ne!=="chuanNgheNghiep"&&ne!=="addInWord"&&ne!=="mathAssistant"&&ne!=="fullAiPlan"&&ne!=="fullTienIch"&&jsxRuntimeExports.jsx(Box,{sx:{display:"block",mt:1,p:1,bgcolor:"#ffebee",border:"2px dashed #d32f2f",borderRadius:1,textAlign:"center",animation:"pulseWarning 2s ease-in-out infinite","@keyframes pulseWarning":{"0%, 100%":{borderColor:"#d32f2f",bgcolor:"#ffebee"},"50%":{borderColor:"#f44336",bgcolor:"#ffcdd2"}}},children:jsxRuntimeExports.jsx(Typography,{component:"span",variant:"body2",sx:{color:"#b71c1c",fontWeight:"bold",fontSize:"0.85rem",letterSpacing:"0.02em"},children:P("upgradeModal.expiryWarningNoAudio")})})]})}),o==="proPlan"&&jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",gap:1.5,mb:1.5,flexWrap:{xs:"wrap",sm:"nowrap"}},children:[jsxRuntimeExports.jsxs(Box,{sx:{flex:1,p:1,bgcolor:"#f0fdf4",border:"1px solid #86efac",borderRadius:1.5},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:900,color:"#1565c0",mb:.5,fontSize:"0.82rem"},children:P("proModal.unlockBenefits")}),jsxRuntimeExports.jsxs(Box,{component:"ul",sx:{m:0,pl:2,fontSize:"0.85rem",lineHeight:1.7,color:"#1a3a1a"},children:[jsxRuntimeExports.jsxs("li",{children:["â¾ï¸ ",jsxRuntimeExports.jsxs(Trans,{i18nKey:"proModal.unlimitedGames",ns:"common",children:["Tạo ",jsxRuntimeExports.jsx("strong",{children:"không giá»i hạn"})," game giảng dạy, trò chÆ¡i, video,..."]})]}),jsxRuntimeExports.jsxs("li",{children:["ðï¸ ",jsxRuntimeExports.jsxs(Trans,{i18nKey:"proModal.audioAndReport",ns:"common",children:[jsxRuntimeExports.jsx("strong",{children:"Có thá» tải/thu âm"})," và o câu há»i/Äáp án. ",jsxRuntimeExports.jsx("strong",{children:"Nháºn Báo cáo chi tiết khi giao bà i cho há»c sinh"})]})]})]})]}),jsxRuntimeExports.jsxs(Box,{sx:{flex:1,display:"flex",alignItems:"center",gap:.8,p:1,bgcolor:"#ffebee",border:"2px s
313olid #f44336",borderRadius:1.5,animation:"warnPulse 2s ease-in-out infinite","@keyframes warnPulse":{"0%, 100%":{borderColor:"#f44336"},"50%":{borderColor:"#b71c1c"}}},children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"1.4rem",flexShrink:0},children:"ð«"}),jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{color:"#b71c1c",fontWeight:900,fontSize:"0.78rem",lineHeight:1.5},children:[P("proModal.notIncluded"),jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsxs(Trans,{i18nKey:"proModal.excludedServices",ns:"common",children:[jsxRuntimeExports.jsx("span",{style:{fontWeight:700},children:"Các Công cụ AI, các Tiá»n Ãch GD"})," & ",jsxRuntimeExports.jsx("span",{style:{fontWeight:700},children:"Mô phá»ng bà i dạy, Khóa há»c, Giáo viên chá»§ nhiá»m"})]}),jsxRuntimeExports.jsxs(Box,{component:"span",sx:{display:"block",fontSize:"0.72rem",mt:.3},children:["(",jsxRuntimeExports.jsx("a",{href:"https://giaoviendoimoi.com/ai-tools",target:"_blank",rel:"noopener noreferrer",style:{color:"#1565c0",fontWeight:700},children:P("proModal.buyAiTools")})," · ",jsxRuntimeExports.jsx("a",{href:"https://giaoviendoimoi.com/tien-ich-giao-duc",target:"_blank",rel:"noopener noreferrer",style:{color:"#1565c0",fontWeight:700},children:P("proModal.buyEdutech")}),")"]})]})]})]}),jsxRuntimeExports.jsx(FeatureComparisonTable,{buttonLabel:o==="proPlan"?P("proModal.compareProFree"):ve?P("upgradeModal.compareAiBundle"):fe||Te?P("upgradeModal.compareFeature",{name:tt}):P("upgradeModal.compareUpgradeFeature",{name:tt}),paidColumnLabel:o==="proPlan"?"FullGame":P("upgradeModal.paidColumnLabel"),rows:Ze}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",gap:1.5,alignItems:"flex-start",flexWrap:{xs:"wrap",md:"nowrap"}},children:[jsxRuntimeExports.jsxs(Box,{sx:{flex:"1 1 170px",minWidth:0,display:"flex",flexDirection:"column",alignItems:"stretch"},children:[Me>0&&jsxRuntimeExports.jsxs(Box,{sx:{mb:1,px:1.25,py:.6,width:"100%",bgcolor:"#fff8e1",border:"2px solid #f57f17",borderRadius:2,textAlign:"center",animation:"promoPulse 1.8s ease-in-out infinite","@keyframes promoPulse":{"0%, 100%":{borderColor:"#f57f17",bgcolor:"#fff8e1"},"50%":{borderColor:"#ff6f00",bgcolor:"#fff3cd"}}},children:[jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:900,color:"#e65100",fontSize:"0.88rem"},children:P("upgradeModal.promoMayTitle")}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:700,color:"#bf360c",fontSize:"0.82rem"},children:jsxRuntimeExports.jsx(Trans,{i18nKey:"upgradeModal.promoBonusDesc",values:{bonus:Me},components:{strong:jsxRuntimeExports.jsx("strong",{})}})}),jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#e65100"},children:P("upgradeModal.promoValidUntil",{date:getPromoEndLabel()})})]}),pe&&jsxRuntimeExports.jsx(Typography,{sx:{fontSize:"0.82rem",fontWeight:700,color:"#333",mb:.5,textAlign:"center"},children:P("upgradeModal.selectYearsLabel")}),pe&&jsxRuntimeExports.jsx(Box,{sx:{display:"flex",gap:.5,flexWrap:"wrap",justifyContent:"center"},children:(ne==="mathAssistant"?[1,2,3]:[1,2,3,5]).map(je=>{const Be=Le[je]||0;return jsxRuntimeExports.jsxs(Box,{sx:{position:"relative"},children:[jsxRuntimeExports.jsxs(Button,{variant:ae===je?"contained":"outlined",color:"success",size:"small",onClick:()=>re(je),sx:{minWidth:"44px",px:.5,py:.3,fontSize:"0.74rem"},children:[je," ",P("upgradeModal.years")||"nÄm"]}),Be>0&&jsxRuntimeExports.jsxs(Box,{sx:{position:"absolute",top:-7,right:-7,bgcolor:"#f44336",color:"#fff",fontSize:"0.55rem",fontWeight:"bold",borderRadius:"8px",px:"3px",py:"1px",lineHeight:1.4,pointerEvents:"none"},children:["-",Be,"%"]})]},je)})}),pe&&!ve&&!(fe&&!Te)&&!ue&&jsxRuntimeExports.jsx(Button,{variant:"contained",fullWidth:!0,size:"small",onClick:()=>X(!0),sx:{mt:1,background:"linear-gradient(135deg, #22c55e, #16a34a)",color:"#fff",fontWeight:900,fontSize:"0.82rem",letterSpacing:"0.02em",border:"2px solid #15803d","&:hover":{background:"linear-gradient(135deg, #16a34a, #15803d)"}},children:P("upgradeModal.groupBuyBtn")}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",flexDirection:"column",gap:.75,mt:1,alignItems:"center"},children:[jsxRuntimeExports.jsx(TextField,{size:"small",placeholder:P("upgradeModal.promoPlaceholder")||"Mã giảm giá (nếu có)...",value:W,onChange:je=>K(je.target.value),disabled:!!Y,error:!!oe,helperText:oe,fullWidth:!0,sx:{bgcolor:"#fff",borderRadius:1},InputProps:{sx:{height:"36px"}}}),Y?jsxRuntimeExports.jsx(Button,{variant:"outlined",color:"error",size:"small",onClick:()=>{ee(null),K(""),se("")},sx:{height:"36px",minWidth:"90px"},children:P("upgradeModal.deleteBtn")||"Xóa"}):jsxRuntimeExports.jsx(Button,{variant:"contained",color:"primary",size:"small",onClick:()=>{const je=W.trim().toUpperCase();if(!je){se(P("upgradeModal.promoCodeRequired"));return}const Be=PAYMENT_CONFIG.PROMO_CODES?PAYMENT_CONFIG.PROMO_CODES[je]:void 0;if(Be)ee({code:je,discount:Be}),se(""),ie(0);else{const Qe=Q+1;ie(Qe),Qe>=3?(D.error(P("upgradeModal.promoCodeInvalidToast")),T()):se(P("upgradeModal.promoCodeInvalid"))}},sx:{height:"36px",minWidth:"90px",flexShrink:0},children:P("upgradeModal.applyBtn")||"Ãp dụng"})]}),jsxRuntimeExports.jsxs(Typography,{sx:{mt:1,fontSize:"0.86rem",fontWeight:900,color:"#d32f2f",textAlign:"center",lineHeight:1.3},children:[P("upgradeModal.scanQrPrompt")," â¡ï¸"]})]}),jsxRuntimeExports.jsxs(Box,{sx:{flex:"0 0 auto",display:"flex",flexDirection:"column",alignItems:"center",width:230},children:[jsxRuntimeExports.jsx("img",{src:Xe,alt:P("upgradeModal.qrAlt"),style:{width:"200px",height:"200px",borderRadius:8}}),jsxRuntimeExports.jsxs(Box,{sx:{mt:1,p:1.25,bgcolor:"#fff3cd",border:"2px s
313olid #ffc107",borderRadius:2,textAlign:"center",width:"100%"},children:[(Y||qe>0)&&jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{textDecoration:"line-through",color:"#777"},children:[(pe?ke*ae:ke).toLocaleString("vi-VN")," VNÄ"]}),jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"baseline",justifyContent:"center",gap:.5,flexWrap:"nowrap"},children:[jsxRuntimeExports.jsxs(Typography,{variant:"h6",sx:{fontWeight:"bold",color:"#f44336",lineHeight:1.2,whiteSpace:"nowrap"},children:["ð³ ",et.toLocaleString("vi-VN")," VNÄ"]}),jsxRuntimeExports.jsx(Typography,{variant:"caption",sx:{color:"#555",whiteSpace:"nowrap"},children:o==="extendedLink"?P("upgradeModal.perExtendedLink",{tier:_}):pe?P("upgradeModal.perYears",{years:ae}):P("upgradeModal.forever")})]}),(Y||qe>0)&&(()=>{const je=[];return Y&&je.push(P("upgradeModal.promoCodeFormat",{discount:Y.discount})),qe>0&&je.push(P("upgradeModal.multiYearDiscountFormat",{years:ae,discount:qe})),jsxRuntimeExports.jsxs(Typography,{variant:"caption",sx:{color:"#2e7d32",fontWeight:"bold",display:"block"},children:["(",je.join(" + "),")"]})})()]})]}),jsxRuntimeExports.jsxs(Box,{sx:{flex:"1 1 190px",minWidth:0,display:"flex",flexDirection:"column",gap:1},children:[jsxRuntimeExports.jsx(Box,{sx:{py:.75,px:1.25,bgcolor:"#e8f5e9",border:"1px solid #a5d6a7",borderRadius:2},children:jsxRuntimeExports.jsxs(Typography,{sx:{fontSize:"0.8rem",fontWeight:700,color:"#2e7d32",lineHeight:1.4},children:["â
",P("upgradeModal.qrAutoFillNote")]})}),jsxRuntimeExports.jsx(ManualTransferAccordion,{transferContent:Ie,amount:et}),ue&&jsxRuntimeExports.jsx(Alert,{severity:"warning",sx:{py:.5},children:jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{fontSize:"0.8rem"},children:[P("upgradeModal.offlineWarning")," ",jsxRuntimeExports.jsx(Box,{component:"span",onClick:()=>U(!0),sx:{color:"#1976d2",cursor:"pointer",textDecoration:"underline",fontWeight:"bold"},children:P("upgradeModal.clickToView")})]})}),jsxRuntimeExports.jsx(Alert,{severity:"warning",sx:{py:.5},children:jsxRuntimeExports.jsxs(Typography,{variant:"body2",sx:{fontSize:"0.8rem"},children:[P("upgradeModal.contactTitle")," ","ð ",jsxRuntimeExports.jsx("strong",{children:"0363.357.745"})," |"," ","ð¬ ",jsxRuntimeExports.jsx("a",{href:"https://zalo.me/0363357745",target:"_blank",rel:"noopener noreferrer",children:"Zalo"})," |"," ","ð§ ",jsxRuntimeExports.jsx("a",{href:"mailto:[email protected]",children:"Email"})]})})]})]})]}),jsxRuntimeExports.jsxs(DialogActions,{sx:{px:2,py:1,gap:1},children:[jsxRuntimeExports.jsxs(Link,{component:"button",variant:"body2",onClick:()=>{B(!0),O(!1)},sx:{color:"#1976d2",cursor:"pointer",textDecoration:"underline",fontSize:"0.8rem",mr:"auto"},children:["ð ",P("upgradeModal.internationalBtn")]}),jsxRuntimeExports.jsx(Button,{onClick:T,variant:"outlined",size:"small",children:P("upgradeModal.closeBtn")}),jsxRuntimeExports.jsx(Button,{onClick:()=>window.open("https://zalo.me/0363357745","_blank"),variant:"outlined",color:"primary",size:"small",children:P("upgradeModal.contactBtn")}),jsxRuntimeExports.jsx(Button,{onClick:()=>window.location.reload(),variant:"contained",color:"success",size:"small",children:P("upgradeModal.reloadBtn")})]})]}),jsxRuntimeExports.jsx(OfflineWarningDialog,{open:V,onClose:()=>U(!1),featureName:ce}),jsxRuntimeExports.jsx(GroupPurchaseModal,{open:Z,onClose:()=>X(!1),feature:o,featureCode:we,basePrice:ke,selectedYears:ae,featureName:de?Se.nameEn:Se.name})]})}function OfflineWarningDialog({open:o,onClose:u,featureName:T,onConfirm:S}){const{t:E}=useTranslation("common"),C=FEATURE_ONLINE_URL[T]||"giaoviendoimoi.com",_=()=>{S?S():u()};return jsxRuntimeExports.jsxs(Dialog,{open:o,onClose:u,maxWidth:"sm",fullWidth:!0,children:[jsxRuntimeExports.jsx(DialogTitle,{sx:{background:"#b71c1c",color:"white",fontWeight:"bold",fontSize:"1rem"},children:E("upgradeModal.offlineWarningDialog.title")}),jsxRuntimeExports.jsxs(DialogContent,{sx:{pt:2},children:[jsxRuntimeExports.jsx(Box,{sx:{mb:2,p:2,bgcolor:"#ffebee",border:"2px solid #ef5350",borderRadius:1},children:jsxRuntimeExports.jsxs(Typography,{variant:"body1",sx:{fontWeight:"bold",color:"#c62828",textAlign:"center"},children:["ð ",E("upgradeModal.offlineWarningDialog.pptWarning")]})}),jsxRuntimeExports.jsx(Box,{sx:{mb:2,p:1.5,bgcolor:"#fff3e0",border:"1px solid #ff9800",borderRadius:1},children:jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:"bold",mb:.5},children:E("upgradeModal.offlineWarningDialog.usageNote")})}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:"bold",color:"#b71c1c",mb:1},children:E("upgradeModal.offlineWarningDialog.dataNoteTitle")}),jsxRuntimeExports.jsxs(Box,{component:"ul",sx:{pl:2,mb:2,"& li":{mb:.75}},children:[jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.dataNote1")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.dataNote2")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.dataNote3")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.dataNote4")})]}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{fontWeight:"bold",color:"#b71c1c",mb:1},children:E("upgradeModal.offlineWarningDialog.limitationsTitle")}),jsxRuntimeExports.jsx(Typography,{variant:"body2",sx:{mb:1},children:E("upgradeModal.offlineWarningDialog.limitationsDesc",{url:C})}),jsxRuntimeExports.jsxs(Box,{component:"ul",sx:{pl:2,mb:1,"& li":{mb:.75}},children:[jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.limit1")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.limit2")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.limit3")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.limit4")}),jsxRuntimeExports.jsx(Typography,{component:"li",variant:"body2",children:E("upgradeModal.offlineWarningDialog.limit5")})]})]}),jsxRuntimeExports.jsxs(DialogActions,{children:[jsxRuntimeExports.jsx(Button,{onClick:u,variant:"outlined",children:E("upgradeModal.closeBtn")}),jsxRuntimeExports.jsx(Button,{onClick:_,variant:"contained",color:"error",children:E("upgradeModal.offlineWarningDialog.gotIt")})]})]})}function Header(){var re,J;const o=useNavigate(),{currentUser:u,logout:T}=useAuth(),{pathname:S}=useLocation(),E=useTheme(),C=useMediaQuery(E.breakpoints.down("md")),{t:_,i18n:P}
313=useTranslation("common"),R=P.language==="pl",{subscription:I,subLoading:L,proModalOpen:j,setProModalOpen:M}=useSubscription(),[D,F]=reactExports.useState(!1),[N,G]=reactExports.useState(!1),B="header_intro_played",H=reactExports.useRef(sessionStorage.getItem(B)==="1");reactExports.useEffect(()=>{H.current||sessionStorage.setItem(B,"1")},[]),reactExports.useEffect(()=>{const te=()=>G(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",te),()=>document.removeEventListener("fullscreenchange",te)},[]);const[O,V]=reactExports.useState(!1),U=reactExports.useRef(null),[W,K]=reactExports.useState(null),Y="join_sticker_dismissed_at",[ee,oe]=reactExports.useState(()=>{const te=localStorage.getItem("join_sticker_dismissed_at");return te?Date.now()-Number(te)<=24*60*60*1e3:!1}),se=async()=>{try{await T()}catch(te){console.error("Logout error:",te)}},Q=te=>Z=>{Z.type==="keydown"&&(Z.key==="Tab"||Z.key==="Shift")||F(te)},ie=(te,Z=!1,X=null)=>{if(F(!1),X==="logout"){se();return}Z?window.open(te,"_blank"):o(te)},ae=[{label:_("nav.home"),path:"/dashboard",icon:jsxRuntimeExports.jsx(HomeIcon,{}),external:!1},{label:_("nav.aiTools"),path:"/ai-tools",icon:jsxRuntimeExports.jsx(Star,{}),external:!1},{label:_("nav.edutech"),path:"/tien-ich-giao-duc",icon:jsxRuntimeExports.jsx(CheckCircle,{}),external:!1,showBadge:!0},{label:_("nav.lessonSimulation"),path:"/mo-phong-bai-day",icon:jsxRuntimeExports.jsx(Star,{}),external:!1},{label:_("nav.courses"),path:"/teaching-materials",icon:jsxRuntimeExports.jsx(FolderOpenIcon,{}),external:!1},{label:_("nav.questionBank"),path:"/question-bank",icon:jsxRuntimeExports.jsx(QuestionIcon,{}),external:!1},{label:_("nav.assignments"),path:"/assignments",icon:jsxRuntimeExports.jsx(AssignIcon,{}),external:!1},{label:_("nav.join"),path:"/thamgia",icon:jsxRuntimeExports.jsx(JoinIcon,{}),external:!0},{label:_("nav.community"),path:"/community-library",icon:jsxRuntimeExports.jsx(LibraryBooksIcon,{}),external:!1},{label:_("nav.logout"),path:"logout",icon:jsxRuntimeExports.jsx(LogoutIcon,{}),external:!1,action:"logout"}];return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(motion.header,{className:"app-header",style:{display:N?"none":void 0},initial:H.current?!1:{y:-100},animate:{y:0},transition:{duration:.5},children:jsxRuntimeExports.jsxs("div",{className:"header-content",children:[jsxRuntimeExports.jsxs("div",{className:"header-left",children:[C&&jsxRuntimeExports.jsx(IconButton,{"aria-label":"open drawer",edge:"start",onClick:Q(!0),sx:{display:{xs:"flex",md:"none"},color:"#333333",backgroundColor:"rgba(0, 0, 0, 0.04)",marginRight:1,"&:hover":{backgroundColor:"rgba(0, 0, 0, 0.08)"}},children:jsxRuntimeExports.jsx(MenuIcon,{sx:{color:"#333333",fontSize:32}})}),jsxRuntimeExports.jsx("div",{className:"header-logo",onClick:()=>o("/dashboard"),style:{cursor:"pointer"},children:!C&&jsxRuntimeExports.jsx("h1",{className:"logo-text",style:{fontSize:R?"1.15rem":"1.4rem"},children:_("nav.logoName")})}),!C&&jsxRuntimeExports.jsxs("div",{className:"header-slogan-section",style:{gap:R?"8px":"15px"},children:[jsxRuntimeExports.jsxs(motion.button,{className:S==="/dashboard"?"home-ai-btn":"home-nav-btn",onClick:()=>o("/dashboard"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.home"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"ð "}),jsxRuntimeExports.jsx("span",{children:R?_("nav.home").replace("Strona GÅówna","Start"):_("nav.home")})]}),jsxRuntimeExports.jsxs(motion.button,{className:S==="/ai-tools"?"home-ai-btn":"home-nav-btn",onClick:()=>o("/ai-tools"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.aiTools"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"â¨"}),jsxRuntimeExports.jsx("span",{children:_("nav.aiTools")})]}),jsxRuntimeExports.jsxs(motion.button,{className:S==="/tien-ich-giao-duc"?"home-ai-btn":"home-nav-btn",onClick:()=>o("/tien-ich-giao-duc"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.edutech"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px",position:"relative"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"ð§©"}),jsxRuntimeExports.jsx("span",{children:_("nav.edutech")})]}),jsxRuntimeExports.jsxs(motion.button,{className:S==="/mo-phong-bai-day"?"home-ai-btn":"home-nav-btn",onClick:()=>o("/mo-phong-bai-day"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.lessonSimulation"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px",position:"relative"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"ð§ª"}),jsxRuntimeExports.jsx("span",{children:_("nav.lessonSimulation")}),jsxRuntimeExports.jsx("span",{className:"home-nav-badge-new",children:"NEW"})]}),jsxRuntimeExports.jsxs(motion.button,{className:S==="/teaching-materials"?"home-ai-btn":"home-nav-btn",onClick:()=>o("/teaching-materials"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.courses"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"ð"}),jsxRuntimeExports.jsx("span",{children:_("nav.courses")})]}),jsxRuntimeExports.jsxs(motion.button,{className:"home-nav-btn",onClick:()=>window.open("https://giaovienchunhiem.com","_blank"),whileHover:{scale:1.05},whileTap:{scale:.95},title:_("nav.homeroom"),style:{fontSize:R?"0.82rem":"0.9rem",padding:R?"6px 10px":"8px 14px",position:"relative"},children:[jsxRuntimeExports.jsx("span",{className:"home-nav-icon",children:"ð§âð«"}),jsxRuntimeExports.jsx("span",{children:_("nav.homeroom")}),jsxRuntimeExports.jsx("span",{style:{position:"absolute",top:-6,right:-6,background:"#f44336",color:"#fff",fontSize:"0.5rem",fontWeight:800,borderRadius:"6px",padding:"1px 4px",lineHeight:1.4,pointerEvents:"none",letterSpacing:"0.02em",whiteSpace:"nowrap"},children:"NEW"})]})]})]}),jsxRuntimeExports.jsxs("div",{className:"header-user",children:[jsxRuntimeExports.jsx(motion.button,{onClick:te=>K(te.currentTarget),whileHover:{scale:1.08},whileTap:{scale:.92},title:_("language.switchTo"),style:{background:"transparent",color:"inherit",border:"1px solid rgba(0,0,0,0.12)",borderRadius:"6px",padding:"4px 8px",fontSize:"1.3rem",cursor:"pointer",lineHeight:1,flexShrink:0},children:jsxRuntimeExports.jsx("img",{src:"/images/languages.png",alt:"Language",style:{width:"24px",height:"24px",objectFit:"cover",borderRadius:"3px",display:"block"}})}
313),jsxRuntimeExports.jsxs(Menu,{anchorEl:W,open:!!W,onClose:()=>K(null),transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},PaperProps:{elevation:0,sx:{overflow:"visible",filter:"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",mt:1.5,"&:before":{content:'""',display:"block",position:"absolute",top:0,right:14,width:10,height:10,bgcolor:"background.paper",transform:"translateY(-50%) rotate(45deg)",zIndex:0}}},children:[jsxRuntimeExports.jsxs(MenuItem,{selected:P.language==="vi",onClick:()=>{P.changeLanguage("vi"),K(null)},children:[jsxRuntimeExports.jsx("img",{src:viFlag,alt:"Tiếng Viá»t",style:{width:24,height:24,marginRight:12,borderRadius:3,objectFit:"cover"}}),"Tiếng Viá»t"]}),jsxRuntimeExports.jsxs(MenuItem,{selected:P.language==="en",onClick:()=>{P.changeLanguage("en"),K(null)},children:[jsxRuntimeExports.jsx("img",{src:enFlag,alt:"English",style:{width:24,height:24,marginRight:12,borderRadius:3,objectFit:"cover"}}),"English"]}),jsxRuntimeExports.jsxs(MenuItem,{selected:P.language==="pl",onClick:()=>{P.changeLanguage("pl"),K(null)},children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"20px",width:24,height:24,marginRight:12,display:"flex",alignItems:"center",justifyContent:"center"},children:"ðµð±"}),"Polski"]})]}),u&&!L&&jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsxs("div",{className:"user-info",ref:U,style:{position:"relative"},children:[u.photoURL?jsxRuntimeExports.jsx("img",{src:u.photoURL,alt:u.displayName||"",className:"user-avatar",onClick:()=>V(te=>!te),title:u.displayName||"",style:{cursor:"pointer"}}):jsxRuntimeExports.jsx("div",{className:"user-avatar",onClick:()=>V(te=>!te),title:u.displayName||"",style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",background:"linear-gradient(135deg, #667eea, #764ba2)",color:"#fff",fontWeight:700,fontSize:"1.1rem"},children:((J=(re=u.displayName)==null?void 0:re[0])==null?void 0:J.toUpperCase())||"?"}),O&&(()=>{var Z;const te=(Z=U.current)==null?void 0:Z.getBoundingClientRect();return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{style:{position:"fixed",inset:0,zIndex:2e3},onClick:()=>V(!1)}),jsxRuntimeExports.jsxs("div",{style:{position:"fixed",top:te?te.bottom+10:60,right:te?window.innerWidth-te.right:0,zIndex:2001,background:"#fff",borderRadius:"10px",boxShadow:"0 8px 30px rgba(0,0,0,0.15)",minWidth:"170px",padding:"8px",border:"1px solid rgba(0,0,0,0.08)"},children:[jsxRuntimeExports.jsx("div",{style:{padding:"6px 10px 10px",fontSize:"0.85rem",fontWeight:600,color:"#444",borderBottom:"1px solid #f0f0f0",marginBottom:"6px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"180px"},children:u.displayName}),jsxRuntimeExports.jsxs(motion.button,{onClick:()=>{V(!1),o("/lich-su-thanh-toan")},whileHover:{backgroundColor:"#f0f4ff"},style:{display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"8px 10px",background:"transparent",border:"none",borderRadius:"6px",cursor:"pointer",color:"#333",fontWeight:600,fontSize:"0.9rem",textAlign:"left"},children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"1rem",lineHeight:1},children:"ð§¾"}),_("nav.paymentHistory")]}),jsxRuntimeExports.jsxs(motion.button,{onClick:()=>{V(!1),se()},whileHover:{backgroundColor:"#fef2f2"},style:{display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"8px 10px",background:"transparent",border:"none",borderRadius:"6px",cursor:"pointer",color:"#e53e3e",fontWeight:600,fontSize:"0.9rem",textAlign:"left"},children:[jsxRuntimeExports.jsx(LogoutIcon,{style:{fontSize:"1rem"}}),_("header.logoutBtn")]})]})]})})()]})})]})]})}),reactDomExports.createPortal((S==="/"||S==="/dashboard")&&(ee?jsxRuntimeExports.jsx("div",{style:{position:"fixed",bottom:110,left:20,zIndex:9e3,width:48,height:48,borderRadius:"50%",background:"linear-gradient(135deg, #11998e, #38ef7d)",boxShadow:"0 4px 16px rgba(17,153,142,0.45)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",userSelect:"none"},onClick:()=>window.open("/thamgia","_blank"),title:_("nav.joinForStudents"),children:jsxRuntimeExports.jsx("span",{style:{fontSize:"1.4rem",lineHeight:1},children:"ð"})}):jsxRuntimeExports.jsxs("div",{style:{position:"fixed",bottom:110,left:20,zIndex:9e3,width:80,height:80,borderRadius:16,background:"linear-gradient(135deg, #11998e, #38ef7d)",boxShadow:"0 4px 16px rgba(17,153,142,0.45)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:"6px 4px",textAlign:"center",userSelect:"none"},onClick:()=>window.open("/thamgia","_blank"),children:[jsxRuntimeExports.jsx("button",{onClick:te=>{te.stopPropagation(),localStorage.setItem(Y,String(Date.now())),oe(!0)},style:{position:"absolute",top:-6,left:-6,width:20,height:20,borderRadius:"50%",background:"rgba(0,0,0,0.55)",border:"none",color:"#fff",fontSize:"0.65rem",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},children:"â"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"1.3rem",lineHeight:1},children:"ð"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"0.55rem",fontWeight:800,color:"#fff",lineHeight:1.3,marginTop:4,whiteSpace:"pre-line"},children:_("nav.joinForStudents").replace(" (",` 314(`)})]})),document.body),jsxRuntimeExports.jsx(Drawer,{anchor:"left",open:D,onClose:Q(!1),children:jsxRuntimeExports.jsxs(Box,{sx:{width:280,pt:2,pb:2,bgcolor:"background.paper",height:"100%"},role:"presentation",children:[jsxRuntimeExports.jsx(Box,{sx:{px:2,mb:2},children:jsxRuntimeExports.jsx(Typography,{variant:"h6",sx:{fontWeight:"bold",color:"primary.main"},children:_("nav.logoTitle")})}),jsxRuntimeExports.jsx(List,{children:ae.map(te=>jsxRuntimeExports.jsx(ListItem,{disablePadding:!0,children:jsxRuntimeExports.jsxs(ListItemButton,{onClick:()=>ie(te.path,te.external,te.action||null),sx:{py:1.5,"&:hover":{bgcolor:te.action==="logout"?"error.light":"primary.light","& .MuiListItemIcon-root":{color:te.action==="logout"?"error.main":"primary.main"},"& .MuiListItemText-primary":{color:te.action==="logout"?"error.main":"primary.main",fontWeight:"bold"}}},children:[jsxRuntimeExports.jsx(ListItemIcon,{sx:{minWidth:40,color:te.action==="logout"?"error.main":"text.secondary"},children:te.icon}),jsxRuntimeExports.jsx(ListItemText,{primary:jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[te.label,te.showBadge&&jsxRuntimeExports.jsx(Chip,{label:"NEW",size:"small",color:"error",sx:{height:18,fontSize:"0.6rem",fontWeight:"bold","& .MuiChip-label":{px:.8}}})]}),primaryTypographyProps:{fontSize:"1rem",fontWeight:te.action==="logout"?600:500,color:te.action==="logout"?"error.main":"inherit"}})]})},te.label))})]})}),jsxRuntimeExports.jsx(UpgradeModal,{feature:"proPlan",open:j,onClose:()=>M(!1)})]})}const EFFECT_TYPES={LOTTIE:"lottie",VIDEO:"video"},EFFECTS={CORRECT:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/correct.json",duration:2e3},INCORRECT:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/incorrect.json",duration:2500}
314,COUNTDOWN:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/countdown.json",duration:4e3},VICTORY:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/victory.json",duration:3e3},FIREWORKS:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/fireworks.json",duration:3e3},CONFETTI:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/confetti.json",duration:2500},OPEN_CHEST:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/open-chest.json",duration:3e3},STAR:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/star.json",duration:1500},POINTS:{type:EFFECT_TYPES.LOTTIE,src:"/assets/effects/points.json",duration:1500}};function getEffectConfig(o){return EFFECTS[o]||null}function hasEffect(o){return o in EFFECTS}const EffectContext=reactExports.createContext(null);function EffectProvider({children:o}){const[u,T]=reactExports.useState(null),S=reactExports.useCallback((P,R={})=>{if(!hasEffect(P)){console.warn(`[EffectSystem] Effect "${P}" not found in config`);return}const I=getEffectConfig(P),L=R.duration||I.duration;T({name:P,config:I,options:R,startTime:Date.now()}),setTimeout(()=>{T(j=>{var M;return(j==null?void 0:j.name)===P&&(j!=null&&j.startTime)?((M=R.onComplete)==null||M.call(R),null):j})},L)},[]),E=reactExports.useCallback(()=>{T(null)},[]),_={currentEffect:u,playEffect:S,stopEffect:E,isPlaying:u!==null};return jsxRuntimeExports.jsx(EffectContext.Provider,{value:_,children:o})}function useEffectSystem(){const o=reactExports.useContext(EffectContext);if(!o)throw new Error("useEffectSystem must be used within an EffectProvider");return o}var lottie$1={exports:{}};(function(module,exports){typeof document<"u"&&typeof navigator<"u"&&function(o,u){module.exports=u()}(commonjsGlobal,function(){var svgNS="http://www.w3.org/2000/svg",locationHref="",_useWebWorker=!1,initialDefaultFrame=-999999,setWebWorker=function(u){_useWebWorker=!!u},getWebWorker=function(){return _useWebWorker},setLocationHref=function(u){locationHref=u},getLocationHref=function(){return locationHref};function createTag(o){return document.createElement(o)}function extendPrototype(o,u){var T,S=o.length,E;for(T=0;T<S;T+=1){E=o[T].prototype;for(var C in E)Object.prototype.hasOwnProperty.call(E,C)&&(u.prototype[C]=E[C])}}function getDescriptor(o,u){return Object.getOwnPropertyDescriptor(o,u)}function createProxyFunction(o){function u(){}return u.prototype=o,u}var audioControllerFactory=function(){function o(u){this.audios=[],this.audioFactory=u,this._volume=1,this._isMuted=!1}return o.prototype={addAudio:function(T){this.audios.push(T)},pause:function(){var T,S=this.audios.length;for(T=0;T<S;T+=1)this.audios[T].pause()},resume:function(){var T,S=this.audios.length;for(T=0;T<S;T+=1)this.audios[T].resume()},setRate:function(T){var S,E=this.audios.length;for(S=0;S<E;S+=1)this.audios[S].setRate(T)},createAudio:function(T){return this.audioFactory?this.audioFactory(T):window.Howl?new window.Howl({src:[T]}):{isPlaying:!1,play:function(){this.isPlaying=!0},seek:function(){this.isPlaying=!1},playing:function(){},rate:function(){},setVolume:function(){}}},setAudioFactory:function(T){this.audioFactory=T},setVolume:function(T){this._volume=T,this._updateVolume()},mute:function(){this._isMuted=!0,this._updateVolume()},unmute:function(){this._isMuted=!1,this._updateVolume()},getVolume:function(){return this._volume},_updateVolume:function(){var T,S=this.audios.length;for(T=0;T<S;T+=1)this.audios[T].volume(this._volume*(this._isMuted?0:1))}},function(){return new o}}(),createTypedArray=function(){function o(T,S){var E=0,C=[],_;switch(T){case"int16":case"uint8c":_=1;break;default:_=1.1;break}for(E=0;E<S;E+=1)C.push(_);return C}function u(T,S){return T==="float32"?new Float32Array(S):T==="int16"?new Int16Array(S):T==="uint8c"?new Uint8ClampedArray(S):o(T,S)}return typeof Uint8ClampedArray=="function"&&typeof Float32Array=="function"?u:o}();function createSizedArray(o){return Array.apply(null,{length:o})}function _typeof$6(o){"@babel/helpers - typeof";return _typeof$6=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$6(o)}var subframeEnabled=!0,expressionsPlugin=null,expressionsInterfaces=null,idPrefix$1="",isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),bmPow=Math.pow,bmSqrt=Math.sqrt,bmFloor=Math.floor,bmMax=Math.max,bmMin=Math.min,BMMath={};(function(){var o=["abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","cbrt","expm1","clz32","cos","cosh","exp","floor","fround","hypot","imul","log","log1p","log2","log10","max","min","pow","random","round","sign","sin","sinh","sqrt","tan","tanh","trunc","E","LN10","LN2","LOG10E","LOG2E","PI","SQRT1_2","SQRT2"],u,T=o.length;for(u=0;
vendor: 128,627 bytes, lines 314-322
314u<T;u+=1)BMMath[o[u]]=Math[o[u]]})(),BMMath.random=Math.random,BMMath.abs=function(o){var u=_typeof$6(o);if(u==="object"&&o.length){var T=createSizedArray(o.length),S,E=o.length;for(S=0;S<E;S+=1)T[S]=Math.abs(o[S]);return T}return Math.abs(o)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=.5519;function styleDiv(o){o.style.position="absolute",o.style.top=0,o.style.left=0,o.style.display="block",o.style.transformOrigin="0 0",o.style.webkitTransformOrigin="0 0",o.style.backfaceVisibility="visible",o.style.webkitBackfaceVisibility="visible",o.style.transformStyle="preserve-3d",o.style.webkitTransformStyle="preserve-3d",o.style.mozTransformStyle="preserve-3d"}function BMEnterFrameEvent(o,u,T,S){this.type=o,this.currentTime=u,this.totalTime=T,this.direction=S<0?-1:1}function BMCompleteEvent(o,u){this.type=o,this.direction=u<0?-1:1}function BMCompleteLoopEvent(o,u,T,S){this.type=o,this.currentLoop=T,this.totalLoops=u,this.direction=S<0?-1:1}function BMSegmentStartEvent(o,u,T){this.type=o,this.firstFrame=u,this.totalFrames=T}function BMDestroyEvent(o,u){this.type=o,this.target=u}function BMRenderFrameErrorEvent(o,u){this.type="renderFrameError",this.nativeError=o,this.currentTime=u}function BMConfigErrorEvent(o){this.type="configError",this.nativeError=o}var createElementID=function(){var o=0;return function(){return o+=1,idPrefix$1+"__lottie_element_"+o}}();function HSVtoRGB(o,u,T){var S,E,C,_,P,R,I,L;switch(_=Math.floor(o*6),P=o*6-_,R=T*(1-u),I=T*(1-P*u),L=T*(1-(1-P)*u),_%6){case 0:S=T,E=L,C=R;break;case 1:S=I,E=T,C=R;break;case 2:S=R,E=T,C=L;break;case 3:S=R,E=I,C=T;break;case 4:S=L,E=R,C=T;break;case 5:S=T,E=R,C=I;break}return[S,E,C]}function RGBtoHSV(o,u,T){var S=Math.max(o,u,T),E=Math.min(o,u,T),C=S-E,_,P=S===0?0:C/S,R=S/255;switch(S){case E:_=0;break;case o:_=u-T+C*(u<T?6:0),_/=6*C;break;case u:_=T-o+C*2,_/=6*C;break;case T:_=o-u+C*4,_/=6*C;break}return[_,P,R]}function addSaturationToRGB(o,u){var T=RGBtoHSV(o[0]*255,o[1]*255,o[2]*255);return T[1]+=u,T[1]>1?T[1]=1:T[1]<=0&&(T[1]=0),HSVtoRGB(T[0],T[1],T[2])}function addBrightnessToRGB(o,u){var T=RGBtoHSV(o[0]*255,o[1]*255,o[2]*255);return T[2]+=u,T[2]>1?T[2]=1:T[2]<0&&(T[2]=0),HSVtoRGB(T[0],T[1],T[2])}function addHueToRGB(o,u){var T=RGBtoHSV(o[0]*255,o[1]*255,o[2]*255);return T[0]+=u/360,T[0]>1?T[0]-=1:T[0]<0&&(T[0]+=1),HSVtoRGB(T[0],T[1],T[2])}var rgbToHex=function(){var o=[],u,T;for(u=0;u<256;u+=1)T=u.toString(16),o[u]=T.length===1?"0"+T:T;return function(S,E,C){return S<0&&(S=0),E<0&&(E=0),C<0&&(C=0),"#"+o[S]+o[E]+o[C]}}(),setSubframeEnabled=function(u){subframeEnabled=!!u},getSubframeEnabled=function(){return subframeEnabled},setExpressionsPlugin=function(u){expressionsPlugin=u},getExpressionsPlugin=function(){return expressionsPlugin},setExpressionInterfaces=function(u){expressionsInterfaces=u},getExpressionInterfaces=function(){return expressionsInterfaces},setDefaultCurveSegments=function(u){defaultCurveSegments=u},getDefaultCurveSegments=function(){return defaultCurveSegments},setIdPrefix=function(u){idPrefix$1=u};function createNS(o){return document.createElementNS(svgNS,o)}function _typeof$5(o){"@babel/helpers - typeof";return _typeof$5=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$5(o)}var dataManager=function(){var o=1,u=[],T,S,E={onmessage:function(){},postMessage:function(D){T({data:D})}},C={postMessage:function(D){E.onmessage({data:D})}};function _(M){if(window.Worker&&window.Blob&&getWebWorker()){var D=new Blob(["var _workerSelf = self; self.onmessage = ",M.toString()],{type:"text/javascript"}),F=URL.createObjectURL(D);return new Worker(F)}return T=M,E}function P(){S||(S=_(function(D){function F(){function G(re,J){var te,Z,X=re.length,de,he,ne,ue;for(Z=0;Z<X;Z+=1)if(te=re[Z],"ks"in te&&!te.completed){if(te.completed=!0,te.hasMask){var ce=te.masksProperties;for(he=ce.length,de=0;de<he;de+=1)if(ce[de].pt.k.i)U(ce[de].pt.k);else for(ue=ce[de].pt.k.length,ne=0;ne<ue;ne+=1)ce[de].pt.k[ne].s&&U(ce[de].pt.k[ne].s[0]),ce[de].pt.k[ne].e&&U(ce[de].pt.k[ne].e[0])}te.ty===0?(te.layers=O(te.refId,J),G(te.layers,J)):te.ty===4?V(te.shapes):te.ty===5&&ie(te)}}function B(re,J){if(re){var te=0,Z=re.length;for(te=0;te<Z;te+=1)re[te].t===1&&(re[te].data.layers=O(re[te].data.refId,J),G(re[te].data.layers,J))}}function H(re,J){for(var te=0,Z=J.length;te<Z;){if(J[te].id===re)return J[te];te+=1}return null}function O(re,J){var te=H(re,J);return te?te.layers.__used?JSON.parse(JSON.stringify(te.layers)):(te.layers.__used=!0,te.layers):null}function V(re){var J,te=re.length,Z,X;for(J=te-1;J>=0;J-=1)if(re[J].ty==="sh")if(re[J].ks.k.i)U(re[J].ks.k);else for(X=re[J].ks.k.length,Z=0;Z<X;Z+=1)re[J].ks.k[Z].s&&U(re[J].ks.k[Z].s[0]),re[J].ks.k[Z].e&&U(re[J].ks.k[Z].e[0]);else re[J].ty==="gr"&&V(re[J].it)}function U(re){var J,te=re.i.length;for(J=0;J<te;J+=1)re.i[J][0]+=re.v[J][0],re.i[J][1]+=re.v[J][1],re.o[J][0]+=re.v[J][0],re.o[J][1]+=re.v[J][1]}function W(re,J){var te=J?J.split("."):[100,100,100];return re[0]>te[0]?!0:te[0]>re[0]?!1:re[1]>te[1]?!0:te[1]>re[1]?!1:re[2]>te[2]?!0:te[2]>re[2]?!1:null}var K=function(){var re=[4,4,14];function J(Z){var X=Z.t.d;Z.t.d={k:[{s:X,t:0}]}}function te(Z){var X,de=Z.length;for(X=0;X<de;X+=1)Z[X].ty===5&&J(Z[X])}return function(Z){if(W(re,Z.v)&&(te(Z.layers),Z.assets)){var X,de=Z.assets.length;for(X=0;X<de;X+=1)Z.assets[X].layers&&te(Z.assets[X].layers)}}}(),Y=function(){var re=[4,7,99];return function(J){if(J.chars&&!W(re,J.v)){var te,Z=J.chars.length;for(te=0;te<Z;te+=1){var X=J.chars[te];X.data&&X.data.shapes&&(V(X.data.shapes),X.data.ip=0,X.data.op=99999,X.data.st=0,X.data.sr=1,X.data.ks={p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0}},J.chars[te].t||(X.data.shapes.push({ty:"no"}),X.data.shapes[0].it.push({p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0},sk:{k:0,a:0},sa:{k:0,a:0},ty:"tr"})))}}}}(),ee=function(){var re=[5,7,15];function J(Z){var X=Z.t.p;typeof X.a=="number"&&(X.a={a:0,k:X.a}),typeof X.p=="number"&&(X.p={a:0,k:X.p}),typeof X.r=="number"&&(X.r={a:0,k:X.r})}function te(Z){var X,de=Z.length;for(X=0;X<de;X+=1)Z[X].ty===5&&J(Z[X])}return function(Z){if(W(re,Z.v)&&(te(Z.layers),Z.assets)){var X,de=Z.assets.length;for(X=0;X<de;X+=1)Z.assets[X].layers&&te(Z.assets[X].layers)}}}(),oe=function(){var re=[4,1,9];function J(Z){var X,de=Z.length,he,ne;for(X=0;X<de;X+=1)if(Z[X].ty==="gr")J(Z[X].it);else if(Z[X].ty==="fl"||Z[X].ty==="st")if(Z[X].c.k&&Z[X].c.k[0].i)for(ne=Z[X].c.k.length,he=0;he<ne;he+=1)Z[X].c.k[he].s&&(Z[X].c.k[he].s[0]/=255,Z[X].c.k[he].s[1]/=255,Z[X].c.k[he].s[2]/=255,Z[X].c.k[he].s[3]/=255),Z[X].c.k[he].e&&(Z[X].c.k[he].e[0]/=255,Z[X].c.k[he].e[1]/=255,Z[X].c.k[he].e[2]/=255,Z[X].c.k[he].e[3]/=255);else Z[X].c.k[0]/=255,Z[X].c.k[1]/=255,Z[X].c.k[2]/=255,Z[X].c.k[3]/=255}function te(Z){var X,de=Z.length;for(X=0;X<de;X+=1)Z[X].ty===4&&J(Z[X].shapes)}return function(Z){if(W(re,Z.v)&&(te(Z.layers),Z.assets)){var X,de=Z.assets.length;for(X=0;X<de;X+=1)Z.assets[X].layers&&te(Z.assets[X].layers)}}}(),se=function(){var re=[4,4,18];function J(Z){var X,de=Z.length,he,ne;for(X=de-1;X>=0;X-=1)if(Z[X].ty==="sh")if(Z[X].ks.k.i)Z[X].ks.k.c=Z[X].closed;else for(ne=Z[X].ks.k.length,he=0;he<ne;he+=1)Z[X].ks.k[he].s&&(Z[X].ks.k[he].s[0].c=Z[X].closed),Z[X].ks.k[he].e&&(Z[X].ks.k[he].e[0].c=Z[X].closed);else Z[X].ty==="gr"&&J(Z[X].it)}function te(Z){var X,de,he=Z.length,ne,ue,ce,fe;for(de=0;de<he;de+=1){if(X=Z[de],X.hasMask){var ve=X.masksProperties;for(ue=ve.length,ne=0;ne<ue;ne+=1)if(ve[ne].pt.k.i)ve[ne].pt.k.c=ve[ne].cl;else for(fe=ve[ne].pt.k.length,ce=0;ce<fe;ce+=1)ve[ne].pt.k[ce].s&&(ve[ne].pt.k[ce].s[0].c=ve[ne].cl),ve[ne].pt.k[ce].e&&(ve[ne].pt.k[ce].e[0].c=ve[ne].cl)}X.ty===4&&J(X.shapes)}}return function(Z){if(W(re,Z.v)&&(te(Z.layers),Z.assets)){var X,de=Z.assets.length;for(X=0;X<de;X+=1)Z.assets[X].layers&&te(Z.assets[X].layers)}}}();function Q(re){re.__complete||(oe(re),K(re),Y(re),ee(re),se(re),G(re.layers,re.assets),B(re.chars,re.assets),re.__complete=!0)}function ie(re){re.t.a.length===0&&"m"in re.t.p}var ae={};return ae.completeData=Q,ae.checkColors=oe,ae.checkChars=Y,ae.checkPathProperties=ee,ae.checkShapes=se,ae.completeLayers=G,ae}if(C.dataManager||(C.dataManager=F()),C.assetLoader||(C.assetLoader=function(){function G(H){var O=H.getResponseHeader("content-type");return O&&H.responseType==="json"&&O.indexOf("json")!==-1||H.response&&_typeof$5(H.response)==="object"?H.response:H.response&&typeof H.response=="string"?JSON.parse(H.response):H.responseText?JSON.parse(H.responseText):null}function B(H,O,V,U){var W,K=new XMLHttpRequest;try{K.responseType="json"}catch{}K.onreadystatechange=function(){if(K.readyState===4)if(K.status===200)W=G(K),V(W);else try{W=G(K),V(W)}catch(Y){U&&U(Y)}};try{K.open(["G","E","T"].join(""),H,!0)}catch{K.open(["G","E","T"].join(""),O+"/"+H,!0)}K.send()}return{load:B}}()),D.data.type==="loadAnimation")C.assetLoader.load(D.data.path,D.data.fullPath,function(G){C.dataManager.completeData(G),C.postMessage({id:D.data.id,payload:G,status:"success"})},function(){C.postMessage({id:D.data.id,status:"error"})});else if(D.data.type==="complete"){var N=D.data.animation;C.dataManager.completeData(N),C.postMessage({id:D.data.id,payload:N,status:"success"})}else D.data.type==="loadData"&&C.assetLoader.load(D.data.path,D.data.fullPath,function(G){C.postMessage({id:D.data.id,payload:G,status:"success"})},function(){C.postMessage({id:D.data.id,status:"error"})})}),S.onmessage=function(M){var D=M.data,F=D.id,N=u[F];u[F]=null,D.status==="success"?N.onComplete(D.payload):N.onError&&N.onError()})}function R(M,D){o+=1;var F="processId_"+o;return u[F]={onComplete:M,onError:D},F}function I(M,D,F){P();var N=R(D,F);S.postMessage({type:"loadAnimation",path:M,fullPath:window.location.origin+window.location.pathname,id:N})}function L(M,D,F){P();var N=R(D,F);S.postMessage({type:"loadData",path:M,fullPath:window.location.origin+window.location.pathname,id:N})}function j(M,D,F){P();var N=R(D,F);S.postMessage({type:"complete",animation:M,id:N})}return{loadAnimation:I,loadData:L,completeAnimation:j}}(),ImagePreloader=function(){var o=function(){var B=createTag("canvas");B.width=1,B.height=1;var H=B.getContext("2d");return H.fillStyle="rgba(0,0,0,0)",H.fillRect(0,0,1,1),B}();function u(){this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function T(){this.loadedFootagesCount+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function S(B,H,O){var V="";if(B.e)V=B.p;else if(H){var U=B.p;U.indexOf("images/")!==-1&&(U=U.split("/")[1]),V=H+U}else V=O,V+=B.u?B.u:"",V+=B.p;return V}function E(B){var H=0,O=setInterval((function(){var V=B.getBBox();(V.width||H>500)&&(this._imageLoaded(),clearInterval(O)),H+=1}).bind(this),50)}function C(B){var H=S(B,this.assetsPath,this.path),O=createNS("image");isSafari?this.testImageLoaded(O):O.addEventListener("load",this._imageLoaded,!1),O.addEventListener("error",(function(){V.img=o,this._imageLoaded()}).bind(this),!1),O.setAttributeNS("http://www.w3.org/1999/xlink","href",H),this._elementHelper.append?this._elementHelper.append(O):this._elementHelper.appendChild(O);var V={img:O,assetData:B};return V}function _(B){var H=S(B,this.assetsPath,this.path),O=createTag("img");O.crossOrigin="anonymous",O.addEventListener("load",this._imageLoaded,!1),O.addEventListener("error",(function(){V.img=o,this._imageLoaded()}).bind(this),!1),O.src=H;var V={img:O,assetData:B};return V}function P(B){var H={assetData:B},O=S(B,this.assetsPath,this.path);return dataManager.loadData(O,(function(V){H.img=V,this._footageLoaded()}).bind(this),(function(){H.img={},this._footageLoaded()}).bind(this)),H}function R(B,H){this.imagesLoadedCb=H;var O,V=B.length;for(O=0;O<V;O+=1)B[O].layers||(!B[O].t||B[O].t==="seq"?(this.totalImages+=1,this.images.push(this._createImageData(B[O]))):B[O].t===3&&(this.totalFootages+=1,this.images.push(this.createFootageData(B[O]))))}function I(B){this.path=B||""}function L(B){this.assetsPath=B||""}function j(B){for(var H=0,O=this.images.length;H<O;){if(this.images[H].assetData===B)return this.images[H].img;H+=1}return null}function M(){this.imagesLoadedCb=null,this.images.length=0}function D(){return this.totalImages===this.loadedAssets}function F(){return this.totalFootages===this.loadedFootagesCount}function N(B,H){B==="svg"?(this._elementHelper=H,this._createImageData=this.createImageData.bind(this)):this._createImageData=this.createImgData.bind(this)}function G(){this._imageLoaded=u.bind(this),this._footageLoaded=T.bind(this),this.testImageLoaded=E.bind(this),this.createFootageData=P.bind(this),this.assetsPath="",this.path="",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return G.prototype={loadAssets:R,setAssetsPath:L,setPath:I,loadedImages:D,loadedFootages:F,destroy:M,getAsset:j,createImgData:_,createImageData:C,imageLoaded:u,footageLoaded:T,setCacheType:N},G}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function(u,T){if(this._cbs[u])for(var S=this._cbs[u],E=0;E<S.length;E+=1)S[E](T)},addEventListener:function(u,T){return this._cbs[u]||(this._cbs[u]=[]),this._cbs[u].push(T),(function(){this.removeEventListener(u,T)}).bind(this)},removeEventListener:function(u,T){if(!T)this._cbs[u]=null;else if(this._cbs[u]){for(var S=0,E=this._cbs[u].length;S<E;)this._cbs[u][S]===T&&(this._cbs[u].splice(S,1),S-=1,E-=1),S+=1;this._cbs[u].length||(this._cbs[u]=null)}}};var markerParser=function(){function o(u){for(var T=u.split(`\r 315`),S={},E,C=0,_=0;_<T.length;_+=1)E=T[_].split(":"),E.length===2&&(S[E[0]]=E[1].trim(),C+=1);if(C===0)throw new Error;return S}return function(u){for(var T=[],S=0;S<u.length;S+=1){var E=u[S],C={time:E.tm,duration:E.dr};try{C.payload=JSON.parse(u[S].cm)}catch{try{C.payload=o(u[S].cm)}catch{C.payload={name:u[S].cm}}}T.push(C)}return T}}(),ProjectInterface=function(){function o(u){this.compositions.push(u)}return function(){function u(T){for(var S=0,E=this.compositions.length;S<E;){if(this.compositions[S].data&&this.compositions[S].data.nm===T)return this.compositions[S].prepareFrame&&this.compositions[S].data.xt&&this.compositions[S].prepareFrame(this.currentFrame),this.compositions[S].compInterface;S+=1}return null}return u.compositions=[],u.currentFrame=0,u.registerComposition=o,u}}(),renderers={},registerRenderer=function(u,T){renderers[u]=T};function getRenderer(o){return renderers[o]}function getRegisteredRenderer(){if(renderers.canvas)return"canvas";for(var o in renderers)if(renderers[o])return o;return""}function _typeof$4(o){"@babel/helpers - typeof";return _typeof$4=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$4(o)}var AnimationItem=function(){this._cbs=[],this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.firstFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.playCount=0,this.animationData={},this.assets=[],this.isPaused=!0,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=createElementID(),this.assetsPath="",this.timeCompleted=0,this.segmentPos=0,this.isSubframeEnabled=getSubframeEnabled(),this.segments=[],this._idle=!0,this._completedLoop=!1,this.projectInterface=ProjectInterface(),this.imagePreloader=new ImagePreloader,this.audioController=audioControllerFactory(),this.markers=[],this.configAnimation=this.configAnimation.bind(this),this.onSetupError=this.onSetupError.bind(this),this.onSegmentComplete=this.onSegmentComplete.bind(this),this.drawnFrameEvent=new BMEnterFrameEvent("drawnFrame",0,0,0),this.expressionsPlugin=getExpressionsPlugin()};extendPrototype([BaseEvent],AnimationItem),AnimationItem.prototype.setParams=function(o){(o.wrapper||o.container)&&(this.wrapper=o.wrapper||o.container);var u="svg";o.animType?u=o.animType:o.renderer&&(u=o.renderer);var T=getRenderer(u);this.renderer=new T(this,o.rendererSettings),this.imagePreloader.setCacheType(u,this.renderer.globalData.defs),this.renderer.setProjectInterface(this.projectInterface),this.animType=u,o.loop===""||o.loop===null||o.loop===void 0||o.loop===!0?this.loop=!0:o.loop===!1?this.loop=!1:this.loop=parseInt(o.loop,10),this.autoplay="autoplay"in o?o.autoplay:!0,this.name=o.name?o.name:"",this.autoloadSegments=Object.prototype.hasOwnProperty.call(o,"autoloadSegments")?o.autoloadSegments:!0,this.assetsPath=o.assetsPath,this.initialSegment=o.initialSegment,o.audioFactory&&this.audioController.setAudioFactory(o.audioFactory),o.animationData?this.setupAnimation(o.animationData):o.path&&(o.path.lastIndexOf("\\")!==-1?this.path=o.path.substr(0,o.path.lastIndexOf("\\")+1):this.path=o.path.substr(0,o.path.lastIndexOf("/")+1),this.fileName=o.path.substr(o.path.lastIndexOf("/")+1),this.fileName=this.fileName.substr(0,this.fileName.lastIndexOf(".json")),dataManager.loadAnimation(o.path,this.configAnimation,this.onSetupError))},AnimationItem.prototype.onSetupError=function(){this.trigger("data_failed")},AnimationItem.prototype.setupAnimation=function(o){dataManager.completeAnimation(o,this.configAnimation)},AnimationItem.prototype.setData=function(o,u){u&&_typeof$4(u)!=="object"&&(u=JSON.parse(u));var T={wrapper:o,animationData:u},S=o.attributes;T.path=S.getNamedItem("data-animation-path")?S.getNamedItem("data-animation-path").value:S.getNamedItem("data-bm-path")?S.getNamedItem("data-bm-path").value:S.getNamedItem("bm-path")?S.getNamedItem("bm-path").value:"",T.animType=S.getNamedItem("data-anim-type")?S.getNamedItem("data-anim-type").value:S.getNamedItem("data-bm-type")?S.getNamedItem("data-bm-type").value:S.getNamedItem("bm-type")?S.getNamedItem("bm-type").value:S.getNamedItem("data-bm-renderer")?S.getNamedItem("data-bm-renderer").value:S.getNamedItem("bm-renderer")?S.getNamedItem("bm-renderer").value:getRegisteredRenderer()||"canvas";var E=S.getNamedItem("data-anim-loop")?S.getNamedItem("data-anim-loop").value:S.getNamedItem("data-bm-loop")?S.getNamedItem("data-bm-loop").value:S.getNamedItem("bm-loop")?S.getNamedItem("bm-loop").value:"";E==="false"?T.loop=!1:E==="true"?T.loop=!0:E!==""&&(T.loop=parseInt(E,10));var C=S.getNamedItem("data-anim-autoplay")?S.getNamedItem("data-anim-autoplay").value:S.getNamedItem("data-bm-autoplay")?S.getNamedItem("data-bm-autoplay").value:S.getNamedItem("bm-autoplay")?S.getNamedItem("bm-autoplay").value:!0;T.autoplay=C!=="false",T.name=S.getNamedItem("data-name")?S.getNamedItem("data-name").value:S.getNamedItem("data-bm-name")?S.getNamedItem("data-bm-name").value:S.getNamedItem("bm-name")?S.getNamedItem("bm-name").value:"";var _=S.getNamedItem("data-anim-prerender")?S.getNamedItem("data-anim-prerender").value:S.getNamedItem("data-bm-prerender")?S.getNamedItem("data-bm-prerender").value:S.getNamedItem("bm-prerender")?S.getNamedItem("bm-prerender").value:"";_==="false"&&(T.prerender=!1),T.path?this.setParams(T):this.trigger("destroy")},AnimationItem.prototype.includeLayers=function(o){o.op>this.animationData.op&&(this.animationData.op=o.op,this.totalFrames=Math.floor(o.op-this.animationData.ip));var u=this.animationData.layers,T,S=u.length,E=o.layers,C,_=E.length;for(C=0;C<_;C+=1)for(T=0;T<S;){if(u[T].id===E[C].id){u[T]=E[C];break}T+=1}if((o.chars||o.fonts)&&(this.renderer.globalData.fontManager.addChars(o.chars),this.renderer.globalData.fontManager.addFonts(o.fonts,this.renderer.globalData.defs)),o.assets)for(S=o.assets.length,T=0;T<S;T+=1)this.animationData.assets.push(o.assets[T]);this.animationData.__complete=!1,dataManager.completeAnimation(this.animationData,this.onSegmentComplete)},AnimationItem.prototype.onSegmentComplete=function(o){this.animationData=o;var u=getExpressionsPlugin();u&&u.initExpressions(this),this.loadNextSegment()},AnimationItem.prototype.loadNextSegment=function(){var o=this.animationData.segments;if(!o||o.length===0||!this.autoloadSegments){this.trigger("data_ready"),this.timeCompleted=this.totalFrames;return}var u=o.shift();this.timeCompleted=u.time*this.frameRate;var T=this.path+this.fileName+"_"+this.segmentPos+".json";this.segmentPos+=1,dataManager.loadData(T,this.includeLayers.bind(this),(function(){this.trigger("data_failed")}).bind(this))},AnimationItem.prototype.loadSegments=function(){var o=this.animationData.segments;o||(this.timeCompleted=this.totalFrames),this.loadNextSegment()},AnimationItem.prototype.imagesLoaded=function(){this.trigger("loaded_images"),this.checkLoaded()},AnimationItem.prototype.preloadImages=function(){this.imagePreloader.setAssetsPath(this.assetsPath),this.imagePreloader.setPath(this.path),this.imagePreloader.loadAssets(this.animationData.assets,this.imagesLoaded.bind(this))},AnimationItem.prototype.configAnimation=function(o){if(this.renderer)try{this.animationData=o,this.initialSegment?(this.totalFrames=Math.floor(this.initialSegment[1]-this.initialSegment[0]),this.firstFrame=Math.round(this.initialSegment[0])):(this.totalFrames=Math.floor(this.animationData.op-this.animationData.ip),this.firstFrame=Math.round(this.animationData.ip)),this.renderer.configAnimation(o),o.assets||(o.assets=[]),this.assets=this.animationData.assets,this.frameRate=this.animationData.fr,this.frameMult=this.animationData.fr/1e3,this.renderer.searchExtraCompositions(o.assets),this.markers=markerParser(o.markers||[]),this.trigger("config_ready"),this.preloadImages(),this.loadSegments(),this.updaFrameModifier(),this.waitForFontsLoaded(),this.isPaused&&this.audioController.pause()}catch(u){this.triggerConfigError(u)}},AnimationItem.prototype.waitForFontsLoaded=function(){this.renderer&&(this.renderer.globalData.fontManager.isLoaded?this.checkLoaded():setTimeout(this.waitForFontsLoaded.bind(this),20))},AnimationItem.prototype.checkLoaded=function(){if(!this.isLoaded&&this.renderer.globalData.fontManager.isLoaded&&(this.imagePreloader.loadedImages()||this.renderer.rendererType!=="canvas")&&this.imagePreloader.loadedFootages()){this.isLoaded=!0;var o=getExpressionsPlugin();o&&o.initExpressions(this),this.renderer.initItems(),setTimeout((function(){this.trigger("DOMLoaded")}).bind(this),0),this.gotoFrame(),this.autoplay&&this.play()}},AnimationItem.prototype.resize=function(o,u){var T=typeof o=="number"?o:void 0,S=typeof u=="number"?u:void 0;this.renderer.updateContainerSize(T,S)},AnimationItem.prototype.setSubframe=function(o){this.isSubframeEnabled=!!o},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=this.isSubframeEnabled?this.currentRawFrame:~~this.currentRawFrame,this.timeCompleted!==this.totalFrames&&this.currentFrame>this.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame(),this.trigger("drawnFrame")},AnimationItem.prototype.renderFrame=function(){if(!(this.isLoaded===!1||!this.renderer))try{this.expressionsPlugin&&this.expressionsPlugin.resetFrame(),this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(o){this.triggerRenderFrameError(o)}},AnimationItem.prototype.play=function(o){o&&this.name!==o||this.isPaused===!0&&(this.isPaused=!1,this.trigger("_play"),this.audioController.resume(),this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(o){o&&this.name!==o||this.isPaused===!1&&(this.isPaused=!0,this.trigger("_pause"),this._idle=!0,this.trigger("_idle"),this.audioController.pause())},AnimationItem.prototype.togglePause=function(o){o&&this.name!==o||(this.isPaused===!0?this.play():this.pause())},AnimationItem.prototype.stop=function(o){o&&this.name!==o||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.getMarkerData=function(o){for(var u,T=0;T<this.markers.length;T+=1)if(u=this.markers[T],u.payload&&u.payload.name===o)return u;return null},AnimationItem.prototype.goToAndStop=function(o,u,T){if(!(T&&this.name!==T)){var S=Number(o);if(isNaN(S)){var E=this.getMarkerData(o);E&&this.goToAndStop(E.time,!0)}else u?this.setCurrentRawFrameValue(o):this.setCurrentRawFrameValue(o*this.frameModifier);this.pause()}},AnimationItem.prototype.goToAndPlay=function(o,u,T){if(!(T&&this.name!==T)){var S=Number(o);if(isNaN(S)){var E=this.getMarkerData(o);E&&(E.duration?this.playSegments([E.time,E.time+E.duration],!0):this.goToAndStop(E.time,!0))}else this.goToAndStop(S,u,T);this.play()}},AnimationItem.prototype.advanceTime=function(o){if(!(this.isPaused===!0||this.isLoaded===!1)){var u=this.currentRawFrame+o*this.frameModifier,T=!1;u>=this.totalFrames-1&&this.frameModifier>0?!this.loop||this.playCount===this.loop?this.checkSegments(u>this.totalFrames?u%this.totalFrames:0)||(T=!0,u=this.totalFrames-1):u>=this.totalFrames?(this.playCount+=1,this.checkSegments(u%this.totalFrames)||(this.setCurrentRawFrameValue(u%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(u):u<0?this.checkSegments(u%this.totalFrames)||(this.loop&&!(this.playCount--<=0&&this.loop!==!0)?(this.setCurrentRawFrameValue(this.totalFrames+u%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0):(T=!0,u=0)):this.setCurrentRawFrameValue(u),T&&(this.setCurrentRawFrameValue(u),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(o,u){this.playCount=0,o[1]<o[0]?(this.frameModifier>0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.totalFrames=o[0]-o[1],this.timeCompleted=this.totalFrames,this.firstFrame=o[1],this.setCurrentRawFrameValue(this.totalFrames-.001-u)):o[1]>o[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.totalFrames=o[1]-o[0],this.timeCompleted=this.totalFrames,this.firstFrame=o[0],this.setCurrentRawFrameValue(.001+u)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(o,u){var T=-1;this.isPaused&&(this.currentRawFrame+this.firstFrame<o?T=o:this.currentRawFrame+this.firstFrame>u&&(T=u-o)),this.firstFrame=o,this.totalFrames=u-o,this.timeCompleted=this.totalFrames,T!==-1&&this.goToAndStop(T,!0)},AnimationItem.prototype.playSegments=function(o,u){if(u&&(this.segments.length=0),_typeof$4(o[0])==="object"){var T,S=o.length;for(T=0;T<S;T+=1)this.segments.push(o[T])}else this.segments.push(o);this.segments.length&&u&&this.adjustSegment(this.segments.shift(),0),this.isPaused&&this.play()},AnimationItem.prototype.resetSegments=function(o){this.segments.length=0,this.segments.push([this.animationData.ip,this.animationData.op]),o&&this.checkSegments(0)},AnimationItem.prototype.checkSegments=function(o){return this.segments.length?(this.adjustSegment(this.segments.shift(),o),!0):!1},AnimationItem.prototype.destroy=function(o){o&&this.name!==o||!this.renderer||(this.renderer.destroy(),this.imagePreloader.destroy(),this.trigger("destroy"),this._cbs=null,this.onEnterFrame=null,this.onLoopComplete=null,this.onComplete=null,this.onSegmentStart=null,this.onDestroy=null,this.renderer=null,this.expressionsPlugin=null,this.imagePreloader=null,this.projectInterface=null)},AnimationItem.prototype.setCurrentRawFrameValue=function(o){this.currentRawFrame=o,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(o){this.playSpeed=o,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(o){this.playDirection=o<0?-1:1,this.updaFrameModifier()},AnimationItem.prototype.setLoop=function(o){this.loop=o},AnimationItem.prototype.setVolume=function(o,u){u&&this.name!==u||this.audioController.setVolume(o)},AnimationItem.prototype.getVolume=function(){return this.audioController.getVolume()},AnimationItem.prototype.mute=function(o){o&&this.name!==o||this.audioController.mute()},AnimationItem.prototype.unmute=function(o){o&&this.name!==o||this.audioController.unmute()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection,this.audioController.setRate(this.playSpeed*this.playDirection)},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssetsPath=function(o){var u="";if(o.e)u=o.p;else if(this.assetsPath){var T=o.p;T.indexOf("images/")!==-1&&(T=T.split("/")[1]),u=this.assetsPath+T}else u=this.path,u+=o.u?o.u:"",u+=o.p;return u},AnimationItem.prototype.getAssetData=function(o){for(var u=0,T=this.assets.length;u<T;){if(o===this.assets[u].id)return this.assets[u];u+=1}return null},AnimationItem.prototype.hide=function(){this.renderer.hide()},AnimationItem.prototype.show=function(){this.renderer.show()},AnimationItem.prototype.getDuration=function(o){return o?this.totalFrames:this.totalFrames/this.frameRate},AnimationItem.prototype.updateDocumentData=function(o,u,T){try{var S=this.renderer.getElementByPath(o);S.updateDocumentData(u,T)}catch{}},AnimationItem.prototype.trigger=function(o){if(this._cbs&&this._cbs[o])switch(o){case"enterFrame":this.triggerEvent(o,new BMEnterFrameEvent(o,this.currentFrame,this.totalFrames,this.frameModifier));break;case"drawnFrame":this.drawnFrameEvent.currentTime=this.currentFrame,this.drawnFrameEvent.totalTime=this.totalFrames,this.drawnFrameEvent.direction=this.frameModifier,this.triggerEvent(o,this.drawnFrameEvent);break;case"loopComplete":this.triggerEvent(o,new BMCompleteLoopEvent(o,this.loop,this.playCount,this.frameMult));break;case"complete":this.triggerEvent(o,new BMCompleteEvent(o,this.frameMult));break;case"segmentStart":this.triggerEvent(o,new BMSegmentStartEvent(o,this.firstFrame,this.totalFrames));break;case"destroy":this.triggerEvent(o,new BMDestroyEvent(o,this));break;default:this.triggerEvent(o)}o==="enterFrame"&&this.onEnterFrame&&this.onEnterFrame.call(this,new BMEnterFrameEvent(o,this.currentFrame,this.totalFrames,this.frameMult)),o==="loopComplete"&&this.onLoopComplete&&this.onLoopComplete.call(this,new BMCompleteLoopEvent(o,this.loop,this.playCount,this.frameMult)),o==="complete"&&this.onComplete&&this.onComplete.call(this,new BMCompleteEvent(o,this.frameMult)),o==="segmentStart"&&this.onSegmentStart&&this.onSegmentStart.call(this,new BMSegmentStartEvent(o,this.firstFrame,this.totalFrames)),o==="destroy"&&this.onDestroy&&this.onDestroy.call(this,new BMDestroyEvent(o,this))},AnimationItem.prototype.triggerRenderFrameError=function(o){var u=new BMRenderFrameErrorEvent(o,this.currentFrame);this.triggerEvent("error",u),this.onError&&this.onError.call(this,u)},AnimationItem.prototype.triggerConfigError=function(o){var u=new BMConfigErrorEvent(o,this.currentFrame);this.triggerEvent("error",u),this.onError&&this.onError.call(this,u)};var animationManager=function(){var o={},u=[],T=0,S=0,E=0,C=!0,_=!1;function P(J){for(var te=0,Z=J.target;te<S;)u[te].animation===Z&&(u.splice(te,1),te-=1,S-=1,Z.isPaused||j()),te+=1}function R(J,te){if(!J)return null;for(var Z=0;Z<S;){if(u[Z].elem===J&&u[Z].elem!==null)return u[Z].animation;Z+=1}var X=new AnimationItem;return M(X,J),X.setData(J,te),X}function I(){var J,te=u.length,Z=[];for(J=0;J<te;J+=1)Z.push(u[J].animation);return Z}function L(){E+=1,oe()}function j(){E-=1}function M(J,te){J.addEventListener("destroy",P),J.addEventListener("_active",L),J.addEventListener("_idle",j),u.push({elem:te,animation:J}),S+=1}function D(J){var te=new AnimationItem;return M(te,null),te.setParams(J),te}function F(J,te){var Z;for(Z=0;Z<S;Z+=1)u[Z].animation.setSpeed(J,te)}function N(J,te){var Z;for(Z=0;Z<S;Z+=1)u[Z].animation.setDirection(J,te)}function G(J){var te;for(te=0;te<S;te+=1)u[te].animation.play(J)}function B(J){var te=J-T,Z;for(Z=0;Z<S;Z+=1)u[Z].animation.advanceTime(te);T=J,E&&!_?window.requestAnimationFrame(B):C=!0}function H(J){T=J,window.requestAnimationFrame(B)}function O(J){var te;for(te=0;te<S;te+=1)u[te].animation.pause(J)}function V(J,te,Z){var X;for(X=0;X<S;X+=1)u[X].animation.goToAndStop(J,te,Z)}function U(J){var te;for(te=0;te<S;te+=1)u[te].animation.stop(J)}function W(J){var te;for(te=0;te<S;te+=1)u[te].animation.togglePause(J)}function K(J){var te;for(te=S-1;te>=0;te-=1)u[te].animation.destroy(J)}function Y(J,te,Z){var X=[].concat([].slice.call(document.getElementsByClassName("lottie")),[].slice.call(document.getElementsByClassName("bodymovin"))),de,he=X.length;for(de=0;de<he;de+=1)Z&&X[de].setAttribute("data-bm-type",Z),R(X[de],J);if(te&&he===0){Z||(Z="svg");var ne=document.getElementsByTagName("body")[0];ne.innerText="";var ue=createTag("div");ue.style.width="100%",ue.style.height="100%",ue.setAttribute("data-bm-type",Z),ne.appendChild(ue),R(ue,J)}}function ee(){var J;for(J=0;J<S;J+=1)u[J].animation.resize()}function oe(){!_&&E&&C&&(window.requestAnimationFrame(H),C=!1)}function se(){_=!0}function Q(){_=!1,oe()}function ie(J,te){var Z;for(Z=0;Z<S;Z+=1)u[Z].animation.setVolume(J,te)}function ae(J){var te;for(te=0;te<S;te+=1)u[te].animation.mute(J)}function re(J){var te;for(te=0;te<S;te+=1)u[te].animation.unmute(J)}return o.registerAnimation=R,o.loadAnimation=D,o.setSpeed=F,o.setDirection=N,o.play=G,o.pause=O,o.stop=U,o.togglePause=W,o.searchAnimations=Y,o.resize=ee,o.goToAndStop=V,o.destroy=K,o.freeze=se,o.unfreeze=Q,o.setVolume=ie,o.mute=ae,o.unmute=re,o.getRegisteredAnimations=I,o}(),BezierFactory=function(){var o={};o.getBezierEasing=T;var u={};function T(H,O,V,U,W){var K=W||("bez_"+H+"_"+O+"_"+V+"_"+U).replace(/\./g,"p");if(u[K])return u[K];var Y=new B([H,O,V,U]);return u[K]=Y,Y}var S=4,E=.001,C=1e-7,_=10,P=11,R=1/(P-1),I=typeof Float32Array=="function";function L(H,O){return 1-3*O+3*H}function j(H,O){return 3*O-6*H}function M(H){return 3*H}function D(H,O,V){return((L(O,V)*H+j(O,V))*H+M(O))*H}function F(H,O,V){return 3*L(O,V)*H*H+2*j(O,V)*H+M(O)}function N(H,O,V,U,W){var K,Y,ee=0;do Y=O+(V-O)/2,K=D(Y,U,W)-H,K>0?V=Y:O=Y;while(Math.abs(K)>C&&++ee<_);return Y}function G(H,O,V,U){for(var W=0;W<S;++W){var K=F(O,V,U);if(K===0)return O;var Y=D(O,V,U)-H;O-=Y/K}return O}function B(H){this._p=H,this._mSampleValues=I?new Float32Array(P):new Array(P),this._precomputed=!1,this.get=this.get.bind(this)}return B.prototype={get:function(O){var V=this._p[0],U=this._p[1],W=this._p[2],K=this._p[3];return this._precomputed||this._precompute(),V===U&&W===K?O:O===0?0:O===1?1:D(this._getTForX(O),U,K)},_precompute:function(){var O=this._p[0],V=this._p[1],U=this._p[2],W=this._p[3];this._precomputed=!0,(O!==V||U!==W)&&this._calcSampleValues()},_calcSampleValues:function(){for(var O=this._p[0],V=this._p[2],U=0;U<P;++U)this._mSampleValues[U]=D(U*R,O,V)},_getTForX:function(O){for(var V=this._p[0],U=this._p[2],W=this._mSampleValues,K=0,Y=1,ee=P-1;Y!==ee&&W[Y]<=O;++Y)K+=R;--Y;var oe=(O-W[Y])/(W[Y+1]-W[Y]),se=K+oe*R,Q=F(se,V,U);return Q>=E?G(O,se,V,U):Q===0?se:N(O,K,K+R,V,U)}},o}(),pooling=function(){function o(u){return u.concat(createSizedArray(u.length))}return{double:o}}(),poolFactory=function(){return function(o,u,T){var S=0,E=o,C=createSizedArray(E),_={newElement:P,release:R};function P(){var I;return S?(S-=1,I=C[S]):I=u(),I}function R(I){S===E&&(C=pooling.double(C),E*=2),T&&T(I),C[S]=I,S+=1}return _}}(),bezierLengthPool=function(){function o(){return{addedLength:0,percents:createTypedArray("float32",getDefaultCurveSegments()),lengths:createTypedArray("float32",getDefaultCurveSegments())}}return poolFactory(8,o)}(),segmentsLengthPool=function(){function o(){return{lengths:[],totalLength:0}}function u(T){var S,E=T.lengths.length;for(S=0;S<E;S+=1)bezierLengthPool.release(T.lengths[S]);T.lengths.length=0}return poolFactory(8,o,u)}();function bezFunction(){var o=Math;function u(M,D,F,N,G,B){var H=M*N+D*G+F*B-G*N-B*M-F*D;return H>-.001&&H<.001}function T(M,D,F,N,G,B,H,O,V){if(F===0&&B===0&&V===0)return u(M,D,N,G,H,O);var U=o.sqrt(o.pow(N-M,2)+o.pow(G-D,2)+o.pow(B-F,2)),W=o.sqrt(o.pow(H-M,2)+o.pow(O-D,2)+o.pow(V-F,2)),K=o.sqrt(o.pow(H-N,2)+o.pow(O-G,2)+o.pow(V-B,2)),Y;return U>W?U>K?Y=U-W-K:Y=K-W-U:K>W?Y=K-W-U:Y=W-U-K,Y>-1e-4&&Y<1e-4}var S=function(){return function(M,D,F,N){var G=getDefaultCurveSegments(),B,H,O,V,U,W=0,K,Y=[],ee=[],oe=bezierLengthPool.newElement();for(O=F.length,B=0;B<G;B+=1){for(U=B/(G-1),K=0,H=0;H<O;H+=1)V=bmPow(1-U,3)*M[H]+3*bmPow(1-U,2)*U*F[H]+3*(1-U)*bmPow(U,2)*N[H]+bmPow(U,3)*D[H],Y[H]=V,ee[H]!==null&&(K+=bmPow(Y[H]-ee[H],2)),ee[H]=Y[H];K&&(K=bmSqrt(K),W+=K),oe.percents[B]=U,oe.lengths[B]=W}return oe.addedLength=W,oe}}();function E(M){var D=segmentsLengthPool.newElement(),F=M.c,N=M.v,G=M.o,B=M.i,H,O=M._length,V=D.lengths,U=0;for(H=0;H<O-1;H+=1)V[H]=S(N[H],N[H+1],G[H],B[H+1]),U+=V[H].addedLength;return F&&O&&(V[H]=S(N[H],N[0],G[H],B[0]),U+=V[H].addedLength),D.totalLength=U,D}function C(M){this.segmentLength=0,this.points=new Array(M)}function _(M,D){this.partialLength=M,this.point=D}var P=function(){var M={};return function(D,F,N,G){var B=(D[0]+"_"+D[1]+"_"+F[0]+"_"+F[1]+"_"+N[0]+"_"+N[1]+"_"+G[0]+"_"+G[1]).replace(/\./g,"p");if(!M[B]){var H=getDefaultCurveSegments(),O,V,U,W,K,Y=0,ee,oe,se=null;D.length===2&&(D[0]!==F[0]||D[1]!==F[1])&&u(D[0],D[1],F[0],F[1],D[0]+N[0],D[1]+N[1])&&u(D[0],D[1],F[0],F[1],F[0]+G[0],F[1]+G[1])&&(H=2);var Q=new C(H);for(U=N.length,O=0;O<H;O+=1){for(oe=createSizedArray(U),K=O/(H-1),ee=0,V=0;V<U;V+=1)W=bmPow(1-K,3)*D[V]+3*bmPow(1-K,2)*K*(D[V]+N[V])+3*(1-K)*bmPow(K,2)*(F[V]+G[V])+bmPow(K,3)*F[V],oe[V]=W,se!==null&&(ee+=bmPow(oe[V]-se[V],2));ee=bmSqrt(ee),Y+=ee,Q.points[O]=new _(ee,oe),se=oe}Q.segmentLength=Y,M[B]=Q}return M[B]}}();function R(M,D){var F=D.percents,N=D.lengths,G=F.length,B=bmFloor((G-1)*M),H=M*D.addedLength,O=0;if(B===G-1||B===0||H===N[B])return F[B];for(var V=N[B]>H?-1:1,U=!0;U;)if(N[B]<=H&&N[B+1]>H?(O=(H-N[B])/(N[B+1]-N[B]),U=!1):B+=V,B<0||B>=G-1){if(B===G-1)return F[B];U=!1}return F[B]+(F[B+1]-F[B])*O}function I(M,D,F,N,G,B){var H=R(G,B),O=1-H,V=o.round((O*O*O*M[0]+(H*O*O+O*H*O+O*O*H)*F[0]+(H*H*O+O*H*H+H*O*H)*N[0]+H*H*H*D[0])*1e3)/1e3,U=o.round((O*O*O*M[1]+(H*O*O+O*H*O+O*O*H)*F[1]+(H*H*O+O*H*H+H*O*H)*N[1]+H*H*H*D[1])*1e3)/1e3;return[V,U]}var L=createTypedArray("float32",8);function j(M,D,F,N,G,B,H){G<0?G=0:G>1&&(G=1);var O=R(G,H);B=B>1?1:B;var V=R(B,H),U,W=M.length,K=1-O,Y=1-V,ee=K*K*K,oe=O*K*K*3,se=O*O*K*3,Q=O*O*O,ie=K*K*Y,ae=O*K*Y+K*O*Y+K*K*V,re=O*O*Y+K*O*V+O*K*V,J=O*O*V,te=K*Y*Y,Z=O*Y*Y+K*V*Y+K*Y*V,X=O*V*Y+K*V*V+O*Y*V,de=O*V*V,he=Y*Y*Y,ne=V*Y*Y+Y*V*Y+Y*Y*V,ue=V*V*Y+Y*V*V+V*Y*V,ce=V*V*V;for(U=0;U<W;U+=1)L[U*4]=o.round((ee*M[U]+oe*F[U]+se*N[U]+Q*D[U])*1e3)/1e3,L[U*4+1]=o.round((ie*M[U]+ae*F[U]+re*N[U]+J*D[U])*1e3)/1e3,L[U*4+2]=o.round((te*M[U]+Z*F[U]+X*N[U]+de*D[U])*1e3)/1e3,L[U*4+3]=o.round((he*M[U]+ne*F[U]+ue*N[U]+ce*D[U])*1e3)/1e3;return L}return{getSegmentsLength:E,getNewSegment:j,getPointInSegment:I,buildBezierData:P,pointOnLine2D:u,pointOnLine3D:T}}var bez=bezFunction(),initFrame=initialDefaultFrame,mathAbs=Math.abs;function interpolateValue(o,u){var T=this.offsetTime,S;this.propType==="multidimensional"&&(S=createTypedArray("float32",this.pv.length));for(var E=u.lastIndex,C=E,_=this.keyframes.length-1,P=!0,R,I,L;P;){if(R=this.keyframes[C],I=this.keyframes[C+1],C===_-1&&o>=I.t-T){R.h&&(R=I),E=0;break}if(I.t-T>o){E=C;break}C<_-1?C+=1:(E=0,P=!1)}L=this.keyframesMetadata[C]||{};var j,M,D,F,N,G,B=I.t-T,H=R.t-T,O;if(R.to){L.bezierData||(L.bezierData=bez.buildBezierData(R.s,I.s||R.e,R.to,R.ti));var V=L.bezierData;if(o>=B||o<H){var U=o>=B?V.points.length-1:0;for(M=V.points[U].point.length,j=0;j<M;j+=1)S[j]=V.points[U].point[j]}else{L.__fnct?G=L.__fnct:(G=BezierFactory.getBezierEasing(R.o.x,R.o.y,R.i.x,R.i.y,R.n).get,L.__fnct=G),D=G((o-H)/(B-H));var W=V.segmentLength*D,K,Y=u.lastFrame<o&&u._lastKeyframeIndex===C?u._lastAddedLength:0;for(N=u.lastFrame<o&&u._lastKeyframeIndex===C?u._lastPoint:0,P=!0,F=V.points.length;P;){if(Y+=V.points[N].partialLength,W===0||D===0||N===V.points.length-1){for(M=V.points[N].point.length,j=0;j<M;j+=1)S[j]=V.points[N].point[j];break}else if(W>=Y&&W<Y+V.points[N+1].partialLength){for(K=(W-Y)/V.points[N+1].partialLength,M=V.points[N].point.length,j=0;j<M;j+=1)S[j]=V.points[N].point[j]+(V.points[N+1].point[j]-V.points[N].point[j])*K;break}N<F-1?N+=1:P=!1}u._lastPoint=N,u._lastAddedLength=Y-V.points[N].partialLength,u._lastKeyframeIndex=C}}else{var ee,oe,se,Q,ie;if(_=R.s.length,O=I.s||R.e,this.sh&&R.h!==1)if(o>=B)S[0]=O[0],S[1]=O[1],S[2]=O[2];else if(o<=H)S[0]=R.s[0],S[1]=R.s[1],S[2]=R.s[2];else{var ae=createQuaternion(R.s),re=createQuaternion(O),J=(o-H)/(B-H);quaternionToEuler(S,slerp(ae,re,J))}else for(C=0;C<_;C+=1)R.h!==1&&(o>=B?D=1:o<H?D=0:(R.o.x.constructor===Array?(L.__fnct||(L.__fnct=[]),L.__fnct[C]?G=L.__fnct[C]:(ee=R.o.x[C]===void 0?R.o.x[0]:R.o.x[C],oe=R.o.y[C]===void 0?R.o.y[0]:R.o.y[C],se=R.i.x[C]===void 0?R.i.x[0]:R.i.x[C],Q=R.i.y[C]===void 0?R.i.y[0]:R.i.y[C],G=BezierFactory.getBezierEasing(ee,oe,se,Q).get,L.__fnct[C]=G)):L.__fnct?G=L.__fnct:(ee=R.o.x,oe=R.o.y,se=R.i.x,Q=R.i.y,G=BezierFactory.getBezierEasing(ee,oe,se,Q).get,R.keyframeMetadata=G),D=G((o-H)/(B-H)))),O=I.s||R.e,ie=R.h===1?R.s[C]:R.s[C]+(O[C]-R.s[C])*D,this.propType==="multidimensional"?S[C]=ie:S=ie}return u.lastIndex=E,S}function slerp(o,u,T){var S=[],E=o[0],C=o[1],_=o[2],P=o[3],R=u[0],I=u[1],L=u[2],j=u[3],M,D,F,N,G;return D=E*R+C*I+_*L+P*j,D<0&&(D=-D,R=-R,I=-I,L=-L,j=-j),1-D>1e-6?(M=Math.acos(D),F=Math.sin(M),N=Math.sin((1-T)*M)/F,G=Math.sin(T*M)/F):(N=1-T,G=T),S[0]=N*E+G*R,S[1]=N*C+G*I,S[2]=N*_+G*L,S[3]=N*P+G*j,S}function quaternionToEuler(o,u){var T=u[0],S=u[1],E=u[2],C=u[3],_=Math.atan2(2*S*C-2*T*E,1-2*S*S-2*E*E),P=Math.asin(2*T*S+2*E*C),R=Math.atan2(2*T*C-2*S*E,1-2*T*T-2*E*E);o[0]=_/degToRads,o[1]=P/degToRads,o[2]=R/degToRads}function createQuaternion(o){var u=o[0]*degToRads,T=o[1]*degToRads,S=o[2]*degToRads,E=Math.cos(u/2),C=Math.cos(T/2),_=Math.cos(S/2),P=Math.sin(u/2),R=Math.sin(T/2),I=Math.sin(S/2),L=E*C*_-P*R*I,j=P*R*_+E*C*I,M=P*C*_+E*R*I,D=E*R*_-P*C*I;return[j,M,D,L]}function getValueAtCurrentTime(){var o=this.comp.renderedFrame-this.offsetTime,u=this.keyframes[0].t-this.offsetTime,T=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(o===this._caching.lastFrame||this._caching.lastFrame!==initFrame&&(this._caching.lastFrame>=T&&o>=T||this._caching.lastFrame<u&&o<u))){this._caching.lastFrame>=o&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var S=this.interpolateValue(o,this._caching);this.pv=S}return this._caching.lastFrame=o,this.pv}function setVValue(o){var u;if(this.propType==="unidimensional")u=o*this.mult,mathAbs(this.v-u)>1e-5&&(this.v=u,this._mdf=!0);else for(var T=0,S=this.v.length;T<S;)u=o[T]*this.mult,mathAbs(this.v[T]-u)>1e-5&&(this.v[T]=u,this._mdf=!0),T+=1}function processEffectsSequence(){if(!(this.elem.globalData.frameId===this.frameId||!this.effectsSequence.length)){if(this.lock){this.setVValue(this.pv);return}this.lock=!0,this._mdf=this._isFirstFrame;var o,u=this.effectsSequence.length,T=this.kf?this.pv:this.data.k;for(o=0;o<u;o+=1)T=this.effectsSequence[o](T);this.setVValue(T),this._isFirstFrame=!1,this.lock=!1,this.frameId=this.elem.globalData.frameId}}function addEffect(o){this.effectsSequence.push(o),this.container.addDynamicProperty(this)}function ValueProperty(o,u,T,S){this.propType="unidimensional",this.mult=T||1,this.data=u,this.v=T?u.k*T:u.k,this.pv=u.k,this._mdf=!1,this.elem=o,this.container=S,this.comp=o.comp,this.k=!1,this.kf=!1,this.vel=0,this.effectsSequence=[],this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function MultiDimensionalProperty(o,u,T,S){this.propType="multidimensional",this.mult=T||1,this.data=u,this._mdf=!1,this.elem=o,this.container=S,this.comp=o.comp,this.k=!1,this.kf=!1,this.frameId=-1;var E,C=u.k.length;for(this.v=createTypedArray("float32",C),this.pv=createTypedArray("float32",C),this.vel=createTypedArray("float32",C),E=0;E<C;E+=1)this.v[E]=u.k[E]*this.mult,this.pv[E]=u.k[E];this._isFirstFrame=!0,this.effectsSequence=[],this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function KeyframedValueProperty(o,u,T,S){this.propType="unidimensional",this.keyframes=u.k,this.keyframesMetadata=[],this.offsetTime=o.data.st,this.frameId=-1,this._caching={lastFrame:initFrame,lastIndex:0,value:0,_lastKeyframeIndex:-1},this.k=!0,this.kf=!0,this.data=u,this.mult=T||1,this.elem=o,this.container=S,this.comp=o.comp,this.v=initFrame,this.pv=initFrame,this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.addEffect=addEffect}function KeyframedMultidimensionalProperty(o,u,T,S){this.propType="multidimensional";var E,C=u.k.length,_,P,R,I;for(E=0;E<C-1;E+=1)u.k[E].to&&u.k[E].s&&u.k[E+1]&&u.k[E+1].s&&(_=u.k[E].s,P=u.k[E+1].s,R=u.k[E].to,I=u.k[E].ti,(_.length===2&&!(_[0]===P[0]&&_[1]===P[1])&&bez.pointOnLine2D(_[0],_[1],P[0],P[1],_[0]+R[0],_[1]+R[1])&&bez.pointOnLine2D(_[0],_[1],P[0],P[1],P[0]+I[0],P[1]+I[1])||_.length===3&&!(_[0]===P[0]&&_[1]===P[1]&&_[2]===P[2])&&bez.pointOnLine3D(_[0],_[1],_[2],P[0],P[1],P[2],_[0]+R[0],_[1]+R[1],_[2]+R[2])&&bez.pointOnLine3D(_[0],_[1],_[2],P[0],P[1],P[2],P[0]+I[0],P[1]+I[1],P[2]+I[2]))&&(u.k[E].to=null,u.k[E].ti=null),_[0]===P[0]&&_[1]===P[1]&&R[0]===0&&R[1]===0&&I[0]===0&&I[1]===0&&(_.length===2||_[2]===P[2]&&R[2]===0&&I[2]===0)&&(u.k[E].to=null,u.k[E].ti=null));this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.data=u,this.keyframes=u.k,this.keyframesMetadata=[],this.offsetTime=o.data.st,this.k=!0,this.kf=!0,this._isFirstFrame=!0,this.mult=T||1,this.elem=o,this.container=S,this.comp=o.comp,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.frameId=-1;var L=u.k[0].s.length;for(this.v=createTypedArray("float32",L),this.pv=createTypedArray("float32",L),E=0;E<L;E+=1)this.v[E]=initFrame,this.pv[E]=initFrame;this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray("float32",L)},this.addEffect=addEffect}var PropertyFactory=function(){function o(T,S,E,C,_){S.sid&&(S=T.globalData.slotManager.getProp(S));var P;if(!S.k.length)P=new ValueProperty(T,S,C,_);else if(typeof S.k[0]=="number")P=new MultiDimensionalProperty(T,S,C,_);else switch(E){case 0:P=new KeyframedValueProperty(T,S,C,_);break;case 1:P=new KeyframedMultidimensionalProperty(T,S,C,_);break}return P.effectsSequence.length&&_.addDynamicProperty(P),P}var u={getProp:o};return u}();function DynamicPropertyContainer(){}DynamicPropertyContainer.prototype={addDynamicProperty:function(u){this.dynamicProperties.indexOf(u)===-1&&(this.dynamicProperties.push(u),this.container.addDynamicProperty(this),this._isAnimated=!0)},iterateDynamicProperties:function(){this._mdf=!1;var u,T=this.dynamicProperties.length;for(u=0;u<T;u+=1)this.dynamicProperties[u].getValue(),this.dynamicProperties[u]._mdf&&(this._mdf=!0)},initDynamicPropertyContainer:function(u){this.container=u,this.dynamicProperties=[],this._mdf=!1,this._isAnimated=!1}};var pointPool=function(){function o(){return createTypedArray("float32",2)}return poolFactory(8,o)}();function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(o,u){this.c=o,this.setLength(u);for(var T=0;T<u;)this.v[T]=pointPool.newElement(),this.o[T]=pointPool.newElement(),this.i[T]=pointPool.newElement(),T+=1},ShapePath.prototype.setLength=function(o){for(;this._maxLength<o;)this.doubleArrayLength();this._length=o},ShapePath.prototype.doubleArrayLength=function(){this.v=this.v.concat(createSizedArray(this._maxLength)),this.i=this.i.concat(createSizedArray(this._maxLength)),this.o=this.o.concat(createSizedArray(this._maxLength)),this._maxLength*=2},ShapePath.prototype.setXYAt=function(o,u,T,S,E){var C;switch(this._length=Math.max(this._length,S+1),this._length>=this._maxLength&&this.doubleArrayLength(),T){case"v":C=this.v;break;case"i":C=this.i;break;case"o":C=this.o;break;default:C=[];break}(!C[S]||C[S]&&!E)&&(C[S]=pointPool.newElement()),C[S][0]=o,C[S][1]=u},ShapePath.prototype.setTripleAt=function(o,u,T,S,E,C,_,P){this.setXYAt(o,u,"v",_,P),this.setXYAt(T,S,"o",_,P),this.setXYAt(E,C,"i",_,P)},ShapePath.prototype.reverse=function(){var o=new ShapePath;o.setPathData(this.c,this._length);var u=this.v,T=this.o,S=this.i,E=0;this.c&&(o.setTripleAt(u[0][0],u[0][1],S[0][0],S[0][1],T[0][0],T[0][1],0,!1),E=1);var C=this._length-1,_=this._length,P;for(P=E;P<_;P+=1)o.setTripleAt(u[C][0],u[C][1],S[C][0],S[C][1],T[C][0],T[C][1],P,!1),C-=1;return o},ShapePath.prototype.length=function(){return this._length};var shapePool=function(){function o(){return new ShapePath}function u(E){var C=E._length,_;for(_=0;_<C;_+=1)pointPool.release(E.v[_]),pointPool.release(E.i[_]),pointPool.release(E.o[_]),E.v[_]=null,E.i[_]=null,E.o[_]=null;E._length=0,E.c=!1}function T(E){var C=S.newElement(),_,P=E._length===void 0?E.v.length:E._length;for(C.setLength(P),C.c=E.c,_=0;_<P;_+=1)C.setTripleAt(E.v[_][0],E.v[_][1],E.o[_][0],E.o[_][1],E.i[_][0],E.i[_][1],_);return C}var S=poolFactory(4,o,u);return S.clone=T,S}();function ShapeCollection(){this._length=0,this._maxLength=4,this.shapes=createSizedArray(this._maxLength)}ShapeCollection.prototype.addShape=function(o){this._length===this._maxLength&&(this.shapes=this.shapes.concat(createSizedArray(this._maxLength)),this._maxLength*=2),this.shapes[this._length]=o,this._length+=1},ShapeCollection.prototype.releaseShapes=function(){var o;for(o=0;o<this._length;o+=1)shapePool.release(this.shapes[o]);this._length=0};var shapeCollectionPool=function(){var o={newShapeCollection:E,release:C},u=0,T=4,S=createSizedArray(T);function E(){var _;return u?(u-=1,_=S[u]):_=new ShapeCollection,_}function C(_){var P,R=_._length;for(P=0;P<R;P+=1)shapePool.release(_.shapes[P]);_._length=0,u===T&&(S=pooling.double(S),T*=2),S[u]=_,u+=1}return o}(),ShapePropertyFactory=function(){var o=-999999;function u(B,H,O){var V=O.lastIndex,U,W,K,Y,ee,oe,se,Q,ie,ae=this.keyframes;if(B<ae[0].t-this.offsetTime)U=ae[0].s[0],K=!0,V=0;else if(B>=ae[ae.length-1].t-this.offsetTime)U=ae[ae.length-1].s?ae[ae.length-1].s[0]:ae[ae.length-2].e[0],K=!0;else{for(var re=V,J=ae.length-1,te=!0,Z,X,de;te&&(Z=ae[re],X=ae[re+1],!(X.t-this.offsetTime>B));)re<J-1?re+=1:te=!1;if(de=this.keyframesMetadata[re]||{},K=Z.h===1,V=re,!K){if(B>=X.t-this.offsetTime)Q=1;else if(B<Z.t-this.offsetTime)Q=0;else{var he;de.__fnct?he=de.__fnct:(he=BezierFactory.getBezierEasing(Z.o.x,Z.o.y,Z.i.x,Z.i.y).get,de.__fnct=he),Q=he((B-(Z.t-this.offsetTime))/(X.t-this.offsetTime-(Z.t-this.offsetTime)))}W=X.s?X.s[0]:Z.e[0]}U=Z.s[0]}for(oe=H._length,se=U.i[0].length,O.lastIndex=V,Y=0;Y<oe;Y+=1)for(ee=0;ee<se;ee+=1)ie=K?U.i[Y][ee]:U.i[Y][ee]+(W.i[Y][ee]-U.i[Y][ee])*Q,H.i[Y][ee]=ie,ie=K?U.o[Y][ee]:U.o[Y][ee]+(W.o[Y][ee]-U.o[Y][ee])*Q,H.o[Y][ee]=ie,ie=K?U.v[Y][ee]:U.v[Y][ee]+(W.v[Y][ee]-U.v[Y][ee])*Q,H.v[Y][ee]=ie}function T(){var B=this.comp.renderedFrame-this.offsetTime,H=this.keyframes[0].t-this.offsetTime,O=this.keyframes[this.keyframes.length-1].t-this.offsetTime,V=this._caching.lastFrame;return V!==o&&(V<H&&B<H||V>O&&B>O)||(this._caching.lastIndex=V<B?this._caching.lastIndex:0,this.interpolateShape(B,this.pv,this._caching)),this._caching.lastFrame=B,this.pv}function S(){this.paths=this.localShapeCollection}function E(B,H){if(B._length!==H._length||B.c!==H.c)return!1;var O,V=B._length;for(O=0;O<V;O+=1)if(B.v[O][0]!==H.v[O][0]||B.v[O][1]!==H.v[O][1]||B.o[O][0]!==H.o[O][0]||B.o[O][1]!==H.o[O][1]||B.i[O][0]!==H.i[O][0]||B.i[O][1]!==H.i[O][1])return!1;return!0}function C(B){E(this.v,B)||(this.v=shapePool.clone(B),this.localShapeCollection.releaseShapes(),this.localShapeCollection.addShape(this.v),this._mdf=!0,this.paths=this.localShapeCollection)}function _(){if(this.elem.globalData.frameId!==this.frameId){if(!this.effectsSequence.length){this._mdf=!1;return}if(this.lock){this.setVValue(this.pv);return}this.lock=!0,this._mdf=!1;var B;this.kf?B=this.pv:this.data.ks?B=this.data.ks.k:B=this.data.pt.k;var H,O=this.effectsSequence.length;for(H=0;H<O;H+=1)B=this.effectsSequence[H](B);this.setVValue(B),this.lock=!1,this.frameId=this.elem.globalData.frameId}}function P(B,H,O){this.propType="shape",this.comp=B.comp,this.container=B,this.elem=B,this.data=H,this.k=!1,this.kf=!1,this._mdf=!1;var V=O===3?H.pt.k:H.ks.k;this.v=shapePool.clone(V),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.reset=S,this.effectsSequence=[]}function R(B){this.effectsSequence.push(B),this.container.addDynamicProperty(this)}P.prototype.interpolateShape=u,P.prototype.getValue=_,P.prototype.setVValue=C,P.prototype.addEffect=R;function I(B,H,O){this.propType="shape",this.comp=B.comp,this.elem=B,this.container=B,this.offsetTime=B.data.st,this.keyframes=O===3?H.pt.k:H.ks.k,this.keyframesMetadata=[],this.k=!0,this.kf=!0;var V=this.keyframes[0].s[0].i.length;this.v=shapePool.newElement(),this.v.setPathData(this.keyframes[0].s[0].c,V),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.lastFrame=o,this.reset=S,this._caching={lastFrame:o,lastIndex:0},this.effectsSequence=[T.bind(this)]}I.prototype.getValue=_,I.prototype.interpolateShape=u,I.prototype.setVValue=C,I.prototype.addEffect=R;var L=function(){var B=roundCorner;function H(O,V){this.v=shapePool.newElement(),this.v.setPathData(!0,4),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.localShapeCollection.addShape(this.v),this.d=V.d,this.elem=O,this.comp=O.comp,this.frameId=-1,this.initDynamicPropertyContainer(O),this.p=PropertyFactory.getProp(O,V.p,1,0,this),this.s=PropertyFactory.getProp(O,V.s,1,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertEllToPath())}return H.prototype={reset:S,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertEllToPath())},convertEllToPath:function(){var V=this.p.v[0],U=this.p.v[1],W=this.s.v[0]/2,K=this.s.v[1]/2,Y=this.d!==3,ee=this.v;ee.v[0][0]=V,ee.v[0][1]=U-K,ee.v[1][0]=Y?V+W:V-W,ee.v[1][1]=U,ee.v[2][0]=V,ee.v[2][1]=U+K,ee.v[3][0]=Y?V-W:V+W,ee.v[3][1]=U,ee.i[0][0]=Y?V-W*B:V+W*B,ee.i[0][1]=U-K,ee.i[1][0]=Y?V+W:V-W,ee.i[1][1]=U-K*B,ee.i[2][0]=Y?V+W*B:V-W*B,ee.i[2][1]=U+K,ee.i[3][0]=Y?V-W:V+W,ee.i[3][1]=U+K*B,ee.o[0][0]=Y?V+W*B:V-W*B,ee.o[0][1]=U-K,ee.o[1][0]=Y?V+W:V-W,ee.o[1][1]=U+K*B,ee.o[2][0]=Y?V-W*B:V+W*B,ee.o[2][1]=U+K,ee.o[3][0]=Y?V-W:V+W,ee.o[3][1]=U-K*B}},extendPrototype([DynamicPropertyContainer],H),H}(),j=function(){function B(H,O){this.v=shapePool.newElement(),this.v.setPathData(!0,0),this.elem=H,this.comp=H.comp,this.data=O,this.frameId=-1,this.d=O.d,this.initDynamicPropertyContainer(H),O.sy===1?(this.ir=PropertyFactory.getProp(H,O.ir,0,0,this),this.is=PropertyFactory.getProp(H,O.is,0,.01,this),this.convertToPath=this.convertStarToPath):this.convertToPath=this.convertPolygonToPath,this.pt=PropertyFactory.getProp(H,O.pt,0,0,this),this.p=PropertyFactory.getProp(H,O.p,1,0,this),this.r=PropertyFactory.getProp(H,O.r,0,degToRads,this),this.or=PropertyFactory.getProp(H,O.or,0,0,this),this.os=PropertyFactory.getProp(H,O.os,0,.01,this),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertToPath())}return B.prototype={reset:S,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertToPath())},convertStarToPath:function(){var O=Math.floor(this.pt.v)*2,V=Math.PI*2/O,U=!0,W=this.or.v,K=this.ir.v,Y=this.os.v,ee=this.is.v,oe=2*Math.PI*W/(O*2),se=2*Math.PI*K/(O*2),Q,ie,ae,re,J=-Math.PI/2;J+=this.r.v;var te=this.data.d===3?-1:1;for(this.v._length=0,Q=0;Q<O;Q+=1){ie=U?W:K,ae=U?Y:ee,re=U?oe:se;var Z=ie*Math.cos(J),X=ie*Math.sin(J),de=Z===0&&X===0?0:X/Math.sqrt(Z*Z+X*X),he=Z===0&&X===0?0:-Z/Math.sqrt(Z*Z+X*X);Z+=+this.p.v[0],X+=+this.p.v[1],this.v.setTripleAt(Z,X,Z-de*re*ae*te,X-he*re*ae*te,Z+de*re*ae*te,X+he*re*ae*te,Q,!0),U=!U,J+=V*te}},convertPolygonToPath:function(){var O=Math.floor(this.pt.v),V=Math.PI*2/O,U=this.or.v,W=this.os.v,K=2*Math.PI*U/(O*4),Y,ee=-Math.PI*.5,oe=this.data.d===3?-1:1;for(ee+=this.r.v,this.v._length=0,Y=0;Y<O;Y+=1){var se=U*Math.cos(ee),Q=U*Math.sin(ee),ie=se===0&&Q===0?0:Q/Math.sqrt(se*se+Q*Q),ae=se===0&&Q===0?0:-se/Math.sqrt(se*se+Q*Q);se+=+this.p.v[0],Q+=+this.p.v[1],this.v.setTripleAt(se,Q,se-ie*K*W*oe,Q-ae*K*W*oe,se+ie*K*W*oe,Q+ae*K*W*oe,Y,!0),ee+=V*oe}this.paths.length=0,this.paths[0]=this.v}},extendPrototype([DynamicPropertyContainer],B),B}(),M=function(){function B(H,O){this.v=shapePool.newElement(),this.v.c=!0,this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.elem=H,this.comp=H.comp,this.frameId=-1,this.d=O.d,this.initDynamicPropertyContainer(H),this.p=PropertyFactory.getProp(H,O.p,1,0,this),this.s=PropertyFactory.getProp(H,O.s,1,0,this),this.r=PropertyFactory.getProp(H,O.r,0,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertRectToPath())}return B.prototype={convertRectToPath:function(){var O=this.p.v[0],V=this.p.v[1],U=this.s.v[0]/2,W=this.s.v[1]/2,K=bmMin(U,W,this.r.v),Y=K*(1-roundCorner);this.v._length=0,this.d===2||this.d===1?(this.v.setTripleAt(O+U,V-W+K,O+U,V-W+K,O+U,V-W+Y,0,!0),this.v.setTripleAt(O+U,V+W-K,O+U,V+W-Y,O+U,V+W-K,1,!0),K!==0?(this.v.setTripleAt(O+U-K,V+W,O+U-K,V+W,O+U-Y,V+W,2,!0),this.v.setTripleAt(O-U+K,V+W,O-U+Y,V+W,O-U+K,V+W,3,!0),this.v.setTripleAt(O-U,V+W-K,O-U,V+W-K,O-U,V+W-Y,4,!0),this.v.setTripleAt(O-U,V-W+K,O-U,V-W+Y,O-U,V-W+K,5,!0),this.v.setTripleAt(O-U+K,V-W,O-U+K,V-W,O-U+Y,V-W,6,!0),this.v.setTripleAt(O+U-K,V-W,O+U-Y,V-W,O+U-K,V-W,7,!0)):(this.v.setTripleAt(O-U,V+W,O-U+Y,V+W,O-U,V+W,2),this.v.setTripleAt(O-U,V-W,O-U,V-W+Y,O-U,V-W,3))):(this.v.setTripleAt(O+U,V-W+K,O+U,V-W+Y,O+U,V-W+K,0,!0),K!==0?(this.v.setTripleAt(O+U-K,V-W,O+U-K,V-W,O+U-Y,V-W,1,!0),this.v.setTripleAt(O-U+K,V-W,O-U+Y,V-W,O-U+K,V-W,2,!0),this.v.setTripleAt(O-U,V-W+K,O-U,V-W+K,O-U,V-W+Y,3,!0),this.v.setTripleAt(O-U,V+W-K,O-U,V+W-Y,O-U,V+W-K,4,!0),this.v.setTripleAt(O-U+K,V+W,O-U+K,V+W,O-U+Y,V+W,5,!0),this.v.setTripleAt(O+U-K,V+W,O+U-Y,V+W,O+U-K,V+W,6,!0),this.v.setTripleAt(O+U,V+W-K,O+U,V+W-K,O+U,V+W-Y,7,!0)):(this.v.setTripleAt(O-U,V-W,O-U+Y,V-W,O-U,V-W,1,!0),this.v.setTripleAt(O-U,V+W,O-U,V+W-Y,O-U,V+W,2,!0),this.v.setTripleAt(O+U,V+W,O+U-Y,V+W,O+U,V+W,3,!0)))},getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertRectToPath())},reset:S},extendPrototype([DynamicPropertyContainer],B),B}();function D(B,H,O){var V;if(O===3||O===4){var U=O===3?H.pt:H.ks,W=U.k;W.length?V=new I(B,H,O):V=new P(B,H,O)}else O===5?V=new M(B,H):O===6?V=new L(B,H):O===7&&(V=new j(B,H));return V.k&&B.addDynamicProperty(V),V}function F(){return P}function N(){return I}var G={};return G.getShapeProp=D,G.getConstructorFunction=F,G.getKeyframedConstructorFunction=N,G}();/*! 316 Transformation Matrix v2.0 317 (c) Epistemex 2014-2015 318 www.epistemex.com 319 By Ken Fyrstenberg 320 Contributions by leeoniya. 321 License: MIT, header required. 322 */var Matrix=function(){var o=Math.cos,u=Math.sin,T=Math.tan,S=Math.round;function E(){return this.props[0]=1,this.props[1]=0,this.props[2]=0,this.props[3]=0,this.props[4]=0,this.props[5]=1,this.props[6]=0,this.props[7]=0,this.props[8]=0,this.props[9]=0,this.props[10]=1,this.props[11]=0,this.props[12]=0,this.props[13]=0,this.props[14]=0,this.props[15]=1,this}function C(Z){if(Z===0)return this;var X=o(Z),de=u(Z);return this._t(X,-de,0,0,de,X,0,0,0,0,1,0,0,0,0,1)}function _(Z){if(Z===0)return this;var X=o(Z),de=u(Z);return this._t(1,0,0,0,0,X,-de,0,0,de,X,0,0,0,0,1)}function P(Z){if(Z===0)return this;var X=o(Z),de=u(Z);return this._t(X,0,de,0,0,1,0,0,-de,0,X,0,0,0,0,1)}function R(Z){if(Z===0)return this;var X=o(Z),de=u(Z);return this._t(X,-de,0,0,de,X,0,0,0,0,1,0,0,0,0,1)}function I(Z,X){return this._t(1,X,Z,1,0,0)}function L(Z,X){return this.shear(T(Z),T(X))}function j(Z,X){var de=o(X),he=u(X);return this._t(de,he,0,0,-he,de,0,0,0,0,1,0,0,0,0,1)._t(1,0,0,0,T(Z),1,0,0,0,0,1,0,0,0,0,1)._t(de,-he,0,0,he,de,0,0,0,0,1,0,0,0,0,1)}function M(Z,X,de){return!de&&de!==0&&(de=1),Z===1&&X===1&&de===1?this:this._t(Z,0,0,0,0,X,0,0,0,0,de,0,0,0,0,1)}function D(Z,X,de,he,ne,ue,ce,fe,ve,Te,Se,ke,we,Le,pe,Me){return this.props[0]=Z,this.props[1]=X,this.props[2]=de,this.props[3]=he,this.props[4]=ne,this.props[5]=ue,this.props[6]=ce,this.props[7]=fe,this.props[8]=ve,this.props[9]=Te,this.props[10]=Se,this.props[11]=ke,this.props[12]=we,this.props[13]=Le,this.props[14]=pe,this.props[15]=Me,this}function F(Z,X,de){return de=de||0,Z!==0||X!==0||de!==0?this._t(1,0,0,0,0,1,0,0,0,0,1,0,Z,X,de,1):this}function N(Z,X,de,he,ne,ue,ce,fe,ve,Te,Se,ke,we,Le,pe,Me){var Pe=this.props;if(Z===1&&X===0&&de===0&&he===0&&ne===0&&ue===1&&ce===0&&fe===0&&ve===0&&Te===0&&Se===1&&ke===0)return Pe[12]=Pe[12]*Z+Pe[15]*we,Pe[13]=Pe[13]*ue+Pe[15]*Le,Pe[14]=Pe[14]*Se+Pe[15]*pe,Pe[15]*=Me,this._identityCalculated=!1,this;var Ue=Pe[0],qe=Pe[1],Ie=Pe[2],Xe=Pe[3],et=Pe[4],tt=Pe[5],Ye=Pe[6],ze=Pe[7],Ze=Pe[8],He=Pe[9],rt=Pe[10],it=Pe[11],st=Pe[12],at=Pe[13],ot=Pe[14],je=Pe[15];return Pe[0]=Ue*Z+qe*ne+Ie*ve+Xe*we,Pe[1]=Ue*X+qe*ue+Ie*Te+Xe*Le,Pe[2]=Ue*de+qe*ce+Ie*Se+Xe*pe,Pe[3]=Ue*he+qe*fe+Ie*ke+Xe*Me,Pe[4]=et*Z+tt*ne+Ye*ve+ze*we,Pe[5]=et*X+tt*ue+Ye*Te+ze*Le,Pe[6]=et*de+tt*ce+Ye*Se+ze*pe,Pe[7]=et*he+tt*fe+Ye*ke+ze*Me,Pe[8]=Ze*Z+He*ne+rt*ve+it*we,Pe[9]=Ze*X+He*ue+rt*Te+it*Le,Pe[10]=Ze*de+He*ce+rt*Se+it*pe,Pe[11]=Ze*he+He*fe+rt*ke+it*Me,Pe[12]=st*Z+at*ne+ot*ve+je*we,Pe[13]=st*X+at*ue+ot*Te+je*Le,Pe[14]=st*de+at*ce+ot*Se+je*pe,Pe[15]=st*he+at*fe+ot*ke+je*Me,this._identityCalculated=!1,this}function G(Z){var X=Z.props;return this.transform(X[0],X[1],X[2],X[3],X[4],X[5],X[6],X[7],X[8],X[9],X[10],X[11],X[12],X[13],X[14],X[15])}function B(){return this._identityCalculated||(this._identity=!(this.props[0]!==1||this.props[1]!==0||this.props[2]!==0||this.props[3]!==0||this.props[4]!==0||this.props[5]!==1||this.props[6]!==0||this.props[7]!==0||this.props[8]!==0||this.props[9]!==0||this.props[10]!==1||this.props[11]!==0||this.props[12]!==0||this.props[13]!==0||this.props[14]!==0||this.props[15]!==1),this._identityCalculated=!0),this._identity}function H(Z){for(var X=0;X<16;){if(Z.props[X]!==this.props[X])return!1;X+=1}return!0}function O(Z){var X;for(X=0;X<16;X+=1)Z.props[X]=this.props[X];return Z}function V(Z){var X;for(X=0;X<16;X+=1)this.props[X]=Z[X]}function U(Z,X,de){return{x:Z*this.props[0]+X*this.props[4]+de*this.props[8]+this.props[12],y:Z*this.props[1]+X*this.props[5]+de*this.props[9]+this.props[13],z:Z*this.props[2]+X*this.props[6]+de*this.props[10]+this.props[14]}}function W(Z,X,de){return Z*this.props[0]+X*this.props[4]+de*this.props[8]+this.props[12]}function K(Z,X,de){return Z*this.props[1]+X*this.props[5]+de*this.props[9]+this.props[13]}function Y(Z,X,de){return Z*this.props[2]+X*this.props[6]+de*this.props[10]+this.props[14]}function ee(){var Z=this.props[0]*this.props[5]-this.props[1]*this.props[4],X=this.props[5]/Z,de=-this.props[1]/Z,he=-this.props[4]/Z,ne=this.props[0]/Z,ue=(this.props[4]*this.props[13]-this.props[5]*this.props[12])/Z,ce=-(this.props[0]*this.props[13]-this.props[1]*this.props[12])/Z,fe=new Matrix;return fe.props[0]=X,fe.props[1]=de,fe.props[4]=he,fe.props[5]=ne,fe.props[12]=ue,fe.props[13]=ce,fe}function oe(Z){var X=this.getInverseMatrix();return X.applyToPointArray(Z[0],Z[1],Z[2]||0)}function se(Z){var X,de=Z.length,he=[];for(X=0;X<de;X+=1)he[X]=oe(Z[X]);return he}function Q(Z,X,de){var he=createTypedArray("float32",6);if(this.isIdentity())he[0]=Z[0],he[1]=Z[1],he[2]=X[0],he[3]=X[1],he[4]=de[0],he[5]=de[1];else{var ne=this.props[0],ue=this.props[1],ce=this.props[4],fe=this.props[5],ve=this.props[12],Te=this.props[13];he[0]=Z[0]*ne+Z[1]*ce+ve,he[1]=Z[0]*ue+Z[1]*fe+Te,he[2]=X[0]*ne+X[1]*ce+ve,he[3]=X[0]*ue+X[1]*fe+Te,he[4]=de[0]*ne+de[1]*ce+ve,he[5]=de[0]*ue+de[1]*fe+Te}return he}function ie(Z,X,de){var he;return this.isIdentity()?he=[Z,X,de]:he=[Z*this.props[0]+X*this.props[4]+de*this.props[8]+this.props[12],Z*this.props[1]+X*this.props[5]+de*this.props[9]+this.props[13],Z*this.props[2]+X*this.props[6]+de*this.props[10]+this.props[14]],he}function ae(Z,X){if(this.isIdentity())return Z+","+X;var de=this.props;return Math.round((Z*de[0]+X*de[4]+de[12])*100)/100+","+Math.round((Z*de[1]+X*de[5]+de[13])*100)/100}function re(){for(var Z=0,X=this.props,de="matrix3d(",he=1e4;Z<16;)de+=S(X[Z]*he)/he,de+=Z===15?")":",",Z+=1;return de}function J(Z){var X=1e4;return Z<1e-6&&Z>0||Z>-1e-6&&Z<0?S(Z*X)/X:Z}function te(){var Z=this.props,X=J(Z[0]),de=J(Z[1]),he=J(Z[4]),ne=J(Z[5]),ue=J(Z[12]),ce=J(Z[13]);return"matrix("+X+","+de+","+he+","+ne+","+ue+","+ce+")"}return function(){this.reset=E,this.rotate=C,this.rotateX=_,this.rotateY=P,this.rotateZ=R,this.skew=L,this.skewFromAxis=j,this.shear=I,this.scale=M,this.setTransform=D,this.translate=F,this.transform=N,this.multiply=G,this.applyToPoint=U,this.applyToX=W,this.applyToY=K,this.applyToZ=Y,this.applyToPointArray=ie,this.applyToTriplePoints=Q,this.applyToPointStringified=ae,this.toCSS=re,this.to2dCSS=te,this.clone=O,this.cloneFromProps=V,this.equals=H,this.inversePoints=se,this.inversePoint=oe,this.getInverseMatrix=ee,this._t=this.transform,this.isIdentity=B,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray("float32",16),this.reset()}}();function _typeof$3(o){"@babel/helpers - typeof";return _typeof$3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$3(o)}var lottie={};function setLocation(o){setLocationHref(o)}function searchAnimations(){animationManager.searchAnimations()}function setSubframeRendering(o){setSubframeEnabled(o)}function setPrefix(o){setIdPrefix(o)}function loadAnimation(o){return animationManager.loadAnimation(o)}function setQuality(o){if(typeof o=="string")switch(o){case"high":setDefaultCurveSegments(200);break;default:case"medium":setDefaultCurveSegments(50);break;case"low":setDefaultCurveSegments(10);break}else!isNaN(o)&&o>1&&setDefaultCurveSegments(o)}function inBrowser(){return typeof navigator<"u"}function installPlugin(o,u){o==="expressions"&&setExpressionsPlugin(u)}function getFactory(o){switch(o){case"propertyFactory":return PropertyFactory;case"shapePropertyFactory":return ShapePropertyFactory;case"matrix":return Matrix;default:return null}}lottie.play=animationManager.play,lottie.pause=animationManager.pause,lottie.setLocationHref=setLocation,lottie.togglePause=animationManager.togglePause,lottie.setSpeed=animationManager.setSpeed,lottie.setDirection=animationManager.setDirection,lottie.stop=animationManager.stop,lottie.searchAnimations=searchAnimations,lottie.registerAnimation=animationManager.registerAnimation,lottie.loadAnimation=loadAnimation,lottie.setSubframeRendering=setSubframeRendering,lottie.resize=animationManager.resize,lottie.goToAndStop=animationManager.goToAndStop,lottie.destroy=animationManager.destroy,lottie.setQuality=setQuality,lottie.inBrowser=inBrowser,lottie.installPlugin=installPlugin,lottie.freeze=animationManager.freeze,lottie.unfreeze=animationManager.unfreeze,lottie.setVolume=animationManager.setVolume,lottie.mute=animationManager.mute,lottie.unmute=animationManager.unmute,lottie.getRegisteredAnimations=animationManager.getRegisteredAnimations,lottie.useWebWorker=setWebWorker,lottie.setIDPrefix=setPrefix,lottie.__getFactory=getFactory,lottie.version="5.13.0";function checkReady(){document.readyState==="complete"&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(o){for(var u=queryString.split("&"),T=0;T<u.length;T+=1){var S=u[T].split("=");if(decodeURIComponent(S[0])==o)return decodeURIComponent(S[1])}return null}var queryString="";{var scripts=document.getElementsByTagName("script"),index=scripts.length-1,myScript=scripts[index]||{src:""};queryString=myScript.src?myScript.src.replace(/^[^\?]+\??/,""):"",getQueryVariable("renderer")}var readyStateCheckInterval=setInterval(checkReady,100);try{_typeof$3(exports)!=="object"&&(window.bodymovin=lottie)}catch(o){}var ShapeModifiers=function(){var o={},u={};o.registerModifier=T,o.getModifier=S;function T(E,C){u[E]||(u[E]=C)}function S(E,C,_){return new u[E](C,_)}return o}();function ShapeModifier(){}ShapeModifier.prototype.initModifierProperties=function(){},ShapeModifier.prototype.addShapeToModifier=function(){},ShapeModifier.prototype.addShape=function(o){if(!this.closed){o.sh.container.addDynamicProperty(o.sh);var u={shape:o.sh,data:o,localShapeCollection:shapeCollectionPool.newShapeCollection()};this.shapes.push(u),this.addShapeToModifier(u),this._isAnimated&&o.setAsAnimated()}},ShapeModifier.prototype.init=function(o,u){this.shapes=[],this.elem=o,this.initDynamicPropertyContainer(o),this.initModifierProperties(o,u),this.frameId=initialDefaultFrame,this.closed=!1,this.k=!1,this.dynamicProperties.length?this.k=!0:this.getValue(!0)},ShapeModifier.prototype.processKeys=function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties())},extendPrototype([DynamicPropertyContainer],ShapeModifier);function TrimModifier(){}extendPrototype([ShapeModifier],TrimModifier),TrimModifier.prototype.initModifierProperties=function(o,u){this.s=PropertyFactory.getProp(o,u.s,0,.01,this),this.e=PropertyFactory.getProp(o,u.e,0,.01,this),this.o=PropertyFactory.getProp(o,u.o,0,0,this),this.sValue=0,this.eValue=0,this.getValue=this.processKeys,this.m=u.m,this._isAnimated=!!this.s.effectsSequence.length||!!this.e.effectsSequence.length||!!this.o.effectsSequence.length},TrimModifier.prototype.addShapeToModifier=function(o){o.pathsData=[]},TrimModifier.prototype.calculateShapeEdges=function(o,u,T,S,E){var C=[];u<=1?C.push({s:o,e:u}):o>=1?C.push({s:o-1,e:u-1}):(C.push({s:o,e:1}),C.push({s:0,e:u-1}));var _=[],P,R=C.length,I;for(P=0;P<R;P+=1)if(I=C[P],!(I.e*E<S||I.s*E>S+T)){var L,j;I.s*E<=S?L=0:L=(I.s*E-S)/T,I.e*E>=S+T?j=1:j=(I.e*E-S)/T,_.push([L,j])}return _.length||_.push([0,0]),_},TrimModifier.prototype.releasePathsData=function(o){var u,T=o.length;for(u=0;u<T;u+=1)segmentsLengthPool.release(o[u]);return o.length=0,o},TrimModifier.prototype.processShapes=function(o){var u,T;if(this._mdf||o){var S=this.o.v%360/360;if(S<0&&(S+=1),this.s.v>1?u=1+S:this.s.v<0?u=0+S:u=this.s.v+S,this.e.v>1?T=1+S:this.e.v<0?T=0+S:T=this.e.v+S,u>T){var E=u;u=T,T=E}u=Math.round(u*1e4)*1e-4,T=Math.round(T*1e4)*1e-4,this.sValue=u,this.eValue=T}else u=this.sValue,T=this.eValue;var C,_,P=this.shapes.length,R,I,L,j,M,D=0;if(T===u)for(_=0;_<P;_+=1)this.shapes[_].localShapeCollection.releaseShapes(),this.shapes[_].shape._mdf=!0,this.shapes[_].shape.paths=this.shapes[_].localShapeCollection,this._mdf&&(this.shapes[_].pathsData.length=0);else if(T===1&&u===0||T===0&&u===1){if(this._mdf)for(_=0;_<P;_+=1)this.shapes[_].pathsData.length=0,this.shapes[_].shape._mdf=!0}else{var F=[],N,G;for(_=0;_<P;_+=1)if(N=this.shapes[_],!N.shape._mdf&&!this._mdf&&!o&&this.m!==2)N.shape.paths=N.localShapeCollection;else{if(C=N.shape.paths,I=C._length,M=0,!N.shape._mdf&&N.pathsData.length)M=N.totalShapeLength;else{for(L=this.releasePathsData(N.pathsData),R=0;R<I;R+=1)j=bez.getSegmentsLength(C.shapes[R]),L.push(j),M+=j.totalLength;N.totalShapeLength=M,N.pathsData=L}D+=M,N.shape._mdf=!0}var B=u,H=T,O=0,V;for(_=P-1;_>=0;_-=1)if(N=this.shapes[_],N.shape._mdf){for(G=N.localShapeCollection,G.releaseShapes(),this.m===2&&P>1?(V=this.calculateShapeEdges(u,T,N.totalShapeLength,O,D),O+=N.totalShapeLength):V=[[B,H]],I=V.length,R=0;R<I;R+=1){B=V[R][0],H=V[R][1],F.length=0,H<=1?F.push({s:N.totalShapeLength*B,e:N.totalShapeLength*H}):B>=1?F.push({s:N.totalShapeLength*(B-1),e:N.totalShapeLength*(H-1)}):(F.push({s:N.totalShapeLength*B,e:N.totalShapeLength}),F.push({s:0,e:N.totalShapeLength*(H-1)}));var U=this.addShapes(N,F[0]);if(F[0].s!==F[0].e){if(F.length>1){var W=N.shape.paths.shapes[N.shape.paths._length-1];if(W.c){var K=U.pop();this.addPaths(U,G),U=this.addShapes(N,F[1],K)}else this.addPaths(U,G),U=this.addShapes(N,F[1])}this.addPaths(U,G)}}N.shape.paths=G}}},TrimModifier.prototype.addPaths=function(o,u){var T,S=o.length;for(T=0;T<S;T+=1)u.addShape(o[T])},TrimModifier.prototype.addSegment=function(o,u,T,S,E,C,_){E.setXYAt(u[0],u[1],"o",C),E.setXYAt(T[0],T[1],"i",C+1),_&&E.setXYAt(o[0],o[1],"v",C),E.setXYAt(S[0],S[1],"v",C+1)},TrimModifier.prototype.addSegmentFromArray=function(o,u,T,S){u.setXYAt(o[1],o[5],"o",T),u.setXYAt(o[2],o[6],"i",T+1),S&&u.setXYAt(o[0],o[4],"v",T),u.setXYAt(o[3],o[7],"v",T+1)},TrimModifier.prototype.addShapes=function(o,u,T){var S=o.pathsData,E=o.shape.paths.shapes,C,_=o.shape.paths._length,P,R,I=0,L,j,M,D,F=[],N,G=!0;for(T?(j=T._length,N=T._length):(T=shapePool.newElement(),j=0,N=0),F.push(T),C=0;C<_;C+=1){for(M=S[C].lengths,T.c=E[C].c,R=E[C].c?M.length:M.length+1,P=1;P<R;P+=1)if(L=M[P-1],I+L.addedLength<u.s)I+=L.addedLength,T.c=!1;else if(I>u.e){T.c=!1;break}else u.s<=I&&u.e>=I+L.addedLength?(this.addSegment(E[C].v[P-1],E[C].o[P-1],E[C].i[P],E[C].v[P],T,j,G),G=!1):(D=bez.getNewSegment(E[C].v[P-1],E[C].v[P],E[C].o[P-1],E[C].i[P],(u.s-I)/L.addedLength,(u.e-I)/L.addedLength,M[P-1]),this.addSegmentFromArray(D,T,j,G),G=!1,T.c=!1),I+=L.addedLength,j+=1;if(E[C].c&&M.length){if(L=M[P-1],I<=u.e){var B=M[P-1].addedLength;u.s<=I&&u.e>=I+B?(this.addSegment(E[C].v[P-1],E[C].o[P-1],E[C].i[0],E[C].v[0],T,j,G),G=!1):(D=bez.getNewSegment(E[C].v[P-1],E[C].v[0],E[C].o[P-1],E[C].i[0],(u.s-I)/B,(u.e-I)/B,M[P-1]),this.addSegmentFromArray(D,T,j,G),G=!1,T.c=!1)}else T.c=!1;I+=L.addedLength,j+=1}if(T._length&&(T.setXYAt(T.v[N][0],T.v[N][1],"i",N),T.setXYAt(T.v[T._length-1][0],T.v[T._length-1][1],"o",T._length-1)),I>u.e)break;C<_-1&&(T=shapePool.newElement(),G=!0,F.push(T),j=0)}return F};function PuckerAndBloatModifier(){}extendPrototype([ShapeModifier],PuckerAndBloatModifier),PuckerAndBloatModifier.prototype.initModifierProperties=function(o,u){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(o,u.a,0,null,this),this._isAnimated=!!this.amount.effectsSequence.length},PuckerAndBloatModifier.prototype.processPath=function(o,u){var T=u/100,S=[0,0],E=o._length,C=0;for(C=0;C<E;C+=1)S[0]+=o.v[C][0],S[1]+=o.v[C][1];S[0]/=E,S[1]/=E;var _=shapePool.newElement();_.c=o.c;var P,R,I,L,j,M;for(C=0;C<E;C+=1)P=o.v[C][0]+(S[0]-o.v[C][0])*T,R=o.v[C][1]+(S[1]-o.v[C][1])*T,I=o.o[C][0]+(S[0]-o.o[C][0])*-T,L=o.o[C][1]+(S[1]-o.o[C][1])*-T,j=o.i[C][0]+(S[0]-o.i[C][0])*-T,M=o.i[C][1]+(S[1]-o.i[C][1])*-T,_.setTripleAt(P,R,I,L,j,M,C);return _},PuckerAndBloatModifier.prototype.processShapes=function(o){var u,T,S=this.shapes.length,E,C,_=this.amount.v;if(_!==0){var P,R;for(T=0;T<S;T+=1){if(P=this.shapes[T],R=P.localShapeCollection,!(!P.shape._mdf&&!this._mdf&&!o))for(R.releaseShapes(),P.shape._mdf=!0,u=P.shape.paths.shapes,C=P.shape.paths._length,E=0;E<C;E+=1)R.addShape(this.processPath(u[E],_));P.shape.paths=P.localShapeCollection}}this.dynamicProperties.length||(this._mdf=!1)};var TransformPropertyFactory=function(){var o=[0,0];function u(R){var I=this._mdf;this.iterateDynamicProperties(),this._mdf=this._mdf||I,this.a&&R.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.s&&R.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&R.skewFromAxis(-this.sk.v,this.sa.v),this.r?R.rotate(-this.r.v):R.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.data.p.s?this.data.p.z?R.translate(this.px.v,this.py.v,-this.pz.v):R.translate(this.px.v,this.py.v,0):R.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}function T(R){if(this.elem.globalData.frameId!==this.frameId){if(this._isDirty&&(this.precalculateMatrix(),this._isDirty=!1),this.iterateDynamicProperties(),this._mdf||R){var I;if(this.v.cloneFromProps(this.pre.props),this.appliedTransformations<1&&this.v.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations<2&&this.v.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&this.appliedTransformations<3&&this.v.skewFromAxis(-this.sk.v,this.sa.v),this.r&&this.appliedTransformations<4?this.v.rotate(-this.r.v):!this.r&&this.appliedTransformations<4&&this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.autoOriented){var L,j;if(I=this.elem.globalData.frameRate,this.p&&this.p.keyframes&&this.p.getValueAtTime)this.p._caching.lastFrame+this.p.offsetTime<=this.p.keyframes[0].t?(L=this.p.getValueAtTime((this.p.keyframes[0].t+.01)/I,0),j=this.p.getValueAtTime(this.p.keyframes[0].t/I,0)):this.p._caching.lastFrame+this.p.offsetTime>=this.p.keyframes[this.p.keyframes.length-1].t?(L=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/I,0),j=this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/I,0)):(L=this.p.pv,j=this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/I,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){L=[],j=[];var M=this.px,D=this.py;M._caching.lastFrame+M.offsetTime<=M.keyframes[0].t?(L[0]=M.getValueAtTime((M.keyframes[0].t+.01)/I,0),L[1]=D.getValueAtTime((D.keyframes[0].t+.01)/I,0),j[0]=M.getValueAtTime(M.keyframes[0].t/I,0),j[1]=D.getValueAtTime(D.keyframes[0].t/I,0)):M._caching.lastFrame+M.offsetTime>=M.keyframes[M.keyframes.length-1].t?(L[0]=M.getValueAtTime(M.keyframes[M.keyframes.length-1].t/I,0),L[1]=D.getValueAtTime(D.keyframes[D.keyframes.length-1].t/I,0),j[0]=M.getValueAtTime((M.keyframes[M.keyframes.length-1].t-.01)/I,0),j[1]=D.getValueAtTime((D.keyframes[D.keyframes.length-1].t-.01)/I,0)):(L=[M.pv,D.pv],j[0]=M.getValueAtTime((M._caching.lastFrame+M.offsetTime-.01)/I,M.offsetTime),j[1]=D.getValueAtTime((D._caching.lastFrame+D.offsetTime-.01)/I,D.offsetTime))}else j=o,L=j;this.v.rotate(-Math.atan2(L[1]-j[1],L[0]-j[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}}function S(){if(this.appliedTransformations=0,this.pre.reset(),!this.a.effectsSequence.length)this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1;else return;if(!this.s.effectsSequence.length)this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2;else return;if(this.sk)if(!this.sk.effectsSequence.length&&!this.sa.effectsSequence.length)this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3;else return;this.r?this.r.effectsSequence.length||(this.pre.rotate(-this.r.v),this.appliedTransformations=4):!this.rz.effectsSequence.length&&!this.ry.effectsSequence.length&&!this.rx.effectsSequence.length&&!this.or.effectsSequence.length&&(this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.appliedTransformations=4)}function E(){}function C(R){this._addDynamicProperty(R),this.elem.addDynamicProperty(R),this._isDirty=!0}function _(R,I,L){if(this.elem=R,this.frameId=-1,this.propType="transform",this.data=I,this.v=new Matrix,this.pre=new Matrix,this.appliedTransformations=0,this.initDynamicPropertyContainer(L||R),I.p&&I.p.s?(this.px=PropertyFactory.getProp(R,I.p.x,0,0,this),this.py=PropertyFactory.getProp(R,I.p.y,0,0,this),I.p.z&&(this.pz=PropertyFactory.getProp(R,I.p.z,0,0,this))):this.p=PropertyFactory.getProp(R,I.p||{k:[0,0,0]},1,0,this),I.rx){if(this.rx=PropertyFactory.getProp(R,I.rx,0,degToRads,this),this.ry=PropertyFactory.getProp(R,I.ry,0,degToRads,this),this.rz=PropertyFactory.getProp(R,I.rz,0,degToRads,this),I.or.k[0].ti){var j,M=I.or.k.length;for(j=0;j<M;j+=1)I.or.k[j].to=null,I.or.k[j].ti=null}this.or=PropertyFactory.getProp(R,I.or,1,degToRads,this),this.or.sh=!0}else this.r=PropertyFactory.getProp(R,I.r||{k:0},0,degToRads,this);I.sk&&(this.sk=PropertyFactory.getProp(R,I.sk,0,degToRads,this),this.sa=PropertyFactory.getProp(R,I.sa,0,degToRads,this)),this.a=PropertyFactory.getProp(R,I.a||{k:[0,0,0]},1,0,this),this.s=PropertyFactory.getProp(R,I.s||{k:[100,100,100]},1,.01,this),I.o?this.o=PropertyFactory.getProp(R,I.o,0,.01,R):this.o={_mdf:!1,v:1},this._isDirty=!0,this.dynamicProperties.length||this.getValue(!0)}_.prototype={applyToMatrix:u,getValue:T,precalculateMatrix:S,autoOrient:E},extendPrototype([DynamicPropertyContainer],_),_.prototype.addDynamicProperty=C,_.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty;function P(R,I,L){return new _(R,I,L)}return{getTransformProperty:P}}();function RepeaterModifier(){}extendPrototype([ShapeModifier],RepeaterModifier),RepeaterModifier.prototype.initModifierProperties=function(o,u){this.getValue=this.processKeys,this.c=PropertyFactory.getProp(o,u.c,0,null,this),this.o=PropertyFactory.getProp(o,u.o,0,null,this),this.tr=TransformPropertyFactory.getTransformProperty(o,u.tr,this),this.so=PropertyFactory.getProp(o,u.tr.so,0,.01,this),this.eo=PropertyFactory.getProp(o,u.tr.eo,0,.01,this),this.data=u,this.dynamicProperties.length||this.getValue(!0),this._isAnimated=!!this.dynamicProperties.length,this.pMatrix=new Matrix,this.rMatrix=new Matrix,this.sMatrix=new Matrix,this.tMatrix=new Matrix,this.matrix=new Matrix},RepeaterModifier.prototype.applyTransforms=function(o,u,T,S,E,C){var _=C?-1:1,P=S.s.v[0]+(1-S.s.v[0])*(1-E),R=S.s.v[1]+(1-S.s.v[1])*(1-E);o.translate(S.p.v[0]*_*E,S.p.v[1]*_*E,S.p.v[2]),u.translate(-S.a.v[0],-S.a.v[1],S.a.v[2]),u.rotate(-S.r.v*_*E),u.translate(S.a.v[0],S.a.v[1],S.a.v[2]),T.translate(-S.a.v[0],-S.a.v[1],S.a.v[2]),T.scale(C?1/P:P,C?1/R:R),T.translate(S.a.v[0],S.a.v[1],S.a.v[2])},RepeaterModifier.prototype.init=function(o,u,T,S){for(this.elem=o,this.arr=u,this.pos=T,this.elemsData=S,this._currentCopies=0,this._elements=[],this._groups=[],this.frameId=-1,this.initDynamicPropertyContainer(o),this.initModifierProperties(o,u[T]);T>0;)T-=1,this._elements.unshift(u[T]);this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(o){var u,T=o.length;for(u=0;u<T;u+=1)o[u]._processed=!1,o[u].ty==="gr"&&this.resetElements(o[u].it)},RepeaterModifier.prototype.cloneElements=function(o){var u=JSON.parse(JSON.stringify(o));return this.resetElements(u),u},RepeaterModifier.prototype.changeGroupRender=function(o,u){var T,S=o.length;for(T=0;T<S;T+=1)o[T]._render=u,o[T].ty==="gr"&&this.changeGroupRender(o[T].it,u)},RepeaterModifier.prototype.processShapes=function(o){var u,T,S,E,C,_=!1;if(this._mdf||o){var P=Math.ceil(this.c.v);if(this._groups.length<P){for(;this._groups.length<P;){var R={it:this.cloneElements(this._elements),ty:"gr"};R.it.push({a:{a:0,ix:1,k:[0,0]},nm:"Transform",o:{a:0,ix:7,k:100},p:{a:0,ix:2,k:[0,0]},r:{a:1,ix:6,k:[{s:0,e:0,t:0},{s:0,e:0,t:1}]},s:{a:0,ix:3,k:[100,100]},sa:{a:0,ix:5,k:0},sk:{a:0,ix:4,k:0},ty:"tr"}),this.arr.splice(0,0,R),this._groups.splice(0,0,R),this._currentCopies+=1}this.elem.reloadShapes(),_=!0}C=0;var I;for(S=0;S<=this._groups.length-1;S+=1){if(I=C<P,this._groups[S]._render=I,this.changeGroupRender(this._groups[S].it,I),!I){var L=this.elemsData[S].it,j=L[L.length-1];j.transform.op.v!==0?(j.transform.op._mdf=!0,j.transform.op.v=0):j.transform.op._mdf=!1}C+=1}this._currentCopies=P;var M=this.o.v,D=M%1,F=M>0?Math.floor(M):Math.ceil(M),N=this.pMatrix.props,G=this.rMatrix.props,B=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var H=0;if(M>0){for(;H<F;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),H+=1;D&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,D,!1),H+=D)}else if(M<0){for(;H>F;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),H-=1;D&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-D,!0),H-=D)}S=this.data.m===1?0:this._currentCopies-1,E=this.data.m===1?1:-1,C=this._currentCopies;for(var O,V;C;){if(u=this.elemsData[S].it,T=u[u.length-1].transform.mProps.v.props,V=T.length,u[u.length-1].transform.mProps._mdf=!0,u[u.length-1].transform.op._mdf=!0,u[u.length-1].transform.op.v=this._currentCopies===1?this.so.v:this.so.v+(this.eo.v-this.so.v)*(S/(this._currentCopies-1)),H!==0){for((S!==0&&E===1||S!==this._currentCopies-1&&E===-1)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(G[0],G[1],G[2],G[3],G[4],G[5],G[6],G[7],G[8],G[9],G[10],G[11],G[12],G[13],G[14],G[15]),this.matrix.transform(B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7],B[8],B[9],B[10],B[11],B[12],B[13],B[14],B[15]),this.matrix.transform(N[0],N[1],N[2],N[3],N[4],N[5],N[6],N[7],N[8],N[9],N[10],N[11],N[12],N[13],N[14],N[15]),O=0;O<V;O+=1)T[O]=this.matrix.props[O];this.matrix.reset()}else for(this.matrix.reset(),O=0;O<V;O+=1)T[O]=this.matrix.props[O];H+=1,C-=1,S+=E}}else for(C=this._currentCopies,S=0,E=1;C;)u=this.elemsData[S].it,T=u[u.length-1].transform.mProps.v.props,u[u.length-1].transform.mProps._mdf=!1,u[u.length-1].transform.op._mdf=!1,C-=1,S+=E;return _},RepeaterModifier.prototype.addShape=function(){};function RoundCornersModifier(){}extendPrototype([ShapeModifier],RoundCornersModifier),RoundCornersModifier.prototype.initModifierProperties=function(o,u){this.getValue=this.processKeys,this.rd=PropertyFactory.getProp(o,u.r,0,null,this),this._isAnimated=!!this.rd.effectsSequence.length},RoundCornersModifier.prototype.processPath=function(o,u){var T=shapePool.newElement();T.c=o.c;var S,E=o._length,C,_,P,R,I,L,j=0,M,D,F,N,G,B;for(S=0;S<E;S+=1)C=o.v[S],P=o.o[S],_=o.i[S],C[0]===P[0]&&C[1]===P[1]&&C[0]===_[0]&&C[1]===_[1]?(S===0||S===E-1)&&!o.c?(T.setTripleAt(C[0],C[1],P[0],P[1],_[0],_[1],j),j+=1):(S===0?R=o.v[E-1]:R=o.v[S-1],I=Math.sqrt(Math.pow(C[0]-R[0],2)+Math.pow(C[1]-R[1],2)),L=I?Math.min(I/2,u)/I:0,G=C[0]+(R[0]-C[0])*L,M=G,B=C[1]-(C[1]-R[1])*L,D=B,F=M-(M-C[0])*roundCorner,N=D-(D-C[1])*roundCorner,T.setTripleAt(M,D,F,N,G,B,j),j+=1,S===E-1?R=o.v[0]:R=o.v[S+1],I=Math.sqrt(Math.pow(C[0]-R[0],2)+Math.pow(C[1]-R[1],2)),L=I?Math.min(I/2,u)/I:0,F=C[0]+(R[0]-C[0])*L,M=F,N=C[1]+(R[1]-C[1])*L,D=N,G=M-(M-C[0])*roundCorner,B=D-(D-C[1])*roundCorner,T.setTripleAt(M,D,F,N,G,B,j),j+=1):(T.setTripleAt(o.v[S][0],o.v[S][1],o.o[S][0],o.o[S][1],o.i[S][0],o.i[S][1],j),j+=1);return T},RoundCornersModifier.prototype.processShapes=function(o){var u,T,S=this.shapes.length,E,C,_=this.rd.v;if(_!==0){var P,R;for(T=0;T<S;T+=1){if(P=this.shapes[T],R=P.localShapeCollection,!(!P.shape._mdf&&!this._mdf&&!o))for(R.releaseShapes(),P.shape._mdf=!0,u=P.shape.paths.shapes,C=P.shape.paths._length,E=0;E<C;E+=1)R.addShape(this.processPath(u[E],_));P.shape.paths=P.localShapeCollection}}this.dynamicProperties.length||(this._mdf=!1)};function floatEqual(o,u){return Math.abs(o-u)*1e5<=Math.min(Math.abs(o),Math.abs(u))}function floatZero(o){return Math.abs(o)<=1e-5}function lerp(o,u,T){return o*(1-T)+u*T}function lerpPoint(o,u,T){return[lerp(o[0],u[0],T),lerp(o[1],u[1],T)]}function quadRoots(o,u,T){if(o===0)return[];var S=u*u-4*o*T;if(S<0)return[];var E=-u/(2*o);if(S===0)return[E];var C=Math.sqrt(S)/(2*o);return[E-C,E+C]}function polynomialCoefficients(o,u,T,S){return[-o+3*u-3*T+S,3*o-6*u+3*T,-3*o+3*u,o]}function singlePoint(o){return new PolynomialBezier(o,o,o,o,!1)}function PolynomialBezier(o,u,T,S,E){E&&pointEqual(o,u)&&(u=lerpPoint(o,S,1/3)),E&&pointEqual(T,S)&&(T=lerpPoint(o,S,2/3));var C=polynomialCoefficients(o[0],u[0],T[0],S[0]),_=polynomialCoefficients(o[1],u[1],T[1],S[1]);this.a=[C[0],_[0]],this.b=[C[1],_[1]],this.c=[C[2],_[2]],this.d=[C[3],_[3]],this.points=[o,u,T,S]}PolynomialBezier.prototype.point=function(o){return[((this.a[0]*o+this.b[0])*o+this.c[0])*o+this.d[0],((this.a[1]*o+this.b[1])*o+this.c[1])*o+this.d[1]]},PolynomialBezier.prototype.derivative=function(o){return[(3*o*this.a[0]+2*this.b[0])*o+this.c[0],(3*o*this.a[1]+2*this.b[1])*o+this.c[1]]},PolynomialBezier.prototype.tangentAngle=function(o){var u=this.derivative(o);return Math.atan2(u[1],u[0])},PolynomialBezier.prototype.normalAngle=function(o){var u=this.derivative(o);return Math.atan2(u[0],u[1])},PolynomialBezier.prototype.inflectionPoints=function(){var o=this.a[1]*this.b[0]-this.a[0]*this.b[1];if(floatZero(o))return[];var u=-.5*(this.a[1]*this.c[0]-this.a[0]*this.c[1])/o,T=u*u-1/3*(this.b[1]*this.c[0]-this.b[0]*this.c[1])/o;if(T<0)return[];var S=Math.sqrt(T);return floatZero(S)?S>0&&S<1?[u]:[]:[u-S,u+S].filter(function(E){return E>0&&E<1})},PolynomialBezier.prototype.split=function(o){if(o<=0)return[singlePoint(this.points[0]),this];if(o>=1)return[this,singlePoint(this.points[this.points.length-1])];var u=lerpPoint(this.points[0],this.points[1],o),T=lerpPoint(this.points[1],this.points[2],o),S=lerpPoint(this.points[2],this.points[3],o),E=lerpPoint(u,T,o),C=lerpPoint(T,S,o),_=lerpPoint(E,C,o);return[new PolynomialBezier(this.points[0],u,E,_,!0),new PolynomialBezier(_,C,S,this.points[3],!0)]};function extrema(o,u){var T=o.points[0][u],S=o.points[o.points.length-1][u];if(T>S){var E=S;S=T,T=E}for(var C=quadRoots(3*o.a[u],2*o.b[u],o.c[u]),_=0;_<C.length;_+=1)if(C[_]>0&&C[_]<1){var P=o.point(C[_])[u];P<T?T=P:P>S&&(S=P)}return{min:T,max:S}}PolynomialBezier.prototype.bounds=function(){return{x:extrema(this,0),y:extrema(this,1)}},PolynomialBezier.prototype.boundingBox=function(){var o=this.bounds();return{left:o.x.min,right:o.x.max,top:o.y.min,bottom:o.y.max,width:o.x.max-o.x.min,height:o.y.max-o.y.min,cx:(o.x.max+o.x.min)/2,cy:(o.y.max+o.y.min)/2}};function intersectData(o,u,T){var S=o.boundingBox();return{cx:S.cx,cy:S.cy,width:S.width,height:S.height,bez:o,t:(u+T)/2,t1:u,t2:T}}function splitData(o){var u=o.bez.split(.5);return[intersectData(u[0],o.t1,o.t),intersectData(u[1],o.t,o.t2)]}function boxIntersect(o,u){return Math.abs(o.cx-u.cx)*2<o.width+u.width&&Math.abs(o.cy-u.cy)*2<o.height+u.height}function intersectsImpl(o,u,T,S,E,C){if(boxIntersect(o,u)){if(T>=C||o.width<=S&&o.height<=S&&u.width<=S&&u.height<=S){E.push([o.t,u.t]);return}var _=splitData(o),P=splitData(u);intersectsImpl(_[0],P[0],T+1,S,E,C),intersectsImpl(_[0],P[1],T+1,S,E,C),intersectsImpl(_[1],P[0],T+1,S,E,C),intersectsImpl(_[1],P[1],T+1,S,E,C)}}PolynomialBezier.prototype.intersections=function(o,u,T){u===void 0&&(u=2),T===void 0&&(T=7);var S=[];return intersectsImpl(intersectData(this,0,1),intersectData(o,0,1),0,u,S,T),S},PolynomialBezier.shapeSegment=function(o,u){var T=(u+1)%o.length();return new PolynomialBezier(o.v[u],o.o[u],o.i[T],o.v[T],!0)},PolynomialBezier.shapeSegmentInverted=function(o,u){var T=(u+1)%o.length();return new PolynomialBezier(o.v[T],o.i[T],o.o[u],o.v[u],!0)};function crossProduct(o,u){return[o[1]*u[2]-o[2]*u[1],o[2]*u[0]-o[0]*u[2],o[0]*u[1]-o[1]*u[0]]}function lineIntersection(o,u,T,S){var E=[o[0],o[1],1],C=[u[0],u[1],1],_=[T[0],T[1],1],P=[S[0],S[1],1],R=crossProduct(crossProduct(E,C),crossProduct(_,P));return floatZero(R[2])?null:[R[0]/R[2],R[1]/R[2]]}function polarOffset(o,u,T){return[o[0]+Math.cos(u)*T,o[1]-Math.sin(u)*T]}function pointDistance(o,u){return Math.hypot(o[0]-u[0],o[1]-u[1])}function pointEqual(o,u){return floatEqual(o[0],u[0])&&floatEqual(o[1],u[1])}function ZigZagModifier(){}extendPrototype([ShapeModifier],ZigZagModifier),ZigZagModifier.prototype.initModifierProperties=function(o,u){this.getValue=this.processKeys,this.amplitude=PropertyFactory.getProp(o,u.s,0,null,this),this.frequency=PropertyFactory.getProp(o,u.r,0,null,this),this.pointsType=PropertyFactory.getProp(o,u.pt,0,null,this),this._isAnimated=this.amplitude.effectsSequence.length!==0||this.frequency.effectsSequence.length!==0||this.pointsType.effectsSequence.length!==0};function setPoint(o,u,T,S,E,C,_){var P=T-Math.PI/2,R=T+Math.PI/2,I=u[0]+Math.cos(T)*S*E,L=u[1]-Math.sin(T)*S*E;o.setTripleAt(I,L,I+Math.cos(P)*C,L-Math.sin(P)*C,I+Math.cos(R)*_,L-Math.sin(R)*_,o.length())}function getPerpendicularVector(o,u){var T=[u[0]-o[0],u[1]-o[1]],S=-Math.PI*.5,E=[Math.cos(S)*T[0]-Math.sin(S)*T[1],Math.sin(S)*T[0]+Math.cos(S)*T[1]];return E}function getProjectingAngle(o,u){var T=u===0?o.length()-1:u-1,S=(u+1)%o.length(),E=o.v[T],C=o.v[S],_=getPerpendicularVector(E,C);return Math.atan2(0,1)-Math.atan2(_[1],_[0])}function zigZagCorner(o,u,T,S,E,C,_){var P=getProjectingAngle(u,T),R=u.v[T%u._length],I=u.v[T===0?u._length-1:T-1],L=u.v[(T+1)%u._length],j=C===2?Math.sqrt(Math.pow(R[0]-I[0],2)+Math.pow(R[1]-I[1],2)):0,M=C===2?Math.sqrt(Math.pow(R[0]-L[0],2)+Math.pow(R[1]-L[1],2)):0;setPoint(o,u.v[T%u._length],P,_,S,M/((E+1)*2),j/((E+1)*2))}function zigZagSegment(o,u,T,S,E,C){for(var _=0;_<S;_+=1){var P=(_+1)/(S+1),R=E===2?Math.sqrt(Math.pow(u.points[3][0]-u.points[0][0],2)+Math.pow(u.points[3][1]-u.points[0][1],2)):0,I=u.normalAngle(P),L=u.point(P);setPoint(o,L,I,C,T,R/((S+1)*2),R/((S+1)*2)),C=-C}return C}ZigZagModifier.prototype.processPath=function(o,u,T,S){var E=o._length,C=shapePool.newElement();if(C.c=o.c,o.c||(E-=1),E===0)return C;var _=-1,P=PolynomialBezier.shapeSegment(o,0);zigZagCorner(C,o,0,u,T,S,_);for(var R=0;R<E;R+=1)_=zigZagSegment(C,P,u,T,S,-_),R===E-1&&!o.c?P=null:P=PolynomialBezier.shapeSegment(o,(R+1)%E),zigZagCorner(C,o,R+1,u,T,S,_);return C},ZigZagModifier.prototype.processShapes=function(o){var u,T,S=this.shapes.length,E,C,_=this.amplitude.v,P=Math.max(0,Math.round(this.frequency.v)),R=this.pointsType.v;if(_!==0){var I,L;for(T=0;T<S;T+=1){if(I=this.shapes[T],L=I.localShapeCollection,!(!I.shape._mdf&&!this._mdf&&!o))for(L.releaseShapes(),I.shape._mdf=!0,u=I.shape.paths.shapes,C=I.shape.paths._length,E=0;E<C;E+=1)L.addShape(this.processPath(u[E],_,P,R));I.shape.paths=I.localShapeCollection}}this.dynamicProperties.length||(this._mdf=!1)};function linearOffset(o,u,T){var S=Math.atan2(u[0]-o[0],u[1]-o[1]);return[polarOffset(o,S,T),polarOffset(u,S,T)]}function offsetSegment(o,u){var T,S,E,C,_,P,R;R=linearOffset(o.points[0],o.points[1],u),T=R[0],S=R[1],R=linearOffset(o.points[1],o.points[2],u),E=R[0],C=R[1],R=linearOffset(o.points[2],o.points[3],u),_=R[0],P=R[1];var I=lineIntersection(T,S,E,C);I===null&&(I=S);var L=lineIntersection(_,P,E,C);return L===null&&(L=_),new PolynomialBezier(T,I,L,P)}function joinLines(o,u,T,S,E){var C=u.points[3],_=T.points[0];if(S===3||pointEqual(C,_))return C;if(S===2){var P=-u.tangentAngle(1),R=-T.tangentAngle(0)+Math.PI,I=lineIntersection(C,polarOffset(C,P+Math.PI/2,100),_,polarOffset(_,P+Math.PI/2,100)),L=I?pointDistance(I,C):pointDistance(C,_)/2,j=polarOffset(C,P,2*L*roundCorner);return o.setXYAt(j[0],j[1],"o",o.length()-1),j=polarOffset(_,R,2*L*roundCorner),o.setTripleAt(_[0],_[1],_[0],_[1],j[0],j[1],o.length()),_}var M=pointEqual(C,u.points[2])?u.points[0]:u.points[2],D=pointEqual(_,T.points[1])?T.points[3]:T.points[1],F=lineIntersection(M,C,_,D);return F&&pointDistance(F,C)<E?(o.setTripleAt(F[0],F[1],F[0],F[1],F[0],F[1],o.length()),F):C}function getIntersection(o,u){var T=o.intersections(u);return T.length&&floatEqual(T[0][0],1)&&T.shift(),T.length?T[0]:null}function pruneSegmentIntersection(o,u){var T=o.slice(),S=u.slice(),E=getIntersection(o[o.length-1],u[0]);return E&&(T[o.length-1]=o[o.length-1].split(E[0])[0],S[0]=u[0].split(E[1])[1]),o.length>1&&u.length>1&&(E=getIntersection(o[0],u[u.length-1]),E)?[[o[0].split(E[0])[0]],[u[u.length-1].split(E[1])[1]]]:[T,S]}function pruneIntersections(o){for(var u,T=1;T<o.length;T+=1)u=pruneSegmentIntersection(o[T-1],o[T]),o[T-1]=u[0],o[T]=u[1];return o.length>1&&(u=pruneSegmentIntersection(o[o.length-1],o[0]),o[o.length-1]=u[0],o[0]=u[1]),o}function offsetSegmentSplit(o,u){var T=o.inflectionPoints(),S,E,C,_;if(T.length===0)return[offsetSegment(o,u)];if(T.length===1||floatEqual(T[1],1))return C=o.split(T[0]),S=C[0],E=C[1],[offsetSegment(S,u),offsetSegment(E,u)];C=o.split(T[0]),S=C[0];var P=(T[1]-T[0])/(1-T[0]);return C=C[1].split(P),_=C[0],E=C[1],[offsetSegment(S,u),offsetSegment(_,u),offsetSegment(E,u)]}function OffsetPathModifier(){}extendPrototype([ShapeModifier],OffsetPathModifier),OffsetPathModifier.prototype.initModifierProperties=function(o,u){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(o,u.a,0,null,this),this.miterLimit=PropertyFactory.getProp(o,u.ml,0,null,this),this.lineJoin=u.lj,this._isAnimated=this.amount.effectsSequence.length!==0},OffsetPathModifier.prototype.processPath=function(o,u,T,S){var E=shapePool.newElement();E.c=o.c;var C=o.length();o.c||(C-=1);var _,P,R,I=[];for(_=0;_<C;_+=1)R=PolynomialBezier.shapeSegment(o,_),I.push(offsetSegmentSplit(R,u));if(!o.c)for(_=C-1;_>=0;_-=1)R=PolynomialBezier.shapeSegmentInverted(o,_),I.push(offsetSegmentSplit(R,u));I=pruneIntersections(I);var L=null,j=null;for(_=0;_<I.length;_+=1){var M=I[_];for(j&&(L=joinLines(E,j,M[0],T,S)),j=M[M.length-1],P=0;P<M.length;P+=1)R=M[P],L&&pointEqual(R.points[0],L)?E.setXYAt(R.points[1][0],R.points[1][1],"o",E.length()-1):E.setTripleAt(R.points[0][0],R.points[0][1],R.points[1][0],R.points[1][1],R.points[0][0],R.points[0][1],E.length()),E.setTripleAt(R.points[3][0],R.points[3][1],R.points[3][0],R.points[3][1],R.points[2][0],R.points[2][1],E.length()),L=R.points[3]}return I.length&&joinLines(E,j,I[0][0],T,S),E},OffsetPathModifier.prototype.processShapes=function(o){var u,T,S=this.shapes.length,E,C,_=this.amount.v,P=this.miterLimit.v,R=this.lineJoin;if(_!==0){var I,L;for(T=0;T<S;T+=1){if(I=this.shapes[T],L=I.localShapeCollection,!(!I.shape._mdf&&!this._mdf&&!o))for(L.releaseShapes(),I.shape._mdf=!0,u=I.shape.paths.shapes,C=I.shape.paths._length,E=0;E<C;E+=1)L.addShape(this.processPath(u[E],_,R,P));I.shape.paths=I.localShapeCollection}}this.dynamicProperties.length||(this._mdf=!1)};function getFontProperties(o){for(var u=o.fStyle?o.fStyle.split(" "):[],T="normal",S="normal",E=u.length,C,_=0;_<E;_+=1)switch(C=u[_].toLowerCase(),C){case"italic":S="italic";break;case"bold":T="700";break;case"black":T="900";break;case"medium":T="500";break;case"regular":case"normal":T="400";break;case"light":case"thin":T="200";break}return{style:S,weight:o.fWeight||T}}var FontManager=function(){var o=5e3,u={w:0,size:0,shapes:[],data:{shapes:[]}},T=[];T=T.concat([2304,2305,2306,2307,2362,2363,2364,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2387,2388,2389,2390,2391,2402,2403]);var S=127988,E=917631,C=917601,_=917626,P=65039,R=8205,I=127462,L=127487,j=["d83cdffb","d83cdffc","d83cdffd","d83cdffe","d83cdfff"];function M(J){var te=J.split(","),Z,X=te.length,de=[];for(Z=0;Z<X;Z+=1)te[Z]!=="sans-serif"&&te[Z]!=="monospace"&&de.push(te[Z]);return de.join(",")}function D(J,te){var Z=createTag("span");Z.setAttribute("aria-hidden",!0),Z.style.fontFamily=te;var X=createTag("span");X.innerText="giItT1WQy@!-/#",Z.style.position="absolute",Z.style.left="-10000px",Z.style.top="-10000px",Z.style.fontSize="300px",Z.style.fontVariant="normal",Z.style.fontStyle="normal",Z.style.fontWeight="normal",Z.style.letterSpacing="0",Z.appendChild(X),document.body.appendChild(Z);var de=X.offsetWidth;return X.style.fontFamily=M(J)+", "+te,{node:X,w:de,parent:Z}}function F(){var J,te=this.fonts.length,Z,X,de=te;for(J=0;J<te;J+=1)this.fonts[J].loaded?de-=1:this.fonts[J].fOrigin==="n"||this.fonts[J].origin===0?this.fonts[J].loaded=!0:(Z=this.fonts[J].monoCase.node,X=this.fonts[J].monoCase.w,Z.offsetWidth!==X?(de-=1,this.fonts[J].loaded=!0):(Z=this.fonts[J].sansCase.node,X=this.fonts[J].sansCase.w,Z.offsetWidth!==X&&(de-=1,this.fonts[J].loaded=!0)),this.fonts[J].loaded&&(this.fonts[J].sansCase.parent.parentNode.removeChild(this.fonts[J].sansCase.parent),this.fonts[J].monoCase.parent.parentNode.removeChild(this.fonts[J].monoCase.parent)));de!==0&&Date.now()-this.initTime<o?setTimeout(this.checkLoadedFontsBinded,20):setTimeout(this.setIsLoadedBinded,10)}function N(J,te){var Z=document.body&&te?"svg":"canvas",X,de=getFontProperties(J);if(Z==="svg"){var he=createNS("text");he.style.fontSize="100px",he.setAttribute("font-family",J.fFamily),he.setAttribute("font-style",de.style),he.setAttribute("font-weight",de.weight),he.textContent="1",J.fClass?(he.style.fontFamily="inherit",he.setAttribute("class",J.fClass)):he.style.fontFamily=J.fFamily,te.appendChild(he),X=he}else{var ne=new OffscreenCanvas(500,500).getContext("2d");ne.font=de.style+" "+de.weight+" 100px "+J.fFamily,X=ne}function ue(ce){return Z==="svg"?(X.textContent=ce,X.getComputedTextLength()):X.measureText(ce).width}return{measureText:ue}}function G(J,te){if(!J){this.isLoaded=!0;return}if(this.chars){this.isLoaded=!0,this.fonts=J.list;return}if(!document.body){this.isLoaded=!0,J.list.forEach(function(Se){Se.helper=N(Se),Se.cache={}}),this.fonts=J.list;return}var Z=J.list,X,de=Z.length,he=de;for(X=0;X<de;X+=1){var ne=!0,ue,ce;if(Z[X].loaded=!1,Z[X].monoCase=D(Z[X].fFamily,"monospace"),Z[X].sansCase=D(Z[X].fFamily,"sans-serif"),!Z[X].fPath)Z[X].loaded=!0,he-=1;else if(Z[X].fOrigin==="p"||Z[X].origin===3){if(ue=document.querySelectorAll('style[f-forigin="p"][f-family="'+Z[X].fFamily+'"], style[f-origin="3"][f-family="'+Z[X].fFamily+'"]'),ue.length>0&&(ne=!1),ne){var fe=createTag("style");fe.setAttribute("f-forigin",Z[X].fOrigin),fe.setAttribute("f-origin",Z[X].origin),fe.setAttribute("f-family",Z[X].fFamily),fe.type="text/css",fe.innerText="@font-face {font-family: "+Z[X].fFamily+"; font-style: normal; src: url('"+Z[X].fPath+"');}",te.appendChild(fe)}}else if(Z[X].fOrigin==="g"||Z[X].origin===1){for(ue=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),ce=0;ce<ue.length;ce+=1)ue[ce].href.indexOf(Z[X].fPath)!==-1&&(ne=!1);if(ne){var ve=createTag("link");ve.setAttribute("f-forigin",Z[X].fOrigin),ve.setAttribute("f-origin",Z[X].origin),ve.type="text/css",ve.rel="stylesheet",ve.href=Z[X].fPath,document.body.appendChild(ve)}}else if(Z[X].fOrigin==="t"||Z[X].origin===2){for(ue=document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'),ce=0;ce<ue.length;ce+=1)Z[X].fPath===ue[ce].src&&(ne=!1);if(ne){var Te=createTag("link");Te.setAttribute("f-forigin",Z[X].fOrigin),Te.setAttribute("f-origin",Z[X].origin),Te.setAttribute("rel","stylesheet"),Te.setAttribute("href",Z[X].fPath),te.appendChild(Te)}}Z[X].helper=N(Z[X],te),Z[X].cache={},this.fonts.push(Z[X])}he===0?this.isLoaded=!0:setTimeout(this.checkLoadedFonts.bind(this),100)}function B(J){if(J){this.chars||(this.chars=[]);var te,Z=J.length,X,de=this.chars.length,he;for(te=0;te<Z;te+=1){for(X=0,he=!1;X<de;)this.chars[X].style===J[te].style&&this.chars[X].fFamily===J[te].fFamily&&this.chars[X].ch===J[te].ch&&(he=!0),X+=1;he||(this.chars.push(J[te]),de+=1)}}}function H(J,te,Z){for(var X=0,de=this.chars.length;X<de;){if(this.chars[X].ch===J&&this.chars[X].style===te&&this.chars[X].fFamily===Z)return this.chars[X];X+=1}return(typeof J=="string"&&J.charCodeAt(0)!==13||!J)&&console&&console.warn&&!this._warned&&(this._warned=!0,console.warn("Missing character from exported characters list: ",J,te,Z)),u}function O(J,te,Z){var X=this.getFontByName(te),de=J;if(!X.cache[de]){var he=X.helper;if(J===" "){var ne=he.measureText("|"+J+"|"),ue=he.measureText("||");X.cache[de]=(ne-ue)/100}else X.cache[de]=he.measureText(J)/100}return X.cache[de]*Z}function V(J){for(var te=0,Z=this.fonts.length;te<Z;){if(this.fonts[te].fName===J)return this.fonts[te];te+=1}return this.fonts[0]}function U(J){var te=0,Z=J.charCodeAt(0);if(Z>=55296&&Z<=56319){var X=J.charCodeAt(1);X>=56320&&X<=57343&&(te=(Z-55296)*1024+X-56320+65536)}return te}function W(J,te){var Z=J.toString(16)+te.toString(16);return j.indexOf(Z)!==-1}function K(J){return J===R}function Y(J){return J===P}function ee(J){var te=U(J);return te>=I&&te<=L}function oe(J){return ee(J.substr(0,2))&&ee(J.substr(2,2))}function se(J){return T.indexOf(J)!==-1}function Q(J,te){var Z=U(J.substr(te,2));if(Z!==S)return!1;var X=0;for(te+=2;X<5;){if(Z=U(J.substr(te,2)),Z<C||Z>_)return!1;X+=1,te+=2}return U(J.substr(te,2))===E}function ie(){this.isLoaded=!0}var ae=function(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this._warned=!1,this.initTime=Date.now(),this.setIsLoadedBinded=this.setIsLoaded.bind(this),this.checkLoadedFontsBinded=this.checkLoadedFonts.bind(this)};ae.isModifier=W,ae.isZeroWidthJoiner=K,ae.isFlagEmoji=oe,ae.isRegionalCode=ee,ae.isCombinedCharacter=se,ae.isRegionalFlag=Q,ae.isVariationSelector=Y,ae.BLACK_FLAG_CODE_POINT=S;var re={addChars:B,addFonts:G,getCharData:H,getFontByName:V,measureText:O,checkLoadedFonts:F,setIsLoaded:ie};return ae.prototype=re,ae}();function SlotManager(o){this.animationData=o}SlotManager.prototype.getProp=function(o){return this.animationData.slots&&this.animationData.slots[o.sid]?Object.assign(o,this.animationData.slots[o.sid].p):o};function slotFactory(o){return new SlotManager(o)}function RenderableElement(){}RenderableElement.prototype={initRenderable:function(){this.isInRange=!1,this.hidden=!1,this.isTransparent=!1,this.renderableComponents=[]},addRenderableComponent:function(u){this.renderableComponents.indexOf(u)===-1&&this.renderableComponents.push(u)},removeRenderableComponent:function(u){this.renderableComponents.indexOf(u)!==-1&&this.renderableComponents.splice(this.renderableComponents.indexOf(u),1)},prepareRenderableFrame:function(u){this.checkLayerLimits(u)},checkTransparency:function(){this.finalTransform.mProp.o.v<=0?!this.isTransparent&&this.globalData.renderConfig.hideOnTransparent&&(this.isTransparent=!0,this.hide()):this.isTransparent&&(this.isTransparent=!1,this.show())},checkLayerLimits:function(u){this.data.ip-this.data.st<=u&&this.data.op-this.data.st>u?this.isInRange!==!0&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):this.isInRange!==!1&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var u,T=this.renderableComponents.length;for(u=0;u<T;u+=1)this.renderableComponents[u].renderFrame(this._isFirstFrame)},sourceRectAtTime:function(){return{top:0,left:0,width:100,height:100}},getLayerSize:function(){return this.data.ty===5?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}}};var getBlendMode=function(){var o={0:"source-over",1:"multiply",2:"screen",3:"overlay",4:"darken",5:"lighten",6:"color-dodge",7:"color-burn",8:"hard-light",9:"soft-light",10:"difference",11:"exclusion",12:"hue",13:"saturation",14:"color",15:"luminosity"};return function(u){return o[u]||""}}();function SliderEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,0,0,T)}function AngleEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,0,0,T)}function ColorEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,1,0,T)}function PointEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,1,0,T)}function LayerIndexEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,0,0,T)}function MaskIndexEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,0,0,T)}function CheckboxEffect(o,u,T){this.p=PropertyFactory.getProp(u,o.v,0,0,T)}function NoValueEffect(){this.p={}}function EffectsManager(o,u){var T=o.ef||[];this.effectElements=[];var S,E=T.length,C;for(S=0;S<E;S+=1)C=new GroupEffect(T[S],u),this.effectElements.push(C)}function GroupEffect(o,u){this.init(o,u)}extendPrototype([DynamicPropertyContainer],GroupEffect),GroupEffect.prototype.getValue=GroupEffect.prototype.iterateDynamicProperties,GroupEffect.prototype.init=function(o,u){this.data=o,this.effectElements=[],this.initDynamicPropertyContainer(u);var T,S=this.data.ef.length,E,C=this.data.ef;for(T=0;T<S;T+=1){switch(E=null,C[T].ty){case 0:E=new SliderEffect(C[T],u,this);break;case 1:E=new AngleEffect(C[T],u,this);break;case 2:E=new ColorEffect(C[T],u,this);break;case 3:E=new PointEffect(C[T],u,this);break;case 4:case 7:E=new CheckboxEffect(C[T],u,this);break;case 10:E=new LayerIndexEffect(C[T],u,this);break;case 11:E=new MaskIndexEffect(C[T],u,this);break;case 5:E=new EffectsManager(C[T],u);break;default:E=new NoValueEffect(C[T]);break}E&&this.effectElements.push(E)}};function BaseElement(){}BaseElement.prototype={checkMasks:function(){if(!this.data.hasMask)return!1;for(var u=0,T=this.data.masksProperties.length;u<T;){if(this.data.masksProperties[u].mode!=="n"&&this.data.masksProperties[u].cl!==!1)return!0;u+=1}return!1},initExpressions:function(){var u=getExpressionInterfaces();if(u){var T=u("layer"),S=u("effects"),E=u("shape"),C=u("text"),_=u("comp");this.layerInterface=T(this),this.data.hasMask&&this.maskManager&&this.layerInterface.registerMaskInterface(this.maskManager);var P=S.createEffectsInterface(this,this.layerInterface);this.layerInterface.registerEffectsInterface(P),this.data.ty===0||this.data.xt?this.compInterface=_(this):this.data.ty===4?(this.layerInterface.shapeInterface=E(this.shapesData,this.itemsData,this.layerInterface),this.layerInterface.content=this.layerInterface.shapeInterface):this.data.ty===5&&(this.layerInterface.textInterface=C(this),this.layerInterface.text=this.layerInterface.textInterface)}},setBlendMode:function(){var u=getBlendMode(this.data.bm),T=this.baseElement||this.layerElement;T.style["mix-blend-mode"]=u},initBaseData:function(u,T,S){this.globalData=T,this.comp=S,this.data=u,this.layerId=createElementID(),this.data.sr||(this.data.sr=1),this.effectsManager=new EffectsManager(this.data,this,this.dynamicProperties)},getType:function(){return this.type},sourceRectAtTime:function(){}};function FrameElement(){}FrameElement.prototype={initFrame:function(){this._isFirstFrame=!1,this.dynamicProperties=[],this._mdf=!1},prepareProperties:function(u,T){var S,E=this.dynamicProperties.length;for(S=0;S<E;S+=1)(T||this._isParent&&this.dynamicProperties[S].propType==="transform")&&(this.dynamicProperties[S].getValue(),this.dynamicProperties[S]._mdf&&(this.globalData._mdf=!0,this._mdf=!0))},addDynamicProperty:function(u){this.dynamicProperties.indexOf(u)===-1&&this.dynamicProperties.push(u)}};function FootageElement(o,u,T){this.initFrame(),this.initRenderable(),this.assetData=u.getAssetData(o.refId),this.footageData=u.imageLoader.getAsset(this.assetData),this.initBaseData(o,u,T)}FootageElement.prototype.prepareFrame=function(){},extendPrototype([RenderableElement,BaseElement,FrameElement],FootageElement),FootageElement.prototype.getBaseElement=function(){return null},FootageElement.prototype.renderFrame=function(){},FootageElement.prototype.destroy=function(){},FootageElement.prototype.initExpressions=function(){var o=getExpressionInterfaces();if(o){var u=o("footage");this.layerInterface=u(this)}},FootageElement.prototype.getFootageData=function(){return this.footageData};function AudioElement(o,u,T){this.initFrame(),this.initRenderable(),this.assetData=u.getAssetData(o.refId),this.initBaseData(o,u,T),this._isPlaying=!1,this._canPlay=!1;var S=this.globalData.getAssetsPath(this.assetData);this.audio=this.globalData.audioController.createAudio(S),this._currentTime=0,this.globalData.audioController.addAudio(this),this._volumeMultiplier=1,this._volume=1,this._previousVolume=null,this.tm=o.tm?PropertyFactory.getProp(this,o.tm,0,u.frameRate,this):{_placeholder:!0},this.lv=PropertyFactory.getProp(this,o.au&&o.au.lv?o.au.lv:{k:[100]},1,.01,this)}AudioElement.prototype.prepareFrame=function(o){if(this.prepareRenderableFrame(o,!0),this.prepareProperties(o,!0),this.tm._placeholder)this._currentTime=o/this.data.sr;else{var u=this.tm.v;this._currentTime=u}this._volume=this.lv.v[0];var T=this._volume*this._volumeMultiplier;this._previousVolume!==T&&(this._previousVolume=T,this.audio.volume(T))},extendPrototype([RenderableElement,BaseElement,FrameElement],AudioElement),AudioElement.prototype.renderFrame=function(){this.isInRange&&this._canPlay&&(this._isPlaying?(!this.audio.playing()||Math.abs(this._currentTime/this.globalData.frameRate-this.audio.seek())>.1)&&this.audio.seek(this._currentTime/this.globalData.frameRate):(this.audio.play(),this.audio.seek(this._currentTime/this.globalData.frameRate),this._isPlaying=!0))},AudioElement.prototype.show=function(){},AudioElement.prototype.hide=function(){this.audio.pause(),this._isPlaying=!1},AudioElement.prototype.pause=function(){this.audio.pause(),this._isPlaying=!1,this._canPlay=!1},AudioElement.prototype.resume=function(){this._canPlay=!0},AudioElement.prototype.setRate=function(o){this.audio.rate(o)},AudioElement.prototype.volume=function(o){this._volumeMultiplier=o,this._previousVolume=o*this._volume,this.audio.volume(this._previousVolume)},AudioElement.prototype.getBaseElement=function(){return null},AudioElement.prototype.destroy=function(){},AudioElement.prototype.sourceRectAtTime=function(){},AudioElement.prototype.initExpressions=function(){};function BaseRenderer(){}BaseRenderer.prototype.checkLayers=function(o){var u,T=this.layers.length,S;for(this.completeLayers=!0,u=T-1;u>=0;u-=1)this.elements[u]||(S=this.layers[u],S.ip-S.st<=o-this.layers[u].st&&S.op-S.st>o-this.layers[u].st&&this.buildItem(u)),this.completeLayers=this.elements[u]?this.completeLayers:!1;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(o){switch(o.ty){case 2:return this.createImage(o);case 0:return this.createComp(o);case 1:return this.createSolid(o);case 3:return this.createNull(o);case 4:return this.createShape(o);case 5:return this.createText(o);case 6:return this.createAudio(o);case 13:return this.createCamera(o);case 15:return this.createFootage(o);default:return this.createNull(o)}},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.createAudio=function(o){return new AudioElement(o,this.globalData,this)},BaseRenderer.prototype.createFootage=function(o){return new FootageElement(o,this.globalData,this)},BaseRenderer.prototype.buildAllItems=function(){var o,u=this.layers.length;for(o=0;o<u;o+=1)this.buildItem(o);this.checkPendingElements()},BaseRenderer.prototype.includeLayers=function(o){this.completeLayers=!1;var u,T=o.length,S,E=this.layers.length;for(u=0;u<T;u+=1)for(S=0;S<E;){if(this.layers[S].id===o[u].id){this.layers[S]=o[u];break}S+=1}},BaseRenderer.prototype.setProjectInterface=function(o){this.globalData.projectInterface=o},BaseRenderer.prototype.initItems=function(){this.globalData.progressiveLoad||this.buildAllItems()},BaseRenderer.prototype.buildElementParenting=function(o,u,T){for(var S=this.elements,E=this.layers,C=0,_=E.length;C<_;)E[C].ind==u&&(!S[C]||S[C]===!0?(this.buildItem(C),this.addPendingElement(o)):(T.push(S[C]),S[C].setAsParent(),E[C].parent!==void 0?this.buildElementParenting(o,E[C].parent,T):o.setHierarchy(T))),C+=1},BaseRenderer.prototype.addPendingElement=function(o){this.pendingElements.push(o)},BaseRenderer.prototype.searchExtraCompositions=function(o){var u,T=o.length;for(u=0;u<T;u+=1)if(o[u].xt){var S=this.createComp(o[u]);S.initExpressions(),this.globalData.projectInterface.registerComposition(S)}},BaseRenderer.prototype.getElementById=function(o){var u,T=this.elements.length;for(u=0;u<T;u+=1)if(this.elements[u].data.ind===o)return this.elements[u];return null},BaseRenderer.prototype.getElementByPath=function(o){var u=o.shift(),T;if(typeof u=="number")T=this.elements[u];else{var S,E=this.elements.length;for(S=0;S<E;S+=1)if(this.elements[S].data.nm===u){T=this.elements[S];break}}return o.length===0?T:T.getElementByPath(o)},BaseRenderer.prototype.setupGlobalData=function(o,u){this.globalData.fontManager=new FontManager,this.globalData.slotManager=slotFactory(o),this.globalData.fontManager.addChars(o.chars),this.globalData.fontManager.addFonts(o.fonts,u),this.globalData.getAssetData=this.animationItem.getAssetData.bind(this.animationItem),this.globalData.getAssetsPath=this.animationItem.getAssetsPath.bind(this.animationItem),this.globalData.imageLoader=this.animationItem.imagePreloader,this.globalData.audioController=this.animationItem.audioController,this.globalData.frameId=0,this.globalData.frameRate=o.fr,this.globalData.nm=o.nm,this.globalData.compSize={w:o.w,h:o.h}};var effectTypes={TRANSFORM_EFFECT:"transformEFfect"};function TransformElement(){}TransformElement.prototype={initTransform:function(){var u=new Matrix;this.finalTransform={mProp:this.data.ks?TransformPropertyFactory.getTransformProperty(this,this.data.ks,this):{o:0},_matMdf:!1,_localMatMdf:!1,_opMdf:!1,mat:u,localMat:u,localOpacity:1},this.data.ao&&(this.finalTransform.mProp.autoOriented=!0),this.data.ty},renderTransform:function(){if(this.finalTransform._opMdf=this.finalTransform.mProp.o._mdf||this._isFirstFrame,this.finalTransform._matMdf=this.finalTransform.mProp._mdf||this._isFirstFrame,this.hierarchy){var u,T=this.finalTransform.mat,S=0,E=this.hierarchy.length;if(!this.finalTransform._matMdf)for(;S<E;){if(this.hierarchy[S].finalTransform.mProp._mdf){this.finalTransform._matMdf=!0;break}S+=1}if(this.finalTransform._matMdf)for(u=this.finalTransform.mProp.v.props,T.cloneFromProps(u),S=0;S<E;S+=1)T.multiply(this.hierarchy[S].finalTransform.mProp.v)}(!this.localTransforms||this.finalTransform._matMdf)&&(this.finalTransform._localMatMdf=this.finalTransform._matMdf),this.finalTransform._opMdf&&(this.finalTransform.localOpacity=this.finalTransform.mProp.o.v)},renderLocalTransform:function(){if(this.localTransforms){var u=0,T=this.localTransforms.length;if(this.finalTransform._localMatMdf=this.finalTransform._matMdf,!this.finalTransform._localMatMdf||!this.finalTransform._opMdf)for(;u<T;)this.localTransforms[u]._mdf&&(this.finalTransform._localMatMdf=!0),this.localTransforms[u]._opMdf&&!this.finalTransform._opMdf&&(this.finalTransform.localOpacity=this.finalTransform.mProp.o.v,this.finalTransform._opMdf=!0),u+=1;if(this.finalTransform._localMatMdf){var S=this.finalTransform.localMat;for(this.localTransforms[0].matrix.clone(S),u=1;u<T;u+=1){var E=this.localTransforms[u].matrix;S.multiply(E)}S.multiply(this.finalTransform.mat)}if(this.finalTransform._opMdf){var C=this.finalTransform.localOpacity;for(u=0;u<T;u+=1)C*=this.localTransforms[u].opacity*.01;this.finalTransform.localOpacity=C}}},searchEffectTransforms:function(){if(this.renderableEffectsManager){var u=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);if(u.length){this.localTransforms=[],this.finalTransform.localMat=new Matrix;var T=0,S=u.length;for(T=0;T<S;T+=1)this.localTransforms.push(u[T])}}},globalToLocal:function(u){var T=[];T.push(this.finalTransform);for(var S=!0,E=this.comp;S;)E.finalTransform?(E.data.hasMask&&T.splice(0,0,E.finalTransform),E=E.comp):S=!1;var C,_=T.length,P;for(C=0;C<_;C+=1)P=T[C].mat.applyToPointArray(0,0,0),u=[u[0]-P[0],u[1]-P[1],0];return u},mHelper:new Matrix};function MaskElement(o,u,T){this.data=o,this.element=u,this.globalData=T,this.storedData=[],this.masksProperties=this.data.masksProperties||[],this.maskElement=null;var S=this.globalData.defs,E,C=this.masksProperties?this.masksProperties.length:0;this.viewData=createSizedArray(C),this.solidPath="";var _,P=this.masksProperties,R=0,I=[],L,j,M=createElementID(),D,F,N,G,B="clipPath",H="clip-path";for(E=0;E<C;E+=1)if((P[E].mode!=="a"&&P[E].mode!=="n"||P[E].inv||P[E].o.k!==100||P[E].o.x)&&(B="mask",H="mask"),(P[E].mode==="s"||P[E].mode==="i")&&R===0?(D=createNS("rect"),D.setAttribute("fill","#ffffff"),D.setAttribute("width",this.element.comp.data.w||0),D.setAttribute("height",this.element.comp.data.h||0),I.push(D)):D=null,_=createNS("path"),P[E].mode==="n")this.viewData[E]={op:PropertyFactory.getProp(this.element,P[E].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,P[E],3),elem:_,lastPath:""},S.appendChild(_);else{R+=1,_.setAttribute("fill",P[E].mode==="s"?"#000000":"#ffffff"),_.setAttribute("clip-rule","nonzero");var O;if(P[E].x.k!==0?(B="mask",H="mask",G=PropertyFactory.getProp(this.element,P[E].x,0,null,this.element),O=createElementID(),F=createNS("filter"),F.setAttribute("id",O),N=createNS("feMorphology"),N.setAttribute("operator","erode"),N.setAttribute("in","SourceGraphic"),N.setAttribute("radius","0"),F.appendChild(N),S.appendChild(F),_.setAttribute("stroke",P[E].mode==="s"?"#000000":"#ffffff")):(N=null,G=null),this.storedData[E]={elem:_,x:G,expan:N,lastPath:"",lastOperator:"",filterId:O,lastRadius:0},P[E].mode==="i"){j=I.length;var V=createNS("g");for(L=0;L<j;L+=1)V.appendChild(I[L]);var U=createNS("mask");U.setAttribute("mask-type","alpha"),U.setAttribute("id",M+"_"+R),U.appendChild(_),S.appendChild(U),V.setAttribute("mask","url("+getLocationHref()+"#"+M+"_"+R+")"),I.length=0,I.push(V)}else I.push(_);P[E].inv&&!this.solidPath&&(this.solidPath=this.createLayerSolidPath()),this.viewData[E]={elem:_,lastPath:"",op:PropertyFactory.getProp(this.element,P[E].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,P[E],3),invRect:D},this.viewData[E].prop.k||this.drawPath(P[E],this.viewData[E].prop.v,this.viewData[E])}for(this.maskElement=createNS(B),C=I.length,E=0;E<C;E+=1)this.maskElement.appendChild(I[E]);R>0&&(this.maskElement.setAttribute("id",M),this.element.maskedElement.setAttribute(H,"url("+getLocationHref()+"#"+M+")"),S.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}MaskElement.prototype.getMaskProperty=function(o){return this.viewData[o].prop},MaskElement.prototype.renderFrame=function(o){var u=this.element.finalTransform.mat,T,S=this.masksProperties.length;for(T=0;T<S;T+=1)if((this.viewData[T].prop._mdf||o)&&this.drawPath(this.masksProperties[T],this.viewData[T].prop.v,this.viewData[T]),(this.viewData[T].op._mdf||o)&&this.viewData[T].elem.setAttribute("fill-opacity",this.viewData[T].op.v),this.masksProperties[T].mode!=="n"&&(this.viewData[T].invRect&&(this.element.finalTransform.mProp._mdf||o)&&this.viewData[T].invRect.setAttribute("transform",u.getInverseMatrix().to2dCSS()),this.storedData[T].x&&(this.storedData[T].x._mdf||o))){var E=this.storedData[T].expan;this.storedData[T].x.v<0?(this.storedData[T].lastOperator!=="erode"&&(this.storedData[T].lastOperator="erode",this.storedData[T].elem.setAttribute("filter","url("+getLocationHref()+"#"+this.storedData[T].filterId+")")),E.setAttribute("radius",-this.storedData[T].x.v)):(this.storedData[T].lastOperator!=="dilate"&&(this.storedData[T].lastOperator="dilate",this.storedData[T].elem.setAttribute("filter",null)),this.storedData[T].elem.setAttribute("stroke-width",this.storedData[T].x.v*2))}},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var o="M0,0 ";return o+=" h"+this.globalData.compSize.w,o+=" v"+this.globalData.compSize.h,o+=" h-"+this.globalData.compSize.w,o+=" v-"+this.globalData.compSize.h+" ",o},MaskElement.prototype.drawPath=function(o,u,T){var S=" M"+u.v[0][0]+","+u.v[0][1],E,C;for(C=u._length,E=1;E<C;E+=1)S+=" C"+u.o[E-1][0]+","+u.o[E-1][1]+" "+u.i[E][0]+","+u.i[E][1]+" "+u.v[E][0]+","+u.v[E][1];if(u.c&&C>1&&(S+=" C"+u.o[E-1][0]+","+u.o[E-1][1]+" "+u.i[0][0]+","+u.i[0][1]+" "+u.v[0][0]+","+u.v[0][1]),T.lastPath!==S){var _="";T.elem&&(u.c&&(_=o.inv?this.solidPath+S:S),T.elem.setAttribute("d",_)),T.lastPath=S}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null};var filtersFactory=function(){var o={};o.createFilter=u,o.createAlphaToLuminanceFilter=T;function u(S,E){var C=createNS("filter");return C.setAttribute("id",S),E!==!0&&(C.setAttribute("filterUnits","objectBoundingBox"),C.setAttribute("x","0%"),C.setAttribute("y","0%"),C.setAttribute("width","100%"),C.setAttribute("height","100%")),C}function T(){var S=createNS("feColorMatrix");return S.setAttribute("type","matrix"),S.setAttribute("color-interpolation-filters","sRGB"),S.setAttribute("values","0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"),S}return o}(),featureSupport=function(){var o={maskType:!0,svgLumaHidden:!0,offscreenCanvas:typeof OffscreenCanvas<"u"};return(/MSIE 10/i.test(navigator.userAgent)||/MSIE 9/i.test(navigator.userAgent)||/rv:11.0/i.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent))&&(o.maskType=!1),/firefox/i.test(navigator.userAgent)&&(o.svgLumaHidden=!1),o}(),registeredEffects$1={},idPrefix="filter_result_";function SVGEffects(o){var u,T="SourceGraphic",S=o.data.ef?o.data.ef.length:0,E=createElementID(),C=filtersFactory.createFilter(E,!0),_=0;this.filters=[];var P;for(u=0;u<S;u+=1){P=null;var R=o.data.ef[u].ty;if(registeredEffects$1[R]){var I=registeredEffects$1[R].effect;P=new I(C,o.effectsManager.effectElements[u],o,idPrefix+_,T),T=idPrefix+_,registeredEffects$1[R].countsAsEffect&&(_+=1)}P&&this.filters.push(P)}_&&(o.globalData.defs.appendChild(C),o.layerElement.setAttribute("filter","url("+getLocationHref()+"#"+E+")")),this.filters.length&&o.addRenderableComponent(this)}SVGEffects.prototype.renderFrame=function(o){var u,T=this.filters.length;for(u=0;u<T;u+=1)this.filters[u].renderFrame(o)},SVGEffects.prototype.getEffects=function(o){var u,T=this.filters.length,S=[];for(u=0;u<T;u+=1)this.filters[u].type===o&&S.push(this.filters[u]);return S};function registerEffect$1(o,u,T){registeredEffects$1[o]={effect:u,countsAsEffect:T}}function SVGBaseElement(){}SVGBaseElement.prototype={initRendererElement:function(){this.layerElement=createNS("g")},createContainerElements:function(){this.matteElement=createNS("g"),this.transformedElement=this.layerElement,this.maskedElement=this.layerElement,this._sizeChanged=!1;var u=null;if(this.data.td){this.matteMasks={};var T=createNS("g");T.setAttribute("id",this.layerId),T.appendChild(this.layerElement),u=T,this.globalData.defs.appendChild(T)}else this.data.tt?(this.matteElement.appendChild(this.layerElement),u=this.matteElement,this.baseElement=this.matteElement):this.baseElement=this.layerElement;if(this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),this.data.ty===0&&!this.data.hd){var S=createNS("clipPath"),E=createNS("path");E.setAttribute("d","M0,0 L"+this.data.w+",0 L"+this.data.w+","+this.data.h+" L0,"+this.data.h+"z");var C=createElementID();if(S.setAttribute("id",C),S.appendChild(E),this.globalData.defs.appendChild(S),this.checkMasks()){var _=createNS("g");_.setAttribute("clip-path","url("+getLocationHref()+"#"+C+")"),_.appendChild(this.layerElement),this.transformedElement=_,u?u.appendChild(this.transformedElement):this.baseElement=this.transformedElement}else this.layerElement.setAttribute("clip-path","url("+getLocationHref()+"#"+C+")")}this.data.bm!==0&&this.setBlendMode()},renderElement:function(){this.finalTransform._localMatMdf&&this.transformedElement.setAttribute("transform",this.finalTransform.localMat.to2dCSS()),this.finalTransform._opMdf&&this.transformedElement.setAttribute("opacity",this.finalTransform.localOpacity)},destroyBaseElement:function(){this.layerElement=null,this.matteElement=null,this.maskManager.destroy()},getBaseElement:function(){return this.data.hd?null:this.baseElement},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData),this.renderableEffectsManager=new SVGEffects(this),this.searchEffectTransforms()},getMatte:function(u){if(this.matteMasks||(this.matteMasks={}),!this.matteMasks[u]){var T=this.layerId+"_"+u,S,E,C,_;if(u===1||u===3){var P=createNS("mask");P.setAttribute("id",T),P.setAttribute("mask-type",u===3?"luminance":"alpha"),C=createNS("use"),C.setAttributeNS("http://www.w3.org/1999/xlink","href","#"+this.layerId),P.appendChild(C),this.globalData.defs.appendChild(P),!featureSupport.maskType&&u===1&&(P.setAttribute("mask-type","luminance"),S=createElementID(),E=filtersFactory.createFilter(S),this.globalData.defs.appendChild(E),E.appendChild(filtersFactory.createAlphaToLuminanceFilter()),_=createNS("g"),_.appendChild(C),P.appendChild(_),_.setAttribute("filter","url("+getLocationHref()+"#"+S+")"))}else if(u===2){var R=createNS("mask");R.setAttribute("id",T),R.setAttribute("mask-type","alpha");var I=createNS("g");R.appendChild(I),S=createElementID(),E=filtersFactory.createFilter(S);var L=createNS("feComponentTransfer");L.setAttribute("in","SourceGraphic"),E.appendChild(L);var j=createNS("feFuncA");j.setAttribute("type","table"),j.setAttribute("tableValues","1.0 0.0"),L.appendChild(j),this.globalData.defs.appendChild(E);var M=createNS("rect");M.setAttribute("width",this.comp.data.w),M.setAttribute("height",this.comp.data.h),M.setAttribute("x","0"),M.setAttribute("y","0"),M.setAttribute("fill","#ffffff"),M.setAttribute("op
322acity","0"),I.setAttribute("filter","url("+getLocationHref()+"#"+S+")"),I.appendChild(M),C=createNS("use"),C.setAttributeNS("http://www.w3.org/1999/xlink","href","#"+this.layerId),I.appendChild(C),featureSupport.maskType||(R.setAttribute("mask-type","luminance"),E.appendChild(filtersFactory.createAlphaToLuminanceFilter()),_=createNS("g"),I.appendChild(M),_.appendChild(this.layerElement),I.appendChild(_)),this.globalData.defs.appendChild(R)}this.matteMasks[u]=T}return this.matteMasks[u]},setMatte:function(u){this.matteElement&&this.matteElement.setAttribute("mask","url("+getLocationHref()+"#"+u+")")}};function HierarchyElement(){}HierarchyElement.prototype={initHierarchy:function(){this.hierarchy=[],this._isParent=!1,this.checkParenting()},setHierarchy:function(u){this.hierarchy=u},setAsParent:function(){this._isParent=!0},checkParenting:function(){this.data.parent!==void 0&&this.comp.buildElementParenting(this,this.data.parent,[])}};function RenderableDOMElement(){}(function(){var o={initElement:function(T,S,E){this.initFrame(),this.initBaseData(T,S,E),this.initTransform(T,S,E),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide()},hide:function(){if(!this.hidden&&(!this.isInRange||this.isTransparent)){var T=this.baseElement||this.layerElement;T.style.display="none",this.hidden=!0}},show:function(){if(this.isInRange&&!this.isTransparent){if(!this.data.hd){var T=this.baseElement||this.layerElement;T.style.display="block"}this.hidden=!1,this._isFirstFrame=!0}},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},renderInnerContent:function(){},prepareFrame:function(T){this._mdf=!1,this.prepareRenderableFrame(T),this.prepareProperties(T,this.isInRange),this.checkTransparency()},destroy:function(){this.innerElem=null,this.destroyBaseElement()}};extendPrototype([RenderableElement,createProxyFunction(o)],RenderableDOMElement)})();function IImageElement(o,u,T){this.assetData=u.getAssetData(o.refId),this.assetData&&this.assetData.sid&&(this.assetData=u.slotManager.getProp(this.assetData)),this.initElement(o,u,T),this.sourceRect={top:0,left:0,width:this.assetData.w,height:this.assetData.h}}extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],IImageElement),IImageElement.prototype.createContent=function(){var o=this.globalData.getAssetsPath(this.assetData);this.innerElem=createNS("image"),this.innerElem.setAttribute("width",this.assetData.w+"px"),this.innerElem.setAttribute("height",this.assetData.h+"px"),this.innerElem.setAttribute("preserveAspectRatio",this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio),this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink","href",o),this.layerElement.appendChild(this.innerElem)},IImageElement.prototype.sourceRectAtTime=function(){return this.sourceRect};function ProcessedElement(o,u){this.elem=o,this.pos=u}function IShapeElement(){}IShapeElement.prototype={addShapeToModifiers:function(u){var T,S=this.shapeModifiers.length;for(T=0;T<S;T+=1)this.shapeModifiers[T].addShape(u)},isShapeInAnimatedModifiers:function(u){for(var T=0,S=this.shapeModifiers.length;T<S;)if(this.shapeModifiers[T].isAnimatedWithShape(u))return!0;return!1},renderModifiers:function(){if(this.shapeModifiers.length){var u,T=this.shapes.length;for(u=0;u<T;u+=1)this.shapes[u].sh.reset();T=this.shapeModifiers.length;var S;for(u=T-1;u>=0&&(S=this.shapeModifiers[u].processShapes(this._isFirstFrame),!S);u-=1);}},searchProcessedElement:function(u){for(var T=this.processedElements,S=0,E=T.length;S<E;){if(T[S].elem===u)return T[S].pos;S+=1}return 0},addProcessedElement:function(u,T){for(var S=this.processedElements,E=S.length;E;)if(E-=1,S[E].elem===u){S[E].pos=T;return}S.push(new ProcessedElement(u,T))},prepareFrame:function(u){this.prepareRenderableFrame(u),this.prepareProperties(u,this.isInRange)}};var lineCapEnum={1:"butt",2:"round",3:"square"},lineJoinEnum={1:"miter",2:"round",3:"bevel"};function SVGShapeData(o,u,T){this.caches=[],this.styles=[],this.transformers=o,this.lStr="",this.sh=T,this.lvl=u,this._isAnimated=!!T.k;for(var S=0,E=o.length;S<E;){if(o[S].mProps.dynamicProperties.length){this._isAnimated=!0;break}S+=1}}SVGShapeData.prototype.setAsAnimated=function(){this._isAnimated=!0};function SVGStyleData(o,u){this.data=o,this.type=o.ty,this.d="",this.lvl=u,this._mdf=!1,this.closed=o.hd===!0,this.pElem=createNS("path"),this.msElem=null}SVGStyleData.prototype.reset=function(){this.d="",this._mdf=!1};function DashProperty(o,u,T,S){this.elem=o,this.frameId=-1,this.dataProps=createSizedArray(u.length),this.renderer=T,this.k=!1,this.dashStr="",this.dashArray=createTypedArray("float32",u.length?u.length-1:0),this.dashoffset=createTypedArray("float32",1),this.initDynamicPropertyContainer(S);var E,C=u.length||0,_;
vendor: 6,569 bytes, line 322
322for(E=0;E<C;E+=1)_=PropertyFactory.getProp(o,u[E].v,0,0,this),this.k=_.k||this.k,this.dataProps[E]={n:u[E].n,p:_};this.k||this.getValue(!0),this._isAnimated=this.k}DashProperty.prototype.getValue=function(o){if(!(this.elem.globalData.frameId===this.frameId&&!o)&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf=this._mdf||o,this._mdf)){var u=0,T=this.dataProps.length;for(this.renderer==="svg"&&(this.dashStr=""),u=0;u<T;u+=1)this.dataProps[u].n!=="o"?this.renderer==="svg"?this.dashStr+=" "+this.dataProps[u].p.v:this.dashArray[u]=this.dataProps[u].p.v:this.dashoffset[0]=this.dataProps[u].p.v}},extendPrototype([DynamicPropertyContainer],DashProperty);function SVGStrokeStyleData(o,u,T){this.initDynamicPropertyContainer(o),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(o,u.o,0,.01,this),this.w=PropertyFactory.getProp(o,u.w,0,null,this),this.d=new DashProperty(o,u.d||{},"svg",this),this.c=PropertyFactory.getProp(o,u.c,1,255,this),this.style=T,this._isAnimated=!!this._isAnimated}extendPrototype([DynamicPropertyContainer],SVGStrokeStyleData);function SVGFillStyleData(o,u,T){this.initDynamicPropertyContainer(o),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(o,u.o,0,.01,this),this.c=PropertyFactory.getProp(o,u.c,1,255,this),this.style=T}extendPrototype([DynamicPropertyContainer],SVGFillStyleData);function SVGNoStyleData(o,u,T){this.initDynamicPropertyContainer(o),this.getValue=this.iterateDynamicProperties,this.style=T}extendPrototype([DynamicPropertyContainer],SVGNoStyleData);function GradientProperty(o,u,T){this.data=u,this.c=createTypedArray("uint8c",u.p*4);var S=u.k.k[0].s?u.k.k[0].s.length-u.p*4:u.k.k.length-u.p*4;this.o=createTypedArray("float32",S),this._cmdf=!1,this._omdf=!1,this._collapsable=this.checkCollapsable(),this._hasOpacity=S,this.initDynamicPropertyContainer(T),this.prop=PropertyFactory.getProp(o,u.k,1,null,this),this.k=this.prop.k,this.getValue(!0)}GradientProperty.prototype.comparePoints=function(o,u){for(var T=0,S=this.o.length/2,E;T<S;){if(E=Math.abs(o[T*4]-o[u*4+T*2]),E>.01)return!1;T+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!==this.c.length/4)return!1;if(this.data.k.k[0].s)for(var o=0,u=this.data.k.k.length;o<u;){if(!this.comparePoints(this.data.k.k[o].s,this.data.p))return!1;o+=1}else if(!this.comparePoints(this.data.k.k,this.data.p))return!1;return!0},GradientProperty.prototype.getValue=function(o){if(this.prop.getValue(),this._mdf=!1,this._cmdf=!1,this._omdf=!1,this.prop._mdf||o){var u,T=this.data.p*4,S,E;for(u=0;u<T;u+=1)S=u%4===0?100:255,E=Math.round(this.prop.v[u]*S),this.c[u]!==E&&(this.c[u]=E,this._cmdf=!o);if(this.o.length)for(T=this.prop.v.length,u=this.data.p*4;u<T;u+=1)S=u%2===0?100:1,E=u%2===0?Math.round(this.prop.v[u]*100):this.prop.v[u],this.o[u-this.data.p*4]!==E&&(this.o[u-this.data.p*4]=E,this._omdf=!o);this._mdf=!o}},extendPrototype([DynamicPropertyContainer],GradientProperty);function SVGGradientFillStyleData(o,u,T){this.initDynamicPropertyContainer(o),this.getValue=this.iterateDynamicProperties,this.initGradientData(o,u,T)}SVGGradientFillStyleData.prototype.initGradientData=function(o,u,T){this.o=PropertyFactory.getProp(o,u.o,0,.01,this),this.s=PropertyFactory.getProp(o,u.s,1,null,this),this.e=PropertyFactory.getProp(o,u.e,1,null,this),this.h=PropertyFactory.getProp(o,u.h||{k:0},0,.01,this),this.a=PropertyFactory.getProp(o,u.a||{k:0},0,degToRads,this),this.g=new GradientProperty(o,u.g,this),this.style=T,this.stops=[],this.setGradientData(T.pElem,u),this.setGradientOpacity(u,T),this._isAnimated=!!this._isAnimated},SVGGradientFillStyleData.prototype.setGradientData=function(o,u){var T=createElementID(),S=createNS(u.t===1?"linearGradient":"radialGradient");S.setAttribute("id",T),S.setAttribute("spreadMethod","pad"),S.setAttribute("gradientUnits","userSpaceOnUse");var E=[],C,_,P;for(P=u.g.p*4,_=0;_<P;_+=4)C=createNS("stop"),S.appendChild(C),E.push(C);o.setAttribute(u.ty==="gf"?"fill":"stroke","url("+getLocationHref()+"#"+T+")"),this.gf=S,this.cst=E},SVGGradientFillStyleData.prototype.setGradientOpacity=function(o,u){if(this.g._hasOpacity&&!this.g._collapsable){var T,S,E,C=createNS("mask"),_=createNS("path");C.appendChild(_);var P=createElementID(),R=createElementID();C.setAttribute("id",R);var I=createNS(o.t===1?"linearGradient":"radialGradient");I.setAttribute("id",P),I.setAttribute("spreadMethod","pad"),I.setAttribute("gradientUnits","userSpaceOnUse"),E=o.g.k.k[0].s?o.g.k.k[0].s.length:o.g.k.k.length;var L=this.stops;for(S=o.g.p*4;S<E;S+=2)T=createNS("stop"),T.setAttribute("stop-color","rgb(255,255,255)"),I.appendChild(T),L.push(T);_.setAttribute(o.ty==="gf"?"fill":"stroke","url("+getLocationHref()+"#"+P+")"),o.ty==="gs"&&(_.setAttribute("stroke-linecap",lineCapEnum[o.lc||2]),_.setAttribute("stroke-linejoin",lineJoinEnum[o.lj||2]),o.lj===1&&_.setAttribute("stroke-miterlimit",o.ml)),this.of=I,this.ms=C,this.ost=L,this.maskId=R,u.msElem=_}},extendPrototype([DynamicPropertyContainer],SVGGradientFillStyleData);function SVGGradientStrokeStyleData(o,u,T){this.initDynamicPropertyContainer(o),this.getValue=this.iterateDynamicProperties,this.w=PropertyFactory.getProp(o,u.w,0,null,this),this.d=new DashProperty(o,u.d||{},"svg",this),this.initGradientData(o,u,T),this._isAnimated=!!this._isAnimated}extendPrototype([SVGGradientFillStyleData,DynamicPropertyContainer],SVGGradientStrokeStyleData);function ShapeGroupData(){this.it=[],this.prevViewData=[],this.gr=createNS("g")}function SVGTransformData(o,u,T){this.transform={mProps:o,op:u,container:T},this.elements=[],this._isAnimated=this.transform.mProps.dynamicProperties.length||this.transform.op.effectsSequence.length}var buildShapeString=function(u,T,S,E){if(T===0)return"";var C=u.o,_=u.i,P=u.v,R,I=" M"+E.applyToPointStringified(P[0][0],P[0][1]);for(R=1;R<T;R+=1)I+=" C"+E.applyToPointStringified(C[R-1][0],C[R-1][1])+" "+E.applyToPointStringified(_[R][0],_[R][1])+" "+E.applyToPointStringified(P[R][0],P[R][1]);return S&&T&&(I+=" C"+E.applyToPointStringified(C[R-1][0],C[R-1][1])+" "+E.applyToPointStringified(_[0][0],_[0][1])+" "+E.applyToPointStringified(P[0][0],P[0][1]),I+="z"),I},SVGElementsRenderer=function(){var o=new Matrix,u=new Matrix,T={createRenderFunction:S};function S(j){switch(j.ty){case"fl":return P;case"gf":return I;case"gs":return R;case"st":return L;case"sh":case"el":case"rc":case"sr":return _;case"tr":return E;case"no":return C;default:return null}}function E(j,M,D){(D||M.transform.op._mdf)&&M.transform.container.setAttribute("op
322acity",M.transform.op.v),(D||M.transform.mProps._mdf)&&M.transform.container.setAttribute("transform",M.transform.mProps.v.to2dCSS())}function C(){}function _(j,M,D){var F,N,G,B,H,O,V=M.styles.length,U=M.lvl,W,K,Y,ee;for(O=0;O<V;O+=1){if(B=M.sh._mdf||D,M.styles[O].lvl<U){for(K=u.reset(),Y=U-M.styles[O].lvl,ee=M.transformers.length-1;!B&&Y>0;)B=M.transformers[ee].mProps._mdf||B,Y-=1,ee-=1;if(B)for(Y=U-M.styles[O].lvl,ee=M.transformers.length-1;Y>0;)K.multiply(M.transformers[ee].mProps.v),Y-=1,ee-=1}else K=o;if(W=M.sh.paths,N=W._length,B){for(G="",F=0;F<N;F+=1)H=W.shapes[F],H&&H._length&&(G+=buildShapeString(H,H._length,H.c,K));M.caches[O]=G}else G=M.caches[O];M.styles[O].d+=j.hd===!0?"":G,M.styles[O]._mdf=B||M.styles[O]._mdf}}function P(j,M,D){var F=M.style;(M.c._mdf||D)&&F.pElem.setAttribute("fill","rgb("+bmFloor(M.c.v[0])+","+bmFloor(M.c.v[1])+","+bmFloor(M.c.v[2])+")"),(M.o._mdf||D)&&F.pElem.setAttribute("fill-opacity",M.o.v)}function R(j,M,D){I(j,M,D),L(j,M,D)}function I(j,M,D){var F=M.gf,N=M.g._hasOpacity,G=M.s.v,B=M.e.v;if(M.o._mdf||D){var H=j.ty==="gf"?"fill-opacity":"stroke-opacity";M.style.pElem.setAttribute(H,M.o.v)}if(M.s._mdf||D){var O=j.t===1?"x1":"cx",V=O==="x1"?"y1":"cy";F.setAttribute(O,G[0]),F.setAttribute(V,G[1]),N&&!M.g._collapsable&&(M.of.setAttribute(O,G[0]),M.of.setAttribute(V,G[1]))}var U,W,K,Y;if(M.g._cmdf||D){U=M.cst;var ee=M.g.c;for(K=U.length,W=0;W<K;W+=1)Y=U[W],Y.setAttribute("offset",ee[W*4]+"%"),Y.setAttribute("stop-color","rgb("+ee[W*4+1]+","+ee[W*4+2]+","+ee[W*4+3]+")")}if(N&&(M.g._omdf||D)){var oe=M.g.o;for(M.g._collapsable?U=M.cst:U=M.ost,K=U.length,W=0;W<K;W+=1)Y=U[W],M.g._collapsable||Y.setAttribute("offset",oe[W*2]+"%"),Y.setAttribute("stop-opacity",oe[W*2+1])}if(j.t===1)(M.e._mdf||D)&&(F.setAttribute("x2",B[0]),F.setAttribute("y2",B[1]),N&&!M.g._collapsable&&(M.of.setAttribute("x2",B[0]),M.of.setAttribute("y2",B[1])));else{var se;if((M.s._mdf||M.e._mdf||D)&&(se=Math.sqrt(Math.pow(G[0]-B[0],2)+Math.pow(G[1]-B[1],2)),F.setAttribute("r",se),N&&!M.g._collapsable&&M.of.setAttribute("r",se)),M.s._mdf||M.e._mdf||M.h._mdf||M.a._mdf||D){se||(se=Math.sqrt(Math.pow(G[0]-B[0],2)+Math.pow(G[1]-B[1],2)));var Q=Math.atan2(B[1]-G[1],B[0]-G[0]),ie=M.h.v;ie>=1?ie=.99:ie<=-1&&(ie=-.99);var ae=se*ie,re=Math.cos(Q+M.a.v)*ae+G[0],J=Math.sin(Q+M.a.v)*ae+G[1];F.setAttribute("fx",re),F.setAttribute("fy",J),N&&!M.g._collapsable&&(M.of.setAttribute("fx",re),M.of.setAttribute("fy",J))}}}function L(j,M,D){var F=M.style,N=M.d;N&&(N._mdf||D)&&N.dashStr&&(F.pElem.setAttribute("stroke-dasharray",N.dashStr),F.pElem.setAttribute("stroke-dashoffset",N.dashoffset[0])),M.c&&(M.c._mdf||D)&&F.pElem.setAttribute("stroke","rgb("+bmFloor(M.c.v[0])+","+bmFloor(M.c.v[1])+","+bmFloor(M.c.v[2])+")"),(M.o._mdf||D)&&F.pElem.setAttribute("stroke-opacity",M.o.v),(M.w._mdf||D)&&(F.pElem.setAttribute("stroke-width",M.w.v),F.msElem&&F.msElem.setAttribute("stroke-width",M.w.v))}return T}();function SVGShapeElement(o,u,T){this.shapes=[],this.shapesData=o.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(o,u,T),this.prevViewData=[]}extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var o,u=this.shapes.length,T,S,E=this.stylesList.length,C,_=[],P=!1;for(S=0;S<E;S+=1){for(C=this.stylesList[S],P=!1,_.length=0,o=0;o<u;o+=1)T=this.shapes[o],T.styles.indexOf(C)!==-1&&(_.push(T),P=T._isAnimated||P);_.length>1&&P&&this.setShapesAsAnimated(_)}},SVGShapeElement.prototype.setShapesAsAnimated=function(o){var u,T=o.length;for(u=0;u<T;u+=1)o[u].setAsAnimated()},SVGShapeElement.prototype.createStyleElement=function(o,u){var T,S=new SVGStyleData(o,u),E=S.pElem;if(o.ty==="st")T=new SVGStrokeStyleData(this,o,S);else if(o.ty==="fl")T=new SVGFillStyleData(this,o,S);else if(o.ty==="gf"||o.ty==="gs"){var C=o.ty==="gf"?SVGGradientFillStyleData:SVGGradientStrokeStyleData;T=new C(this,o,S),this.globalData.defs.appendChild(T.gf),T.maskId&&(this.globalData.defs.appendChild(T.ms),this.globalData.defs.appendChild(T.of),E.setAttribute("mask","url("+getLocationHref()+"#"+T.maskId+")"))}else o.ty==="no"&&(T=new SVGNoStyleData(this,o,S));return(o.ty==="st"||o.ty==="gs")&&(E.setAttribute("stroke-linecap",lineCapEnum[o.lc||2]),E.setAttribute("stroke-linejoin",lineJoinEnum[o.lj||2]),E.setAttribute("fill-opacity","0"),o.lj===1&&E.setAttribute("stroke-miterlimit",o.ml)),o.r===2&&E.setAttribute("fill-rule","evenodd"),o.ln&&E.setAttribute("id",o.ln),o.cl&&E.setAttribute("class",o.cl),o.bm&&(E.style["mix-blend-mode"]=getBlendM
vendor: 31,045 bytes, line 322
322ode(o.bm)),this.stylesList.push(S),this.addToAnimatedContents(o,T),T},SVGShapeElement.prototype.createGroupElement=function(o){var u=new ShapeGroupData;return o.ln&&u.gr.setAttribute("id",o.ln),o.cl&&u.gr.setAttribute("class",o.cl),o.bm&&(u.gr.style["mix-blend-mode"]=getBlendMode(o.bm)),u},SVGShapeElement.prototype.createTransformElement=function(o,u){var T=TransformPropertyFactory.getTransformProperty(this,o,this),S=new SVGTransformData(T,T.o,u);return this.addToAnimatedContents(o,S),S},SVGShapeElement.prototype.createShapeElement=function(o,u,T){var S=4;o.ty==="rc"?S=5:o.ty==="el"?S=6:o.ty==="sr"&&(S=7);var E=ShapePropertyFactory.getShapeProp(this,o,S,this),C=new SVGShapeData(u,T,E);return this.shapes.push(C),this.addShapeToModifiers(C),this.addToAnimatedContents(o,C),C},SVGShapeElement.prototype.addToAnimatedContents=function(o,u){for(var T=0,S=this.animatedContents.length;T<S;){if(this.animatedContents[T].element===u)return;T+=1}this.animatedContents.push({fn:SVGElementsRenderer.createRenderFunction(o),element:u,data:o})},SVGShapeElement.prototype.setElementStyles=function(o){var u=o.styles,T,S=this.stylesList.length;for(T=0;T<S;T+=1)u.indexOf(this.stylesList[T])===-1&&!this.stylesList[T].closed&&u.push(this.stylesList[T])},SVGShapeElement.prototype.reloadShapes=function(){this._isFirstFrame=!0;var o,u=this.itemsData.length;for(o=0;o<u;o+=1)this.prevViewData[o]=this.itemsData[o];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes(),u=this.dynamicProperties.length,o=0;o<u;o+=1)this.dynamicProperties[o].getValue();this.renderModifiers()},SVGShapeElement.prototype.searchShapes=function(o,u,T,S,E,C,_){var P=[].concat(C),R,I=o.length-1,L,j,M=[],D=[],F,N,G;for(R=I;R>=0;R-=1){if(G=this.searchProcessedElement(o[R]),G?u[R]=T[G-1]:o[R]._render=_,o[R].ty==="fl"||o[R].ty==="st"||o[R].ty==="gf"||o[R].ty==="gs"||o[R].ty==="no")G?u[R].style.closed=o[R].hd:u[R]=this.createStyleElement(o[R],E),o[R]._render&&u[R].style.pElem.parentNode!==S&&S.appendChild(u[R].style.pElem),M.push(u[R].style);else if(o[R].ty==="gr"){if(!G)u[R]=this.createGroupElement(o[R]);else for(j=u[R].it.length,L=0;L<j;L+=1)u[R].prevViewData[L]=u[R].it[L];this.searchShapes(o[R].it,u[R].it,u[R].prevViewData,u[R].gr,E+1,P,_),o[R]._render&&u[R].gr.parentNode!==S&&S.appendChild(u[R].gr)}else o[R].ty==="tr"?(G||(u[R]=this.createTransformElement(o[R],S)),F=u[R].transform,P.push(F)):o[R].ty==="sh"||o[R].ty==="rc"||o[R].ty==="el"||o[R].ty==="sr"?(G||(u[R]=this.createShapeElement(o[R],P,E)),this.setElementStyles(u[R])):o[R].ty==="tm"||o[R].ty==="rd"||o[R].ty==="ms"||o[R].ty==="pb"||o[R].ty==="zz"||o[R].ty==="op"?(G?(N=u[R],N.closed=!1):(N=ShapeModifiers.getModifier(o[R].ty),N.init(this,o[R]),u[R]=N,this.shapeModifiers.push(N)),D.push(N)):o[R].ty==="rp"&&(G?(N=u[R],N.closed=!0):(N=ShapeModifiers.getModifier(o[R].ty),u[R]=N,N.init(this,o,R,u),this.shapeModifiers.push(N),_=!1),D.push(N));this.addProcessedElement(o[R],R+1)}for(I=M.length,R=0;R<I;R+=1)M[R].closed=!0;for(I=D.length,R=0;R<I;R+=1)D[R].closed=!0},SVGShapeElement.prototype.renderInnerContent=function(){this.renderModifiers();var o,u=this.stylesList.length;for(o=0;o<u;o+=1)this.stylesList[o].reset();for(this.renderShape(),o=0;o<u;o+=1)(this.stylesList[o]._mdf||this._isFirstFrame)&&(this.stylesList[o].msElem&&(this.stylesList[o].msElem.setAttribute("d",this.stylesList[o].d),this.stylesList[o].d="M0 0"+this.stylesList[o].d),this.stylesList[o].pElem.setAttribute("d",this.stylesList[o].d||"M0 0"))},SVGShapeElement.prototype.renderShape=function(){var o,u=this.animatedContents.length,T;for(o=0;o<u;o+=1)T=this.animatedContents[o],(this._isFirstFrame||T.element._isAnimated)&&T.data!==!0&&T.fn(T.data,T.element,this._isFirstFrame)},SVGShapeElement.prototype.destroy=function(){this.destroyBaseElement(),this.shapesData=null,this.itemsData=null};function LetterProps(o,u,T,S,E,C){this.o=o,this.sw=u,this.sc=T,this.fc=S,this.m=E,this.p=C,this._mdf={o:!0,sw:!!u,sc:!!T,fc:!!S,m:!0,p:!0}}LetterProps.prototype.update=function(o,u,T,S,E,C){this._mdf.o=!1,this._mdf.sw=!1,this._mdf.sc=!1,this._mdf.fc=!1,this._mdf.m=!1,this._mdf.p=!1;var _=!1;return this.o!==o&&(this.o=o,this._mdf.o=!0,_=!0),this.sw!==u&&(this.sw=u,this._mdf.sw=!0,_=!0),this.sc!==T&&(this.sc=T,this._mdf.sc=!0,_=!0),this.fc!==S&&(this.fc=S,this._mdf.fc=!0,_=!0),this.m!==E&&(this.m=E,this._mdf.m=!0,_=!0),C.length&&(this.p[0]!==C[0]||this.p[1]!==C[1]||this.p[4]!==C[4]||this.p[5]!==C[5]||this.p[12]!==C[12]||this.p[13]!==C[13])&&(this.p=C,this._mdf.p=!0,_=!0),_};function TextProperty(o,u){this._frameId=initialDefaultFrame,this.pv="",this.v="",this.kf=!1,this._isFirstFrame=!0,this._mdf=!1,u.d&&u.d.sid&&(u.d=o.globalData.slotManager.getProp(u.d)),this.data=u,this.elem=o,this.comp=this.elem.comp,this.keysIndex=0,this.canResize=!1,this.minimumFontSize=1,this.effectsSequence=[],this.currentData={ascent:0,boxWidth:this.defaultBoxWidth,f:"",fStyle:"",fWeight:"",fc:"",j:"",justifyOffset:"",l:[],lh:0,lineWidths:[],ls:"",of:"",s:"",sc:"",sw:0,t:0,tr:0,sz:0,ps:null,fillColorAnim:!1,strokeColorAnim:!1,strokeWidthAnim:!1,yOffset:0,finalSize:0,finalText:[],finalLineHeight:0,__complete:!1},this.copyData(this.currentData,this.data.d.k[0].s),this.searchProperty()||this.completeTextData(this.currentData)}TextProperty.prototype.defaultBoxWidth=[0,0],TextProperty.prototype.copyData=function(o,u){for(var T in u)Object.prototype.hasOwnProperty.call(u,T)&&(o[T]=u[T]);return o},TextProperty.prototype.setCurrentData=function(o){o.__complete||this.completeTextData(o),this.currentData=o,this.currentData.boxWidth=this.currentData.boxWidth||this.defaultBoxWidth,this._mdf=!0},TextProperty.prototype.searchProperty=function(){return this.searchKeyframes()},TextProperty.prototype.searchKeyframes=function(){return this.kf=this.data.d.k.length>1,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(o){this.effectsSequence.push(o),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(o){if(!((this.elem.globalData.frameId===this.frameId||!this.effectsSequence.length)&&!o)){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var u=this.currentData,T=this.keysIndex;if(this.lock){this.setCurrentData(this.currentData);return}this.lock=!0,this._mdf=!1;var S,E=this.effectsSequence.length,C=o||this.data.d.k[this.keysIndex].s;for(S=0;S<E;S+=1)T!==this.keysIndex?C=this.effectsSequence[S](C,C.t):C=this.effectsSequence[S](this.currentData,C.t);u!==C&&this.setCurrentData(C),this.v=this.currentData,this.pv=this.v,this.lock=!1,this.frameId=this.elem.globalData.frameId}},TextProperty.prototype.getKeyframeValue=function(){for(var o=this.data.d.k,u=this.elem.comp.renderedFrame,T=0,S=o.length;T<=S-1&&!(T===S-1||o[T+1].t>u);)T+=1;return this.keysIndex!==T&&(this.keysIndex=T),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(o){for(var u=[],T=0,S=o.length,E,C,_=!1,P=!1,R="";T<S;)_=P,P=!1,E=o.charCodeAt(T),R=o.charAt(T),FontManager.isCombinedCharacter(E)?_=!0:E>=55296&&E<=56319?FontManager.isRegionalFlag(o,T)?R=o.substr(T,14):(C=o.charCodeAt(T+1),C>=56320&&C<=57343&&(FontManager.isModifier(E,C)?(R=o.substr(T,2),_=!0):FontManager.isFlagEmoji(o.substr(T,4))?R=o.substr(T,4):R=o.substr(T,2))):E>56319?(C=o.charCodeAt(T+1),FontManager.isVariationSelector(E)&&(_=!0)):FontManager.isZeroWidthJoiner(E)&&(_=!0,P=!0),_?(u[u.length-1]+=R,_=!1):u.push(R),T+=R.length;return u},TextProperty.prototype.completeTextData=function(o){o.__complete=!0;var u=this.elem.globalData.fontManager,T=this.data,S=[],E,C,_,P=0,R,I=T.m.g,L=0,j=0,M=0,D=[],F=0,N=0,G,B,H=u.getFontByName(o.f),O,V=0,U=getFontProperties(H);o.fWeight=U.weight,o.fStyle=U.style,o.finalSize=o.s,o.finalText=this.buildFinalText(o.t),C=o.finalText.length,o.finalLineHeight=o.lh;var W=o.tr/1e3*o.finalSize,K;if(o.sz)for(var Y=!0,ee=o.sz[0],oe=o.sz[1],se,Q;Y;){Q=this.buildFinalText(o.t),se=0,F=0,C=Q.length,W=o.tr/1e3*o.finalSize;var ie=-1;for(E=0;E<C;E+=1)K=Q[E].charCodeAt(0),_=!1,Q[E]===" "?ie=E:(K===13||K===3)&&(F=0,_=!0,se+=o.finalLineHeight||o.finalSize*1.2),u.chars?(O=u.getCharData(Q[E],H.fStyle,H.fFamily),V=_?0:O.w*o.finalSize/100):V=u.measureText(Q[E],o.f,o.finalSize),F+V>ee&&Q[E]!==" "?(ie===-1?C+=1:E=ie,se+=o.finalLineHeight||o.finalSize*1.2,Q.splice(E,ie===E?1:0,"\r"),ie=-1,F=0):(F+=V,F+=W);se+=H.ascent*o.finalSize/100,this.canResize&&o.finalSize>this.minimumFontSize&&oe<se?(o.finalSize-=1,o.finalLineHeight=o.finalSize*o.lh/o.s):(o.finalText=Q,C=o.finalText.length,Y=!1)}F=-W,V=0;var ae=0,re;for(E=0;E<C;E+=1)if(_=!1,re=o.finalText[E],K=re.charCodeAt(0),K===13||K===3?(ae=0,D.push(F),N=F>N?F:N,F=-2*W,R="",_=!0,M+=1):R=re,u.chars?(O=u.getCharData(re,H.fStyle,u.getFontByName(o.f).fFamily),V=_?0:O.w*o.finalSize/100):V=u.measureText(R,o.f,o.finalSize),re===" "?ae+=V+W:(F+=V+W+ae,ae=0),S.push({l:V,an:V,add:L,n:_,anIndexes:[],val:R,line:M,animatorJustifyOffset:0}),I==2){if(L+=V,R===""||R===" "||E===C-1){for((R===""||R===" ")&&(L-=V);j<=E;)S[j].an=L,S[j].ind=P,S[j].extra=V,j+=1;P+=1,L=0}}else if(I==3){if(L+=V,R===""||E===C-1){for(R===""&&(L-=V);j<=E;)S[j].an=L,S[j].ind=P,S[j].extra=V,j+=1;L=0,P+=1}}else S[P].ind=P,S[P].extra=0,P+=1;if(o.l=S,N=F>N?F:N,D.push(F),o.sz)o.boxWidth=o.sz[0],o.justifyOffset=0;else switch(o.boxWidth=N,o.j){case 1:o.justifyOffset=-o.boxWidth;break;case 2:o.justifyOffset=-o.boxWidth/2;break;default:o.justifyOffset=0}o.lineWidths=D;var J=T.a,te,Z;B=J.length;var X,de,he=[];for(G=0;G<B;G+=1){for(te=J[G],te.a.sc&&(o.strokeColorAnim=!0),te.a.sw&&(o.strokeWidthAnim=!0),(te.a.fc||te.a.fh||te.a.fs||te.a.fb)&&(o.fillColorAnim=!0),de=0,X=te.s.b,E=0;E<C;E+=1)Z=S[E],Z.anIndexes[G]=de,(X==1&&Z.val!==""||X==2&&Z.val!==""&&Z.val!==" "||X==3&&(Z.n||Z.val==" "||E==C-1)||X==4&&(Z.n||E==C-1))&&(te.s.rn===1&&he.push(de),de+=1);T.a[G].s.totalChars=de;var ne=-1,ue;if(te.s.rn===1)for(E=0;E<C;E+=1)Z=S[E],ne!=Z.anIndexes[G]&&(ne=Z.anIndexes[G],ue=he.splice(Math.floor(Math.random()*he.length),1)[0]),Z.anIndexes[G]=ue}o.yOffset=o.finalLineHeight||o.finalSize*1.2,o.ls=o.ls||0,o.ascent=H.ascent*o.finalSize/100},TextProperty.prototype.updateDocumentData=function(o,u){u=u===void 0?this.keysIndex:u;var T=this.copyData({},this.data.d.k[u].s);T=this.copyData(T,o),this.data.d.k[u].s=T,this.recalculate(u),this.setCurrentData(T),this.elem.addDynamicProperty(this)},TextProperty.prototype.recalculate=function(o){var u=this.data.d.k[o].s;u.__complete=!1,this.keysIndex=0,this._isFirstFrame=!0,this.getValue(u)},TextProperty.prototype.canResizeFont=function(o){this.canResize=o,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)},TextProperty.prototype.setMinimumFontSize=function(o){this.minimumFontSize=Math.floor(o)||1,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)};var TextSelectorProp=function(){var o=Math.max,u=Math.min,T=Math.floor;function S(C,_){this._currentTextLength=-1,this.k=!1,this.data=_,this.elem=C,this.comp=C.comp,this.finalS=0,this.finalE=0,this.initDynamicPropertyContainer(C),this.s=PropertyFactory.getProp(C,_.s||{k:0},0,0,this),"e"in _?this.e=PropertyFactory.getProp(C,_.e,0,0,this):this.e={v:100},this.o=PropertyFactory.getProp(C,_.o||{k:0},0,0,this),this.xe=PropertyFactory.getProp(C,_.xe||{k:0},0,0,this),this.ne=PropertyFactory.getProp(C,_.ne||{k:0},0,0,this),this.sm=PropertyFactory.getProp(C,_.sm||{k:100},0,0,this),this.a=PropertyFactory.getProp(C,_.a,0,.01,this),this.dynamicProperties.length||this.getValue()}S.prototype={getMult:function(_){this._currentTextLength!==this.elem.textProperty.currentData.l.length&&this.getValue();var P=0,R=0,I=1,L=1;this.ne.v>0?P=this.ne.v/100:R=-this.ne.v/100,this.xe.v>0?I=1-this.xe.v/100:L=1+this.xe.v/100;var j=BezierFactory.getBezierEasing(P,R,I,L).get,M=0,D=this.finalS,F=this.finalE,N=this.data.sh;if(N===2)F===D?M=_>=F?1:0:M=o(0,u(.5/(F-D)+(_-D)/(F-D),1)),M=j(M);else if(N===3)F===D?M=_>=F?0:1:M=1-o(0,u(.5/(F-D)+(_-D)/(F-D),1)),M=j(M);else if(N===4)F===D?M=0:(M=o(0,u(.5/(F-D)+(_-D)/(F-D),1)),M<.5?M*=2:M=1-2*(M-.5)),M=j(M);else if(N===5){if(F===D)M=0;else{var G=F-D;_=u(o(0,_+.5-D),F-D);var B=-G/2+_,H=G/2;M=Math.sqrt(1-B*B/(H*H))}M=j(M)}else N===6?(F===D?M=0:(_=u(o(0,_+.5-D),F-D),M=(1+Math.cos(Math.PI+Math.PI*2*_/(F-D)))/2),M=j(M)):(_>=T(D)&&(_-D<0?M=o(0,u(u(F,1)-(D-_),1)):M=o(0,u(F-_,1))),M=j(M));if(this.sm.v!==100){var O=this.sm.v*.01;O===0&&(O=1e-8);var V=.5-O*.5;M<V?M=0:(M=(M-V)/O,M>1&&(M=1))}return M*this.a.v},getValue:function(_){this.iterateDynamicProperties(),this._mdf=_||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,_&&this.data.r===2&&(this.e.v=this._currentTextLength);var P=this.data.r===2?1:100/this.data.totalChars,R=this.o.v/P,I=this.s.v/P+R,L=this.e.v/P+R;if(I>L){var j=I;I=L,L=j}this.finalS=I,this.finalE=L}},extendPrototype([DynamicPropertyContainer],S);function E(C,_,P){return new S(C,_)}return{getTextSelectorProp:E}}();function TextAnimatorDataProperty(o,u,T){var S={propType:!1},E=PropertyFactory.getProp,C=u.a;this.a={r:C.r?E(o,C.r,0,degToRads,T):S,rx:C.rx?E(o,C.rx,0,degToRads,T):S,ry:C.ry?E(o,C.ry,0,degToRads,T):S,sk:C.sk?E(o,C.sk,0,degToRads,T):S,sa:C.sa?E(o,C.sa,0,degToRads,T):S,s:C.s?E(o,C.s,1,.01,T):S,a:C.a?E(o,C.a,1,0,T):S,o:C.o?E(o,C.o,0,.01,T):S,p:C.p?E(o,C.p,1,0,T):S,sw:C.sw?E(o,C.sw,0,0,T):S,sc:C.sc?E(o,C.sc,1,0,T):S,fc:C.fc?E(o,C.fc,1,0,T):S,fh:C.fh?E(o,C.fh,0,0,T):S,fs:C.fs?E(o,C.fs,0,.01,T):S,fb:C.fb?E(o,C.fb,0,.01,T):S,t:C.t?E(o,C.t,0,0,T):S},this.s=TextSelectorProp.getTextSelectorProp(o,u.s,T),this.s.t=u.s.t}function TextAnimatorProperty(o,u,T){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=o,this._renderType=u,this._elem=T,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(T)}TextAnimatorProperty.prototype.searchProperties=function(){var o,u=this._textData.a.length,T,S=PropertyFactory.getProp;for(o=0;o<u;o+=1)T=this._textData.a[o],this._animatorsData[o]=new TextAnimatorDataProperty(this._elem,T,this);this._textData.p&&"m"in this._textData.p?(this._pathData={a:S(this._elem,this._textData.p.a,0,0,this),f:S(this._elem,this._textData.p.f,0,0,this),l:S(this._elem,this._textData.p.l,0,0,this),r:S(this._elem,this._textData.p.r,0,0,this),p:S(this._elem,this._textData.p.p,0,0,this),m:this._elem.maskManager.getMaskProperty(this._textData.p.m)},this._hasMaskedPath=!0):this._hasMaskedPath=!1,this._moreOptions.alignment=S(this._elem,this._textData.m.a,1,0,this)},TextAnimatorProperty.prototype.getMeasures=function(o,u){if(this.lettersChangedFlag=u,!(!this._mdf&&!this._isFirstFrame&&!u&&(!this._hasMaskedPath||!this._pathData.m._mdf))){this._isFirstFrame=!1;var T=this._moreOptions.alignment.v,S=this._animatorsData,E=this._textData,C=this.mHelper,_=this._renderType,P=this.renderedLetters.length,R,I,L,j,M=o.l,D,F,N,G,B,H,O,V,U,W,K,Y,ee,oe,se;if(this._hasMaskedPath){if(se=this._pathData.m,!this._pathData.n||this._pathData._mdf){var Q=se.v;this._pathData.r.v&&(Q=Q.reverse()),D={tLength:0,segments:[]},j=Q._length-1;var ie;for(Y=0,L=0;L<j;L+=1)ie=bez.buildBezierData(Q.v[L],Q.v[L+1],[Q.o[L][0]-Q.v[L][0],Q.o[L][1]-Q.v[L][1]],[Q.i[L+1][0]-Q.v[L+1][0],Q.i[L+1][1]-Q.v[L+1][1]]),D.tLength+=ie.segmentLength,D.segments.push(ie),Y+=ie.segmentLength;L=j,se.v.c&&(ie=bez.buildBezierData(Q.v[L],Q.v[0],[Q.o[L][0]-Q.v[L][0],Q.o[L][1]-Q.v[L][1]],[Q.i[0][0]-Q.v[0][0],Q.i[0][1]-Q.v[0][1]]),D.tLength+=ie.segmentLength,D.segments.push(ie),Y+=ie.segmentLength),this._pathData.pi=D}if(D=this._pathData.pi,F=this._pathData.f.v,O=0,H=1,G=0,B=!0,W=D.segments,F<0&&se.v.c)for(D.tLength<Math.abs(F)&&(F=-Math.abs(F)%D.tLength),O=W.length-1,U=W[O].points,H=U.length-1;F<0;)F+=U[H].partialLength,H-=1,H<0&&(O-=1,U=W[O].points,H=U.length-1);U=W[O].points,V=U[H-1],N=U[H],K=N.partialLength}j=M.length,R=0,I=0;var ae=o.finalSize*1.2*.714,re=!0,J,te,Z,X,de;X=S.length;var he,ne=-1,ue,ce,fe,ve=F,Te=O,Se=H,ke=-1,we,Le,pe,Me,Pe,Ue,qe,Ie,Xe="",et=this.defaultPropsArray,tt;if(o.j===2||o.j===1){var Ye=0,ze=0,Ze=o.j===2?-.5:-1,He=0,rt=!0;for(L=0;L<j;L+=1)if(M[L].n){for(Ye&&(Ye+=ze);He<L;)M[He].animatorJustifyOffset=Ye,He+=1;Ye=0,rt=!0}else{for(Z=0;Z<X;Z+=1)J=S[Z].a,J.t.propType&&(rt&&o.j===2&&(ze+=J.t.v*Ze),te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),he.length?Ye+=J.t.v*he[0]*Ze:Ye+=J.t.v*he*Ze);rt=!1}for(Ye&&(Ye+=ze);He<L;)M[He].animatorJustifyOffset=Ye,He+=1}for(L=0;L<j;L+=1){if(C.reset(),we=1,M[L].n)R=0,I+=o.yOffset,I+=re?1:0,F=ve,re=!1,this._hasMaskedPath&&(O=Te,H=Se,U=W[O].points,V=U[H-1],N=U[H],K=N.partialLength,G=0),Xe="",Ie="",Ue="",tt="",et=this.defaultPropsArray;else{if(this._hasMaskedPath){if(ke!==M[L].line){switch(o.j){case 1:F+=Y-o.lineWidths[M[L].line];break;case 2:F+=(Y-o.lineWidths[M[L].line])/2;break}ke=M[L].line}ne!==M[L].ind&&(M[ne]&&(F+=M[ne].extra),F+=M[L].an/2,ne=M[L].ind),F+=T[0]*M[L].an*.005;var it=0;for(Z=0;Z<X;Z+=1)J=S[Z].a,J.p.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),he.length?it+=J.p.v[0]*he[0]:it+=J.p.v[0]*he),J.a.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),he.length?it+=J.a.v[0]*he[0]:it+=J.a.v[0]*he);for(B=!0,this._pathData.a.v&&(F=M[0].an*.5+(Y-this._pathData.f.v-M[0].an*.5-M[M.length-1].an*.5)*ne/(j-1),F+=this._pathData.f.v);B;)G+K>=F+it||!U?(ee=(F+it-G)/N.partialLength,ce=V.point[0]+(N.point[0]-V.point[0])*ee,fe=V.point[1]+(N.point[1]-V.point[1])*ee,C.translate(-T[0]*M[L].an*.005,-(T[1]*ae)*.01),B=!1):U&&(G+=N.partialLength,H+=1,H>=U.length&&(H=0,O+=1,W[O]?U=W[O].points:se.v.c?(H=0,O=0,U=W[O].points):(G-=N.partialLength,U=null)),U&&(V=N,N=U[H],K=N.partialLength));ue=M[L].an/2-M[L].add,C.translate(-ue,0,0)}else ue=M[L].an/2-M[L].add,C.translate(-ue,0,0),C.translate(-T[0]*M[L].an*.005,-T[1]*ae*.01,0);for(Z=0;Z<X;Z+=1)J=S[Z].a,J.t.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),(R!==0||o.j!==0)&&(this._hasMaskedPath?he.length?F+=J.t.v*he[0]:F+=J.t.v*he:he.length?R+=J.t.v*he[0]:R+=J.t.v*he));for(o.strokeWidthAnim&&(pe=o.sw||0),o.strokeColorAnim&&(o.sc?Le=[o.sc[0],o.sc[1],o.sc[2]]:Le=[0,0,0]),o.fillColorAnim&&o.fc&&(Me=[o.fc[0],o.fc[1],o.fc[2]]),Z=0;Z<X;Z+=1)J=S[Z].a,J.a.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),he.length?C.translate(-J.a.v[0]*he[0],-J.a.v[1]*he[1],J.a.v[2]*he[2]):C.translate(-J.a.v[0]*he,-J.a.v[1]*he,J.a.v[2]*he));for(Z=0;Z<X;Z+=1)J=S[Z].a,J.s.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),he.length?C.scale(1+(J.s.v[0]-1)*he[0],1+(J.s.v[1]-1)*he[1],1):C.scale(1+(J.s.v[0]-1)*he,1+(J.s.v[1]-1)*he,1));for(Z=0;Z<X;Z+=1){if(J=S[Z].a,te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),J.sk.propType&&(he.length?C.skewFromAxis(-J.sk.v*he[0],J.sa.v*he[1]):C.skewFromAxis(-J.sk.v*he,J.sa.v*he)),J.r.propType&&(he.length?C.rotateZ(-J.r.v*he[2]):C.rotateZ(-J.r.v*he)),J.ry.propType&&(he.length?C.rotateY(J.ry.v*he[1]):C.rotateY(J.ry.v*he)),J.rx.propType&&(he.length?C.rotateX(J.rx.v*he[0]):C.rotateX(J.rx.v*he)),J.o.propType&&(he.length?we+=(J.o.v*he[0]-we)*he[0]:we+=(J.o.v*he-we)*he),o.strokeWidthAnim&&J.sw.propType&&(he.length?pe+=J.sw.v*he[0]:pe+=J.sw.v*he),o.strokeColorAnim&&J.sc.propType)for(Pe=0;Pe<3;Pe+=1)he.length?Le[Pe]+=(J.sc.v[Pe]-Le[Pe])*he[0]:Le[Pe]+=(J.sc.v[Pe]-Le[Pe])*he;if(o.fillColorAnim&&o.fc){if(J.fc.propType)for(Pe=0;Pe<3;Pe+=1)he.length?Me[Pe]+=(J.fc.v[Pe]-Me[Pe])*he[0]:Me[Pe]+=(J.fc.v[Pe]-Me[Pe])*he;J.fh.propType&&(he.length?Me=addHueToRGB(Me,J.fh.v*he[0]):Me=addHueToRGB(Me,J.fh.v*he)),J.fs.propType&&(he.length?Me=addSaturationToRGB(Me,J.fs.v*he[0]):Me=addSaturationToRGB(Me,J.fs.v*he)),J.fb.propType&&(he.length?Me=addBrightnessToRGB(Me,J.fb.v*he[0]):Me=addBrightnessToRGB(Me,J.fb.v*he))}}for(Z=0;Z<X;Z+=1)J=S[Z].a,J.p.propType&&(te=S[Z].s,he=te.getMult(M[L].anIndexes[Z],E.a[Z].s.totalChars),this._hasMaskedPath?he.length?C.translate(0,J.p.v[1]*he[0],-J.p.v[2]*he[1]):C.translate(0,J.p.v[1]*he,-J.p.v[2]*he):he.length?C.translate(J.p.v[0]*he[0],J.p.v[1]*he[1],-J.p.v[2]*he[2]):C.translate(J.p.v[0]*he,J.p.v[1]*he,-J.p.v[2]*he));if(o.strokeWidthAnim&&(Ue=pe<0?0:pe),o.strokeColorAnim&&(qe="rgb("+Math.round(Le[0]*255)+","+Math.round(Le[1]*255)+","+Math.round(Le[2]*255)+")"),o.fillColorAnim&&o.fc&&(Ie="rgb("+Math.round(Me[0]*255)+","+Math.round(Me[1]*255)+","+Math.round(Me[2]*255)+")"),this._hasMaskedPath){if(C.translate(0,-o.ls),C.translate(0,T[1]*ae*.01+I,0),this._pathData.p.v){oe=(N.point[1]-V.point[1])/(N.point[0]-V.point[0]);var st=Math.atan(oe)*180/Math.PI;N.point[0]<V.point[0]&&(st+=180),C.rotate(-st*Math.PI/180)}C.translate(ce,fe,0),F-=T[0]*M[L].an*.005,M[L+1]&&ne!==M[L+1].ind&&(F+=M[L].an/2,F+=o.tr*.001*o.finalSize)}else{switch(C.translate(R,I,0),o.ps&&C.translate(o.ps[0],o.ps[1]+o.ascent,0),o.j){case 1:C.translate(M[L].animatorJustifyOffset+o.justifyOffset+(o.boxWidth-o.lineWidths[M[L].line]),0,0);break;case 2:C.translate(M[L].animatorJustifyOffset+o.justifyOffset+(o.boxWidth-o.lineWidths[M[L].line])/2,0,0);break}C.translate(0,-o.ls),C.translate(ue,0,0),C.translate(T[0]*M[L].an*.005,T[1]*ae*.01,0),R+=M[L].l+o.tr*.001*o.finalSize}_==="html"?Xe=C.toCSS():_==="svg"?Xe=C.to2dCSS():et=[C.props[0],C.props[1],C.props[2],C.props[3],C.props[4],C.props[5],C.props[6],C.props[7],C.props[8],C.props[9],C.props[10],C.props[11],C.props[12],C.props[13],C.props[14],C.props[15]],tt=we}P<=L?(de=new LetterProps(tt,Ue,qe,Ie,Xe,et),this.renderedLetters.push(de),P+=1,this.lettersChangedFlag=!0):(de=this.renderedLetters[L],this.lettersChangedFlag=de.update(tt,Ue,qe,Ie,Xe,et)||this.lettersChangedFlag)}}},TextAnimatorProperty.prototype.getValue=function(){this._elem.globalData.frameId!==this._frameId&&(this._frameId=this._elem.globalData.frameId,this.iterateDynamicProperties())},TextAnimatorProperty.prototype.mHelper=new Matrix,TextAnimatorProperty.prototype.defaultPropsArray=[],extendPrototype([DynamicPropertyContainer],TextAnimatorProperty);function ITextElement(){}ITextElement.prototype.initElement=function(o,u,T){this.lettersChangedFlag=!0,this.initFrame(),this.initBaseData(o,u,T),this.textProperty=new TextProperty(this,o.t,this.dynamicProperties),this.textAnimator=new TextAnimatorProperty(o.t,this.renderType,this),this.initTransform(o,u,T),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide(),this.textAnimator.searchProperties(this.dynamicProperties)},ITextElement.prototype.prepareFrame=function(o){this._mdf=!1,this.prepareRenderableFrame(o),this.prepareProperties(o,this.isInRange)},ITextElement.prototype.createPathShape=function(o,u){var T,S=u.length,E,C="";for(T=0;T<S;T+=1)u[T].ty==="sh"&&(E=u[T].ks.k,C+=buildShapeString(E,E.i.length,!0,o));return C},ITextElement.prototype.updateDocumentData=function(o,u){this.textProperty.updateDocumentData(o,u)},ITextElement.prototype.canResizeFont=function(o){this.textProperty.canResizeFont(o)},ITextElement.prototype.setMinimumFontSize=function(o){this.textProperty.setMinimumFontSize(o)},ITextElement.prototype.applyTextPropertiesToMatrix=function(o,u,T,S,E){switch(o.ps&&u.translate(o.ps[0],o.ps[1]+o.ascent,0),u.translate(0,-o.ls,0),o.j){case 1:u.translate(o.justifyOffset+(o.boxWidth-o.lineWidths[T]),0,0);break;case 2:u.translate(o.justifyOffset+(o.boxWidth-o.lineWidths[T])/2,0,0);break}u.translate(S,E,0)},ITextElement.prototype.buildColor=function(o){return"rgb("+Math.round(o[0]*255)+","+Math.round(o[1]*255)+","+Math.round(o[2]*255)+")"},ITextElement.prototype.emptyProp=new LetterProps,ITextElement.prototype.destroy=function(){},ITextElement.prototype.validateText=function(){(this.textProperty._mdf||this.textProperty._isFirstFrame)&&(this.buildNewText(),this.textProperty._isFirstFrame=!1,this.textProperty._mdf=!1)};var emptyShapeData={shapes:[]};function SVGTextLottieElement(o,u,T){this.textSpans=[],this.renderType="svg",this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],SVGTextLottieElement),SVGTextLottieElement.prototype.createContent=function(){this.data.singleShape&&!this.globalData.fontManager.chars&&(this.textContainer=createNS("text"))},SVGTextLottieElement.prototype.buildTextContents=function(o){for(var u=0,T=o.length,S=[],E="";u<T;)o[u]==="\r"||o[u]==="�"?(S.push(E),E=""):E+=o[u],u+=1;return S.push(E),S},SVGTextLottieElement.prototype.buildShapeData=function(o,u){if(o.shapes&&o.shapes.length){var T=o.shapes[0];if(T.it){var S=T.it[T.it.length-1];S.s&&(S.s.k[0]=u,S.s.k[1]=u)}}return o},SVGTextLottieElement.prototype.buildNewText=function(){this.addDynamicProperty(this);var o,u,T=this.textProperty.currentData;this.renderedLetters=createSizedArray(T?T.l.length:0),T.fc?this.layerElement.setAttribute("fill",this.buildColor(T.fc)):this.layerElement.setAttribute("fill","rgba(0,0,0,0)"),T.sc&&(this.layerElement.setAttribute("stroke",this.buildColor(T.sc)),this.layerElement.setAttribute("stroke-width",T.sw)),this.layerElement.setAttribute("font-size",T.finalSize);var S=this.globalData.fontManager.getFontByName(T.f);if(S.fClass)this.layerElement.setAttribute("class",S.fClass);else{this.layerElement.setAttribute("font-family",S.fFamily);var E=T.fWeight,C=T.fStyle;this.layerElement.setAttribute("font-style",C),this.layerElement.setAttribute("font-weight",E)}this.layerElement.setAttribute("aria-label",T.t);var _=T.l||[],P=!!this.globalData.fontManager.chars;u=_.length;var R,I=this.mHelper,L="",j=this.data.singleShape,M=0,D=0,F=!0,N=T.tr*.001*T.finalSize;if(j&&!P&&!T.sz){var G=this.textContainer,B="start";switch(T.j){case 1:B="end";break;case 2:B="middle";break;default:B="start";break}G.setAttribute("text-anchor",B),G.setAttribute("letter-spacing",N);var H=this.buildTextContents(T.finalText);for(u=H.length,D=T.ps?T.ps[1]+T.ascent:0,o=0;o<u;o+=1)R=this.textSpans[o].span||createNS("tspan"),R.textContent=H[o],R.setAttribute("x",0),R.setAttribute("y",D),R.style.display="inherit",G.appendChild(R),this.textSpans[o]||(this.textSpans[o]={span:null,glyph:null}),this.textSpans[o].span=R,D+=T.finalLineHeight;this.layerElement.appendChild(G)}else{var O=this.textSpans.length,V;for(o=0;o<u;o+=1){if(this.textSpans[o]||(this.textSpans[o]={span:null,childSpan:null,glyph:null}),!P||!j||o===0){if(R=O>o?this.textSpans[o].span:createNS(P?"g":"text"),O<=o){if(R.setAttribute("stroke-linecap","butt"),R.setAttribute("stroke-linejoin","round"),R.setAttribute("stroke-miterlimit","4"),this.textSpans[o].span=R,P){var U=createNS("g");R.appendChild(U),this.textSpans[o].childSpan=U}this.textSpans[o].span=R,this.layerElement.appendChild(R)}R.style.display="inherit"}if(I.reset(),j&&(_[o].n&&(M=-N,D+=T.yOffset,D+=F?1:0,F=!1),this.applyTextPropertiesToMatrix(T,I,_[o].line,M,D),M+=_[o].l||0,M+=N),P){V=this.globalData.fontManager.getCharData(T.finalText[o],S.fStyle,this.globalData.fontManager.getFontByName(T.f).fFamily);var W;if(V.t===1)W=new SVGCompElement(V.data,this.globalData,this);else{var K=emptyShapeData;V.data&&V.data.shapes&&(K=this.buildShapeData(V.data,T.finalSize)),W=new SVGShapeElement(K,this.globalData,this)}if(this.textSpans[o].glyph){var Y=this.textSpans[o].glyph;this.textSpans[o].childSpan.removeChild(Y.layerElement),Y.destroy()}this.textSpans[o].glyph=W,W._debug=!0,W.prepareFrame(0),W.renderFrame(),this.textSpans[o].childSpan.appendChild(W.layerElement),V.t===1&&this.textSpans[o].childSpan.setAttribute("transform","scale("+T.finalSize/100+","+T.finalSize/100+")")}else j&&R.setAttribute("transform","translate("+I.props[12]+","+I.props[13]+")"),R.textContent=_[o].val,R.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve")}j&&R&&R.setAttribute("d",L)}for(;o<this.textSpans.length;)this.textSpans[o].span.style.display="none",o+=1;this._sizeChanged=!0},SVGTextLottieElement.prototype.sourceRectAtTime=function(){if(this.prepareFrame(this.comp.renderedFrame-this.data.st),this.renderInnerContent(),this._sizeChanged){this._sizeChanged=!1;var o=this.layerElement.getBBox();this.bbox={top:o.y,left:o.x,width:o.width,height:o.height}}return this.bbox},SVGTextLottieElement.prototype.getValue=function(){var o,u=this.textSpans.length,T;for(this.renderedFrame=this.comp.renderedFrame,o=0;o<u;o+=1)T=this.textSpans[o].glyph,T&&(T.prepareFrame(this.comp.renderedFrame-this.data.st),T._mdf&&(this._mdf=!0))},SVGTextLottieElement.prototype.renderInnerContent=function(){if(this.validateText(),(!this.data.singleShape||this._mdf)&&(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag)){this._sizeChanged=!0;var o,u,T=this.textAnimator.renderedLetters,S=this.textProperty.currentData.l;u=S.length;var E,C,_;for(o=0;o<u;o+=1)S[o].n||(E=T[o],C=this.textSpans[o].span,_=this.textSpans[o].glyph,_&&_.renderFrame(),E._mdf.m&&C.setAttribute("transform",E.m),E._mdf.o&&C.setAttribute("opacity",E.o),E._mdf.sw&&C.setAttribute("stroke-width",E.sw),E._mdf.sc&&C.setAttribute("stroke",E.sc),E._mdf.fc&&C.setAttribute("fill",E.fc))}};function ISolidElement(o,u,T){this.initElement(o,u,T)}extendPrototype([IImageElement],ISolidElement),ISolidElement.prototype.createContent=function(){var o=createNS("rect");o.setAttribute("width",this.data.sw),o.setAttribute("height",this.data.sh),o.setAttribute("fill",this.data.sc),this.layerElement.appendChild(o)};function NullElement(o,u,T){this.initFrame(),this.initBaseData(o,u,T),this.initFrame(),this.initTransform(o,u,T),this.initHierarchy()}NullElement.prototype.prepareFrame=function(o){this.prepareProperties(o,!0)},NullElement.prototype.renderFrame=function(){},NullElement.prototype.getBaseElement=function(){return null},NullElement.prototype.destroy=function(){},NullElement.prototype.sourceRectAtTime=function(){},NullElement.prototype.hide=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement],NullElement);function SVGRendererBase(){}extendPrototype([BaseRenderer],SVGRendererBase),SVGRendererBase.prototype.createNull=function(o){return new NullElement(o,this.globalData,this)},SVGRendererBase.prototype.createShape=function(o){return new SVGShapeElement(o,this.globalData,this)},SVGRendererBase.prototype.createText=function(o){return new SVGTextLottieElement(o,this.globalData,this)},SVGRendererBase.prototype.createImage=function(o){return new IImageElement(o,this.globalData,this)},SVGRendererBase.prototype.createSolid=function(o){return new ISolidElement(o,this.globalData,this)},SVGRendererBase.prototype.configAnimation=function(o){this.svgElement.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.svgElement.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),this.renderConfig.viewBoxSize?this.svgElement.setAttribute("viewBox",this.renderConfig.viewBoxSize):this.svgElement.setAttribute("viewBox","0 0 "+o.w+" "+o.h),this.renderConfig.viewBoxOnly||(this.svgElement.setAttribute("width",o.w),this.svgElement.setAttribute("height",o.h),this.svgElement.style.width="100%",this.svgElement.style.height="100%",this.svgElement.style.transform="translate3d(0,
3220,0)",this.svgElement.style.contentVisibility=this.renderConfig.contentVisibility),this.renderConfig.width&&this.svgElement.setAttribute("width",this.renderConfig.width),this.renderConfig.height&&this.svgElement.setAttribute("height",this.renderConfig.height),this.renderConfig.className&&this.svgElement.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.svgElement.setAttribute("id",this.renderConfig.id),this.renderConfig.focusable!==void 0&&this.svgElement.setAttribute("focusable",this.renderConfig.focusable),this.svgElement.setAttribute("preserveAspectRatio",this.renderConfig.preserveAspectRatio),this.animationItem.wrapper.appendChild(this.svgElement);var u=this.globalData.defs;this.setupGlobalData(o,u),this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.data=o;var T=createNS("clipPath"),S=createNS("rect");S.setAttribute("width",o.w),S.setAttribute("height",o.h),S.setAttribute("x",0),S.setAttribute("y",0);var E=createElementID();T.setAttribute("id",E),T.appendChild(S),this.layerElement.setAttribute("clip-path","url("+getLocationHref()+"#"+E+")"),u.appendChild(T),this.layers=o.layers,this.elements=createSizedArray(o.layers.length)},SVGRendererBase.prototype.destroy=function(){this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=""),this.layerElement=null,this.globalData.defs=null;var o,u=this.layers?this.layers.length:0;for(o=0;o<u;o+=1)this.elements[o]&&this.elements[o].destroy&&this.elements[o].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},SVGRendererBase.prototype.updateContainerSize=function(){},SVGRendererBase.prototype.findIndexByInd=function(o){var u=0,T=this.layers.length;for(u=0;u<T;u+=1)if(this.layers[u].ind===o)return u;return-1},SVGRendererBase.prototype.buildItem=function(o){var u=this.elements;if(!(u[o]||this.layers[o].ty===99)){u[o]=!0;var T=this.createItem(this.layers[o]);if(u[o]=T,getExpressionsPlugin()&&(this.layers[o].ty===0&&this.globalData.projectInterface.registerComposition(T),T.initExpressions()),this.appendElementInPos(T,o),this.layers[o].tt){var S="tp"in this.layers[o]?this.findIndexByInd(this.layers[o].tp):o-1;if(S===-1)return;if(!this.elements[S]||this.elements[S]===!0)this.buildItem(S),this.addPendingElement(T);else{var E=u[S],C=E.getMatte(this.layers[o].tt);T.setMatte(C)}}}},SVGRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var o=this.pendingElements.pop();if(o.checkParenting(),o.data.tt)for(var u=0,T=this.elements.length;u<T;){if(this.elements[u]===o){var S="tp"in o.data?this.findIndexByInd(o.data.tp):u-1,E=this.elements[S],C=E.getMatte(this.layers[u].tt);o.setMatte(C);break}u+=1}}},SVGRendererBase.prototype.renderFrame=function(o){if(!(this.renderedFrame===o||this.destroyed)){o===null?o=this.renderedFrame:this.renderedFrame=o,this.globalData.frameNum=o,this.globalData.frameId+=1,this.globalData.projectInterface.currentFrame=o,this.globalData._mdf=!1;var u,T=this.layers.length;for(this.completeLayers||this.checkLayers(o),u=T-1;u>=0;u-=1)(this.completeLayers||this.elements[u])&&this.elements[u].prepareFrame(o-this.layers[u].st);if(this.globalData._mdf)for(u=0;u<T;u+=1)(this.completeLayers||this.elements[u])&&this.elements[u].renderFrame()}},SVGRendererBase.prototype.appendElementInPos=function(o,u){var T=o.getBaseElement();if(T){for(var S=0,E;S<u;)this.elements[S]&&this.elements[S]!==!0&&this.elements[S].getBaseElement()&&(E=this.elements[S].getBaseElement()),S+=1;E?this.layerElement.insertBefore(T,E):this.layerElement.appendChild(T)}},SVGRendererBase.prototype.hide=function(){this.layerElement.style.display="none"},SVGRendererBase.prototype.show=function(){this.layerElement.style.display="block"};function ICompElement(){}extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement,RenderableDOMElement],ICompElement),ICompElement.prototype.initElement=function(o,u,T){this.initFrame(),this.initBaseData(o,u,T),this.initTransform(o,u,T),this.initRenderable(),this.initHierarchy(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),(this.data.xt||!u.progressiveLoad)&&this.buildAllItems(),this.hide()}
vendor: 4,669 bytes, line 322
322,ICompElement.prototype.prepareFrame=function(o){if(this._mdf=!1,this.prepareRenderableFrame(o),this.prepareProperties(o,this.isInRange),!(!this.isInRange&&!this.data.xt)){if(this.tm._placeholder)this.renderedFrame=o/this.data.sr;else{var u=this.tm.v;u===this.data.op&&(u=this.data.op-1),this.renderedFrame=u}var T,S=this.elements.length;for(this.completeLayers||this.checkLayers(this.renderedFrame),T=S-1;T>=0;T-=1)(this.completeLayers||this.elements[T])&&(this.elements[T].prepareFrame(this.renderedFrame-this.layers[T].st),this.elements[T]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var o,u=this.layers.length;for(o=0;o<u;o+=1)(this.completeLayers||this.elements[o])&&this.elements[o].renderFrame()},ICompElement.prototype.setElements=function(o){this.elements=o},ICompElement.prototype.getElements=function(){return this.elements},ICompElement.prototype.destroyElements=function(){var o,u=this.layers.length;for(o=0;o<u;o+=1)this.elements[o]&&this.elements[o].destroy()},ICompElement.prototype.destroy=function(){this.destroyElements(),this.destroyBaseElement()};function SVGCompElement(o,u,T){this.layers=o.layers,this.supports3d=!0,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(o,u,T),this.tm=o.tm?PropertyFactory.getProp(this,o.tm,0,u.frameRate,this):{_placeholder:!0}}extendPrototype([SVGRendererBase,ICompElement,SVGBaseElement],SVGCompElement),SVGCompElement.prototype.createComp=function(o){return new SVGCompElement(o,this.globalData,this)};function SVGRenderer(o,u){this.animationItem=o,this.layers=null,this.renderedFrame=-1,this.svgElement=createNS("svg");var T="";if(u&&u.title){var S=createNS("title"),E=createElementID();S.setAttribute("id",E),S.textContent=u.title,this.svgElement.appendChild(S),T+=E}if(u&&u.description){var C=createNS("desc"),_=createElementID();C.setAttribute("id",_),C.textContent=u.description,this.svgElement.appendChild(C),T+=" "+_}T&&this.svgElement.setAttribute("aria-labelledby",T);var P=createNS("defs");this.svgElement.appendChild(P);var R=createNS("g");this.svgElement.appendChild(R),this.layerElement=R,this.renderConfig={preserveAspectRatio:u&&u.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:u&&u.imagePreserveAspectRatio||"xMidYMid slice",contentVisibility:u&&u.contentVisibility||"visible",progressiveLoad:u&&u.progressiveLoad||!1,hideOnTransparent:!(u&&u.hideOnTransparent===!1),viewBoxOnly:u&&u.viewBoxOnly||!1,viewBoxSize:u&&u.viewBoxSize||!1,className:u&&u.className||"",id:u&&u.id||"",focusable:u&&u.focusable,filterSize:{width:u&&u.filterSize&&u.filterSize.width||"100%",height:u&&u.filterSize&&u.filterSize.height||"100%",x:u&&u.filterSize&&u.filterSize.x||"0%",y:u&&u.filterSize&&u.filterSize.y||"0%"},width:u&&u.width,height:u&&u.height,runExpressions:!u||u.runExpressions===void 0||u.runExpressions},this.globalData={_mdf:!1,frameNum:-1,defs:P,renderConfig:this.renderConfig},this.elements=[],this.pendingElements=[],this.destroyed=!1,this.rendererType="svg"}extendPrototype([SVGRendererBase],SVGRenderer),SVGRenderer.prototype.createComp=function(o){return new SVGCompElement(o,this.globalData,this)};function ShapeTransformManager(){this.sequences={},this.sequenceList=[],this.transform_key_count=0}ShapeTransformManager.prototype={addTransformSequence:function(u){var T,S=u.length,E="_";for(T=0;T<S;T+=1)E+=u[T].transform.key+"_";var C=this.sequences[E];return C||(C={transforms:[].concat(u),finalTransform:new Matrix,_mdf:!1},this.sequences[E]=C,this.sequenceList.push(C)),C},processSequence:function(u,T){for(var S=0,E=u.transforms.length,C=T;S<E&&!T;){if(u.transforms[S].transform.mProps._mdf){C=!0;break}S+=1}if(C)for(u.finalTransform.reset(),S=E-1;S>=0;S-=1)u.finalTransform.multiply(u.transforms[S].transform.mProps.v);u._mdf=C},processSequences:function(u){var T,S=this.sequenceList.length;for(T=0;T<S;T+=1)this.processSequence(this.sequenceList[T],u)},getNewKey:function(){return this.transform_key_count+=1,"_"+this.transform_key_count}};var lumaLoader=function(){var u="__lottie_element_luma_buffer",T=null,S=null,E=null;function C(){var R=createNS("svg"),I=createNS("filter"),L=createNS("feColorMatrix");return I.setAttribute("id",u),L.setAttribute("type","matrix"),L.setAttribute("color-interpolation-filters","sRGB"),L.setAttribute("values","0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0"),I.appendChild(L),R.appendChild(I),R.setAttribute("id",u+"_svg"),featureSupport.svgLumaHidden&&(R.style.display="none"),R}function _(){T||(E=C(),document.body.appendChild(E),T=createTag("canvas"),S=T.getContext("2d"),S.filter="url
322(#"+u+")",S.fillStyle="rgba(0,0,0,0)",S.fillRect(0,0,1,1))}function P(R){return T||_(),T.width=R.width,T.height=R.height,S.filter="url(#"+u+")",T}return{load:_,get:P}};function createCanvas(o,u){if(featureSupport.offscreenCanvas)return new OffscreenCanvas(o,u);var T=createTag("canvas");return T.width=o,T.height=u,T}var assetLoader=function(){return{loadLumaCanvas:lumaLoader.load,getLumaCanvas:lumaLoader.get,createCanvas}}(),registeredEffects={};function CVEffects(o){var u,T=o.data.ef?o.data.ef.length:0;this.filters=[];var S;for(u=0;u<T;u+=1){S=null;var E=o.data.ef[u].ty;if(registeredEffects[E]){var C=registeredEffects[E].effect;S=new C(o.effectsManager.effectElements[u],o)}S&&this.filters.push(S)}this.filters.length&&o.addRenderableComponent(this)}CVEffects.prototype.renderFrame=function(o){var u,T=this.filters.length;for(u=0;u<T;u+=1)this.filters[u].renderFrame(o)},CVEffects.prototype.getEffects=function(o){var u,T=this.filters.length,S=[];for(u=0;u<T;u+=1)this.filters[u].type===o&&S.push(this.filters[u]);return S};function registerEffect(o,u){registeredEffects[o]={effect:u}}function CVMaskElement(o,u){this.data=o,this.element=u,this.masksProperties=this.data.masksProperties||[],this.viewData=createSizedArray(this.masksProperties.length);var T,S=this.masksProperties.length,E=!1;for(T=0;T<S;T+=1)this.masksProperties[T].mode!=="n"&&(E=!0),this.viewData[T]=ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[T],3);this.hasMasks=E,E&&this.element.addRenderableComponent(this)}CVMaskElement.prototype.renderFrame=function(){if(this.hasMasks){var o=this.element.finalTransform.mat,u=this.element.canvasContext,T,S=this.masksProperties.length,E,C,_;for(u.beginPath(),T=0;T<S;T+=1)if(this.masksProperties[T].mode!=="n"){this.masksProperties[T].inv&&(u.moveTo(0,0),u.lineTo(this.element.globalData.compSize.w,0),u.lineTo(this.element.globalData.compSize.w,this.element.globalData.compSize.h),u.lineTo(0,this.element.globalData.compSize.h),u.lineTo(0,0)),_=this.viewData[T].v,E=o.applyToPointArray(_.v[0][0],_.v[0][1],0),u.moveTo(E[0],E[1]);var P,R=_._length;for(P=1;P<R;P+=1)C=o.applyToTriplePoints(_.o[P-1],_.i[P],_.v[P]),u.bezierCurveTo(C[0],C[1],C[2],C[3],C[4],C[5]);C=o.applyToTriplePoints(_.o[P-1],_.i[0],_.v[0]),u.bezierCurveTo(C[0],C[1],C[2],C[3],C[4],C[5])}this.element.globalData.renderer.save(!0),u.clip()}},CVMaskElement.prototype.getMaskProperty=MaskElement.prototype.getMaskProperty,CVMaskElement.prototype.destroy=function(){this.element=null};function CVBaseElement(){}var operationsMap={1:"source-in",2:"source-out",3:"source-in",4:"source-out"};CVBaseElement.prototype={createElements:function(){},initRendererElement:function(){},createContainerElements:function(){if(this.data.tt>=1){this.buffers=[];var u=this.globalData.canvasContext,T=assetLoader.createCanvas(u.canvas.width,u.canvas.height);this.buffers.push(T);var S=assetLoader.createCanvas(u.canvas.width,u.canvas.height);this.buffers.push(S),this.data.tt>=3&&!document._isProxy&&assetLoader.loadLumaCanvas()}this.canvasContext=this.globalData.canvasContext,this.transformCanvas=this.globalData.transformCanvas,this.renderableEffectsManager=new CVEffects(this),this.searchEffectTransforms()},createContent:function(){},setBlendMode:function(){var u=this.globalData;if(u.blendMode!==this.data.bm){u.blendMode=this.data.bm;var T=getBlendMode(this.data.bm);u.canvasContext.globalCompositeOperation=T}},createRenderableComponents:function(){this.maskManager=new CVMaskElement(this.data,this),this.transformEffects=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT)},hideElement:function(){!this.hidden&&(!this.isInRange||this.isTransparent)&&(this.hidden=!0)},showElement:function(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},clearCanvas:function(u){u.clearRect(this.transformCanvas.tx,this.transformCanvas.ty,this.transformCanvas.w*this.transformCanvas.sx,this.transformCanvas.h*this.transformCanvas.sy)},prepareLayer:function(){if(this.data.tt>=1){var u=this.buffers[0],T=u.getContext("2d");this.clearCanvas(T),T.drawImage(this.canvasContext.canvas,0,0),this.currentTransform=this.canvasContext.getTransform(),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform)}},exitLayer:function(){if(this.data.tt>=1){var u=this.buffers[1],T=u.getContext("2d");this.clearCanvas(T),T.drawImage(this.canvasContext.canvas,0,0),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform);var S=this.comp.getElementById("tp"in this.data?this.data.tp:this.data.ind-1);if(S.renderFrame(!0),this.canvasContext.setTransform(1,0,0,1,0,0),this.data.tt>=3&&!document._isProxy){var E=assetLoader.getLumaCanvas(this.canvasContext.canvas),C=E.getContext("2d");C.drawImage(this.canvasContext.canvas,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.drawImage(E,0,0)}this.canvasContext.globalCompositeOperation=operationsMap[this.data.tt],this.canvasContext.drawImage(u,0,0),this.canvasContext.globalCompositeOperation="destination-over",this.canvasContext.drawImage(this.buffers[0],0,0),this.canvasContext.setTransform(this.currentTransform),this.canvasContext.globalCompositeOperation="source-over"}},renderFrame:function(u){if(!(this.hidden||this.data.hd)&&!(this.data.td===1&&!u)){this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.setBlendMode();var T=this.data.ty===0;this.prepareLayer(),this.globalData.renderer.save(T),this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity),this.renderInnerContent(),this.globalData.renderer.restore(T),this.exitLayer(),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement;function CVShapeData(o,u,T,S){this.styledShapes=[],this.tr=[0,0,0,0,0,0];var E=4;u.ty==="rc"?E=5:u.ty==="el"?E=6:u.ty==="sr"&&(E=7),this.sh=ShapePropertyFactory.getShapeProp(o,u,E,o);var C,_=T.length,P;for(C=0;C<_;C+=1)T[C].closed||(P={transforms:S.addTransformSequence(T[C].transforms),trNodes:[]},this.styledShapes.push(P),T[C].elements.push(P))}CVShapeData.prototype.setAsAnimated=SVGShapeData.prototype.setAsAnimated;function CVShapeElement(o,u,T){this.shapes=[],this.shapesData=o.shapes,this.stylesList=[],this.itemsData=[],this.prevViewData=[],this.shapeModifiers=[],this.processedElements=[],this.transformsManager=new ShapeTransformManager,this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement],CVShapeElement),CVShapeElement.prototype.initElement=RenderableDOMElement.prototype.initElement,CVShapeElement.prototype.transformHelper={opacity:1,_opMdf:!1},CVShapeElement.prototype.dashResetter=[],CVShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[])},CVShapeElement.prototype.createStyleElement=function(o,u){var T={data:o,type:o.ty,preTransforms:this.transformsManager.addTransformSequence(u),transforms:[],elements:[],closed:o.hd===!0},S={};if(o.ty==="fl"||o.ty==="st"?(S.c=PropertyFactory.getProp(this,o.c,1,255,this),S.c.k||(T.co="rgb("+bmFloor(S.c.v[0])+","+bmFloor(S.c.v[1])+","+bmFloor(S.c.v[2])+")")):(o.ty==="gf"||o.ty==="gs")&&(S.s=PropertyFactory.getProp(this,o.s,1,null,this),S.e=PropertyFactory.getProp(this,o.e,1,null,this),S.h=PropertyFactory.getProp(this,o.h||{k:0},0,.01,this),S.a=PropertyFactory.getProp(this,o.a||{k:0},0,degToRads,this),S.g=new GradientProperty(this,o.g,this)),S.o=PropertyFactory.getProp(this,o.o,0,.01,this),o.ty==="st"||o.ty==="gs"){if(T.lc=lineCapEnum[o.lc||2],T.lj=l
vendor: 112,243 bytes, line 322
322ineJoinEnum[o.lj||2],o.lj==1&&(T.ml=o.ml),S.w=PropertyFactory.getProp(this,o.w,0,null,this),S.w.k||(T.wi=S.w.v),o.d){var E=new DashProperty(this,o.d,"canvas",this);S.d=E,S.d.k||(T.da=S.d.dashArray,T.do=S.d.dashoffset[0])}}else T.r=o.r===2?"evenodd":"nonzero";return this.stylesList.push(T),S.style=T,S},CVShapeElement.prototype.createGroupElement=function(){var o={it:[],prevViewData:[]};return o},CVShapeElement.prototype.createTransformElement=function(o){var u={transform:{opacity:1,_opMdf:!1,key:this.transformsManager.getNewKey(),op:PropertyFactory.getProp(this,o.o,0,.01,this),mProps:TransformPropertyFactory.getTransformProperty(this,o,this)}};return u},CVShapeElement.prototype.createShapeElement=function(o){var u=new CVShapeData(this,o,this.stylesList,this.transformsManager);return this.shapes.push(u),this.addShapeToModifiers(u),u},CVShapeElement.prototype.reloadShapes=function(){this._isFirstFrame=!0;var o,u=this.itemsData.length;for(o=0;o<u;o+=1)this.prevViewData[o]=this.itemsData[o];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[]),u=this.dynamicProperties.length,o=0;o<u;o+=1)this.dynamicProperties[o].getValue();this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame)},CVShapeElement.prototype.addTransformToStyleList=function(o){var u,T=this.stylesList.length;for(u=0;u<T;u+=1)this.stylesList[u].closed||this.stylesList[u].transforms.push(o)},CVShapeElement.prototype.removeTransformFromStyleList=function(){var o,u=this.stylesList.length;for(o=0;o<u;o+=1)this.stylesList[o].closed||this.stylesList[o].transforms.pop()},CVShapeElement.prototype.closeStyles=function(o){var u,T=o.length;for(u=0;u<T;u+=1)o[u].closed=!0},CVShapeElement.prototype.searchShapes=function(o,u,T,S,E){var C,_=o.length-1,P,R,I=[],L=[],j,M,D,F=[].concat(E);for(C=_;C>=0;C-=1){if(j=this.searchProcessedElement(o[C]),j?u[C]=T[j-1]:o[C]._shouldRender=S,o[C].ty==="fl"||o[C].ty==="st"||o[C].ty==="gf"||o[C].ty==="gs")j?u[C].style.closed=!1:u[C]=this.createStyleElement(o[C],F),I.push(u[C].style);else if(o[C].ty==="gr"){if(!j)u[C]=this.createGroupElement(o[C]);else for(R=u[C].it.length,P=0;P<R;P+=1)u[C].prevViewData[P]=u[C].it[P];this.searchShapes(o[C].it,u[C].it,u[C].prevViewData,S,F)}else o[C].ty==="tr"?(j||(D=this.createTransformElement(o[C]),u[C]=D),F.push(u[C]),this.addTransformToStyleList(u[C])):o[C].ty==="sh"||o[C].ty==="rc"||o[C].ty==="el"||o[C].ty==="sr"?j||(u[C]=this.createShapeElement(o[C])):o[C].ty==="tm"||o[C].ty==="rd"||o[C].ty==="pb"||o[C].ty==="zz"||o[C].ty==="op"?(j?(M=u[C],M.closed=!1):(M=ShapeModifiers.getModifier(o[C].ty),M.init(this,o[C]),u[C]=M,this.shapeModifiers.push(M)),L.push(M)):o[C].ty==="rp"&&(j?(M=u[C],M.closed=!0):(M=ShapeModifiers.getModifier(o[C].ty),u[C]=M,M.init(this,o,C,u),this.shapeModifiers.push(M),S=!1),L.push(M));this.addProcessedElement(o[C],C+1)}for(this.removeTransformFromStyleList(),this.closeStyles(I),_=L.length,C=0;C<_;C+=1)L[C].closed=!0},CVShapeElement.prototype.renderInnerContent=function(){this.transformHelper.opacity=1,this.transformHelper._opMdf=!1,this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame),this.renderShape(this.transformHelper,this.shapesData,this.itemsData,!0)},CVShapeElement.prototype.renderShapeTransform=function(o,u){(o._opMdf||u.op._mdf||this._isFirstFrame)&&(u.opacity=o.opacity,u.opacity*=u.op.v,u._opMdf=!0)},CVShapeElement.prototype.drawLayer=function(){var o,u=this.stylesList.length,T,S,E,C,_,P,R=this.globalData.renderer,I=this.globalData.canvasContext,L,j;for(o=0;o<u;o+=1)if(j=this.stylesList[o],L=j.type,!((L==="st"||L==="gs")&&j.wi===0||!j.data._shouldRender||j.coOp===0||this.globalData.currentGlobalAlpha===0)){for(R.save(),_=j.elements,L==="st"||L==="gs"?(R.ctxStrokeStyle(L==="st"?j.co:j.grd),R.ctxLineWidth(j.wi),R.ctxLineCap(j.lc),R.ctxLineJoin(j.lj),R.ctxMiterLimit(j.ml||0)):R.ctxFillStyle(L==="fl"?j.co:j.grd),R.ctxOpacity(j.coOp),L!=="st"&&L!=="gs"&&I.beginPath(),R.ctxTransform(j.preTransforms.finalTransform.props),S=_.length,T=0;T<S;T+=1){for((L==="st"||L==="gs")&&(I.beginPath(),j.da&&(I.setLineDash(j.da),I.lineDashOffset=j.do)),P=_[T].trNodes,C=P.length,E=0;E<C;E+=1)P[E].t==="m"?I.moveTo(P[E].p[0],P[E].p[1]):P[E].t==="c"?I.bezierCurveTo(P[E].pts[0],P[E].pts[1],P[E].pts[2],P[E].pts[3],P[E].pts[4],P[E].pts[5]):I.closePath();(L==="st"||L==="gs")&&(R.ctxStroke(),j.da&&I.setLineDash(this.dashResetter))}L!=="st"&&L!=="gs"&&this.globalData.renderer.ctxFill(j.r),R.restore()}},CVShapeElement.prototype.renderShape=function(o,u,T,S){var E,C=u.length-1,_;for(_=o,E=C;E>=0;E-=1)u[E].ty==="tr"?(_=T[E].transform,this.renderShapeTransform(o,_)):u[E].ty==="sh"||u[E].ty==="el"||u[E].ty==="rc"||u[E].ty==="sr"?this.renderPath(u[E],T[E]):u[E].ty==="fl"?this.renderFill(u[E],T[E],_):u[E].ty==="st"?this.renderStroke(u[E],T[E],_):u[E].ty==="gf"||u[E].ty==="gs"?this.renderGradientFill(u[E],T[E],_):u[E].ty==="gr"?this.renderShape(_,u[E].it,T[E].it):u[E].ty;S&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(o,u){if(this._isFirstFrame||u._mdf||o.transforms._mdf){var T=o.trNodes,S=u.paths,E,C,_,P=S._length;T.length=0;var R=o.transforms.finalTransform;for(_=0;_<P;_+=1){var I=S.shapes[_];if(I&&I.v){for(C=I._length,E=1;E<C;E+=1)E===1&&T.push({t:"m",p:R.applyToPointArray(I.v[0][0],I.v[0][1],0)}),T.push({t:"c",pts:R.applyToTriplePoints(I.o[E-1],I.i[E],I.v[E])});C===1&&T.push({t:"m",p:R.applyToPointArray(I.v[0][0],I.v[0][1],0)}),I.c&&C&&(T.push({t:"c",pts:R.applyToTriplePoints(I.o[E-1],I.i[0],I.v[0])}),T.push({t:"z"}))}}o.trNodes=T}},CVShapeElement.prototype.renderPath=function(o,u){if(o.hd!==!0&&o._shouldRender){var T,S=u.styledShapes.length;for(T=0;T<S;T+=1)this.renderStyledShape(u.styledShapes[T],u.sh)}},CVShapeElement.prototype.renderFill=function(o,u,T){var S=u.style;(u.c._mdf||this._isFirstFrame)&&(S.co="rgb("+bmFloor(u.c.v[0])+","+bmFloor(u.c.v[1])+","+bmFloor(u.c.v[2])+")"),(u.o._mdf||T._opMdf||this._isFirstFrame)&&(S.coOp=u.o.v*T.opacity)},CVShapeElement.prototype.renderGradientFill=function(o,u,T){var S=u.style,E;if(!S.grd||u.g._mdf||u.s._mdf||u.e._mdf||o.t!==1&&(u.h._mdf||u.a._mdf)){var C=this.globalData.canvasContext,_=u.s.v,P=u.e.v;if(o.t===1)E=C.createLinearGradient(_[0],_[1],P[0],P[1]);else{var R=Math.sqrt(Math.pow(_[0]-P[0],2)+Math.pow(_[1]-P[1],2)),I=Math.atan2(P[1]-_[1],P[0]-_[0]),L=u.h.v;L>=1?L=.99:L<=-1&&(L=-.99);var j=R*L,M=Math.cos(I+u.a.v)*j+_[0],D=Math.sin(I+u.a.v)*j+_[1];E=C.createRadialGradient(M,D,0,_[0],_[1],R)}var F,N=o.g.p,G=u.g.c,B=1;for(F=0;F<N;F+=1)u.g._hasOpacity&&u.g._collapsable&&(B=u.g.o[F*2+1]),E.addColorStop(G[F*4]/100,"rgba("+G[F*4+1]+","+G[F*4+2]+","+G[F*4+3]+","+B+")");S.grd=E}S.coOp=u.o.v*T.opacity},CVShapeElement.prototype.renderStroke=function(o,u,T){var S=u.style,E=u.d;E&&(E._mdf||this._isFirstFrame)&&(S.da=E.dashArray,S.do=E.dashoffset[0]),(u.c._mdf||this._isFirstFrame)&&(S.co="rgb("+bmFloor(u.c.v[0])+","+bmFloor(u.c.v[1])+","+bmFloor(u.c.v[2])+")"),(u.o._mdf||T._opMdf||this._isFirstFrame)&&(S.coOp=u.o.v*T.opacity),(u.w._mdf||this._isFirstFrame)&&(S.wi=u.w.v)},CVShapeElement.prototype.destroy=function(){this.shapesData=null,this.globalData=null,this.canvasContext=null,this.stylesList.length=0,this.itemsData.length=0};function CVTextElement(o,u,T){this.textSpans=[],this.yOffset=0,this.fillColorAnim=!1,this.strokeColorAnim=!1,this.strokeWidthAnim=!1,this.stroke=!1,this.fill=!1,this.justifyOffset=0,this.currentRender=null,this.renderType="canvas",this.values={fill:"rgba(0,0,0,0)",stroke:"rgba(0,0,0,0)",sWidth:0,fValue:""},this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement],CVTextElement),CVTextElement.prototype.tHelper=createTag("canvas").getContext("2d"),CVTextElement.prototype.buildNewText=function(){var o=this.textProperty.currentData;this.renderedLetters=createSizedArray(o.l?o.l.length:0);var u=!1;o.fc?(u=!0,this.values.fill=this.buildColor(o.fc)):this.values.fill="rgba(0,0,0,0)",this.fill=u;var T=!1;o.sc&&(T=!0,this.values.stroke=this.buildColor(o.sc),this.values.sWidth=o.sw);var S=this.globalData.fontManager.getFontByName(o.f),E,C,_=o.l,P=this.mHelper;this.stroke=T,this.values.fValue=o.finalSize+"px "+this.globalData.fontManager.getFontByName(o.f).fFamily,C=o.finalText.length;var R,I,L,j,M,D,F,N,G,B,H=this.data.singleShape,O=o.tr*.001*o.finalSize,V=0,U=0,W=!0,K=0;for(E=0;E<C;E+=1){R=this.globalData.fontManager.getCharData(o.finalText[E],S.fStyle,this.globalData.fontManager.getFontByName(o.f).fFamily),I=R&&R.data||{},P.reset(),H&&_[E].n&&(V=-O,U+=o.yOffset,U+=W?1:0,W=!1),M=I.shapes?I.shapes[0].it:[],F=M.length,P.scale(o.finalSize/100,o.finalSize/100),H&&this.applyTextPropertiesToMatrix(o,P,_[E].line,V,U),G=createSizedArray(F-1);var Y=0;for(D=0;D<F;D+=1)if(M[D].ty==="sh"){for(j=M[D].ks.k.i.length,N=M[D].ks.k,B=[],L=1;L<j;L+=1)L===1&&B.push(P.applyToX(N.v[0][0],N.v[0][1],0),P.applyToY(N.v[0][0],N.v[0][1],0)),B.push(P.applyToX(N.o[L-1][0],N.o[L-1][1],0),P.applyToY(N.o[L-1][0],N.o[L-1][1],0),P.applyToX(N.i[L][0],N.i[L][1],0),P.applyToY(N.i[L][0],N.i[L][1],0),P.applyToX(N.v[L][0],N.v[L][1],0),P.applyToY(N.v[L][0],N.v[L][1],0));B.push(P.applyToX(N.o[L-1][0],N.o[L-1][1],0),P.applyToY(N.o[L-1][0],N.o[L-1][1],0),P.applyToX(N.i[0][0],N.i[0][1],0),P.applyToY(N.i[0][0],N.i[0][1],0),P.applyToX(N.v[0][0],N.v[0][1],0),P.applyToY(N.v[0][0],N.v[0][1],0)),G[Y]=B,Y+=1}H&&(V+=_[E].l,V+=O),this.textSpans[K]?this.textSpans[K].elem=G:this.textSpans[K]={elem:G},K+=1}},CVTextElement.prototype.renderInnerContent=function(){this.validateText();var o=this.canvasContext;o.font=this.values.fValue,this.globalData.renderer.ctxLineCap("butt"),this.globalData.renderer.ctxLineJoin("miter"),this.globalData.renderer.ctxMiterLimit(4),this.data.singleShape||this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag);var u,T,S,E,C,_,P=this.textAnimator.renderedLetters,R=this.textProperty.currentData.l;T=R.length;var I,L=null,j=null,M=null,D,F,N=this.globalData.renderer;for(u=0;u<T;u+=1)if(!R[u].n){if(I=P[u],I&&(N.save(),N.ctxTransform(I.p),N.ctxOpacity(I.o)),this.fill){for(I&&I.fc?L!==I.fc&&(N.ctxFillStyle(I.fc),L=I.fc):L!==this.values.fill&&(L=this.values.fill,N.ctxFillStyle(this.values.fill)),D=this.textSpans[u].elem,E=D.length,this.globalData.canvasContext.beginPath(),S=0;S<E;S+=1)for(F=D[S],_=F.length,this.globalData.canvasContext.moveTo(F[0],F[1]),C=2;C<_;C+=6)this.globalData.canvasContext.bezierCurveTo(F[C],F[C+1],F[C+2],F[C+3],F[C+4],F[C+5]);this.globalData.canvasContext.closePath(),N.ctxFill()}if(this.stroke){for(I&&I.sw?M!==I.sw&&(M=I.sw,N.ctxLineWidth(I.sw)):M!==this.values.sWidth&&(M=this.values.sWidth,N.ctxLineWidth(this.values.sWidth)),I&&I.sc?j!==I.sc&&(j=I.sc,N.ctxStrokeStyle(I.sc)):j!==this.values.stroke&&(j=this.values.stroke,N.ctxStrokeStyle(this.values.stroke)),D=this.textSpans[u].elem,E=D.length,this.globalData.canvasContext.beginPath(),S=0;S<E;S+=1)for(F=D[S],_=F.length,this.globalData.canvasContext.moveTo(F[0],F[1]),C=2;C<_;C+=6)this.globalData.canvasContext.bezierCurveTo(F[C],F[C+1],F[C+2],F[C+3],F[C+4],F[C+5]);this.globalData.canvasContext.closePath(),N.ctxStroke()}I&&this.globalData.renderer.restore()}};function CVImageElement(o,u,T){this.assetData=u.getAssetData(o.refId),this.img=u.imageLoader.getAsset(this.assetData),this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVImageElement),CVImageElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVImageElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVImageElement.prototype.createContent=function(){if(this.img.width&&(this.assetData.w!==this.img.width||this.assetData.h!==this.img.height)){var o=createTag("canvas");o.width=this.assetData.w,o.height=this.assetData.h;var u=o.getContext("2d"),T=this.img.width,S=this.img.height,E=T/S,C=this.assetData.w/this.assetData.h,_,P,R=this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio;E>C&&R==="xMidYMid slice"||E<C&&R!=="xMidYMid slice"?(P=S,_=P*C):(_=T,P=_/C),u.drawImage(this.img,(T-_)/2,(S-P)/2,_,P,0,0,this.assetData.w,this.assetData.h),this.img=o}},CVImageElement.prototype.renderInnerContent=function(){this.canvasContext.drawImage(this.img,0,0)},CVImageElement.prototype.destroy=function(){this.img=null};function CVSolidElement(o,u,T){this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVSolidElement),CVSolidElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVSolidElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVSolidElement.prototype.renderInnerContent=function(){this.globalData.renderer.ctxFillStyle(this.data.sc),this.globalData.renderer.ctxFillRect(0,0,this.data.sw,this.data.sh)};function CanvasRendererBase(){}extendPrototype([BaseRenderer],CanvasRendererBase),CanvasRendererBase.prototype.createShape=function(o){return new CVShapeElement(o,this.globalData,this)},CanvasRendererBase.prototype.createText=function(o){return new CVTextElement(o,this.globalData,this)},CanvasRendererBase.prototype.createImage=function(o){return new CVImageElement(o,this.globalData,this)},CanvasRendererBase.prototype.createSolid=function(o){return new CVSolidElement(o,this.globalData,this)},CanvasRendererBase.prototype.createNull=SVGRenderer.prototype.createNull,CanvasRendererBase.prototype.ctxTransform=function(o){o[0]===1&&o[1]===0&&o[4]===0&&o[5]===1&&o[12]===0&&o[13]===0||this.canvasContext.transform(o[0],o[1],o[4],o[5],o[12],o[13])},CanvasRendererBase.prototype.ctxOpacity=function(o){this.canvasContext.globalAlpha*=o<0?0:o},CanvasRendererBase.prototype.ctxFillStyle=function(o){this.canvasContext.fillStyle=o},CanvasRendererBase.prototype.ctxStrokeStyle=function(o){this.canvasContext.strokeStyle=o},CanvasRendererBase.prototype.ctxLineWidth=function(o){this.canvasContext.lineWidth=o},CanvasRendererBase.prototype.ctxLineCap=function(o){this.canvasContext.lineCap=o},CanvasRendererBase.prototype.ctxLineJoin=function(o){this.canvasContext.lineJoin=o},CanvasRendererBase.prototype.ctxMiterLimit=function(o){this.canvasContext.miterLimit=o},CanvasRendererBase.prototype.ctxFill=function(o){this.canvasContext.fill(o)},CanvasRendererBase.prototype.ctxFillRect=function(o,u,T,S){this.canvasContext.fillRect(o,u,T,S)},CanvasRendererBase.prototype.ctxStroke=function(){this.canvasContext.stroke()},CanvasRendererBase.prototype.reset=function(){if(!this.renderConfig.clearCanvas){this.canvasContext.restore();return}this.contextData.reset()},CanvasRendererBase.prototype.save=function(){this.canvasContext.save()},CanvasRendererBase.prototype.restore=function(o){if(!this.renderConfig.clearCanvas){this.canvasContext.restore();return}o&&(this.globalData.blendMode="source-over"),this.contextData.restore(o)},CanvasRendererBase.prototype.configAnimation=function(o){if(this.animationItem.wrapper){this.animationItem.container=createTag("canvas");var u=this.animationItem.container.style;u.width="100%",u.height="100%";var T="0px 0px 0px";u.transformOrigin=T,u.mozTransformOrigin=T,u.webkitTransformOrigin=T,u["-webkit-transform"]=T,u.contentVisibility=this.renderConfig.contentVisibility,this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext("2d"),this.renderConfig.className&&this.animationItem.container.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.animationItem.container.setAttribute("id",this.renderConfig.id)}else this.canvasContext=this.renderConfig.context;this.contextData.setContext(this.canvasContext),this.data=o,this.layers=o.layers,this.transformCanvas={w:o.w,h:o.h,sx:0,sy:0,tx:0,ty:0},this.setupGlobalData(o,document.body),this.globalData.canvasContext=this.canvasContext,this.globalData.renderer=this,this.globalData.isDashed=!1,this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.globalData.transformCanvas=this.transformCanvas,this.elements=createSizedArray(o.layers.length),this.updateContainerSize()},CanvasRendererBase.prototype.updateContainerSize=function(o,u){this.reset();var T,S;o?(T=o,S=u,this.canvasContext.canvas.width=T,this.canvasContext.canvas.height=S):(this.animationItem.wrapper&&this.animationItem.container?(T=this.animationItem.wrapper.offsetWidth,S=this.animationItem.wrapper.offsetHeight):(T=this.canvasContext.canvas.width,S=this.canvasContext.canvas.height),this.canvasContext.canvas.width=T*this.renderConfig.dpr,this.canvasContext.canvas.height=S*this.renderConfig.dpr);var E,C;if(this.renderConfig.preserveAspectRatio.indexOf("meet")!==-1||this.renderConfig.preserveAspectRatio.indexOf("slice")!==-1){var _=this.renderConfig.preserveAspectRatio.split(" "),P=_[1]||"meet",R=_[0]||"xMidYMid",I=R.substr(0,4),L=R.substr(4);E=T/S,C=this.transformCanvas.w/this.transformCanvas.h,C>E&&P==="meet"||C<E&&P==="slice"?(this.transformCanvas.sx=T/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=T/(this.transformCanvas.w/this.renderConfig.dpr)):(this.transformCanvas.sx=S/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.sy=S/(this.transformCanvas.h/this.renderConfig.dpr)),I==="xMid"&&(C<E&&P==="meet"||C>E&&P==="slice")?this.transformCanvas.tx=(T-this.transformCanvas.w*(S/this.transformCanvas.h))/2*this.renderConfig.dpr:I==="xMax"&&(C<E&&P==="meet"||C>E&&P==="slice")?this.transformCanvas.tx=(T-this.transformCanvas.w*(S/this.transformCanvas.h))*this.renderConfig.dpr:this.transformCanvas.tx=0,L==="YMid"&&(C>E&&P==="meet"||C<E&&P==="slice")?this.transformCanvas.ty=(S-this.transformCanvas.h*(T/this.transformCanvas.w))/2*this.renderConfig.dpr:L==="YMax"&&(C>E&&P==="meet"||C<E&&P==="slice")?this.transformCanvas.ty=(S-this.transformCanvas.h*(T/this.transformCanvas.w))*this.renderConfig.dpr:this.transformCanvas.ty=0}else this.renderConfig.preserveAspectRatio==="none"?(this.transformCanvas.sx=T/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=S/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.tx=0,this.transformCanvas.ty=0):(this.transformCanvas.sx=this.renderConfig.dpr,this.transformCanvas.sy=this.renderConfig.dpr,this.transformCanvas.tx=0,this.transformCanvas.ty=0);this.transformCanvas.props=[this.transformCanvas.sx,0,0,0,0,this.transformCanvas.sy,0,0,0,0,1,0,this.transformCanvas.tx,this.transformCanvas.ty,0,1],this.ctxTransform(this.transformCanvas.props),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.closePath(),this.canvasContext.clip(),this.renderFrame(this.renderedFrame,!0)},CanvasRendererBase.prototype.destroy=function(){this.renderConfig.clearCanvas&&this.animationItem.wrapper&&(this.animationItem.wrapper.innerText="");var o,u=this.layers?this.layers.length:0;for(o=u-1;o>=0;o-=1)this.elements[o]&&this.elements[o].destroy&&this.elements[o].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRendererBase.prototype.renderFrame=function(o,u){if(!(this.renderedFrame===o&&this.renderConfig.clearCanvas===!0&&!u||this.destroyed||o===-1)){this.renderedFrame=o,this.globalData.frameNum=o-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||u,this.globalData.projectInterface.currentFrame=o;var T,S=this.layers.length;for(this.completeLayers||this.checkLayers(o),T=S-1;T>=0;T-=1)(this.completeLayers||this.elements[T])&&this.elements[T].prepareFrame(o-this.layers[T].st);if(this.globalData._mdf){for(this.renderConfig.clearCanvas===!0?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),T=S-1;T>=0;T-=1)(this.completeLayers||this.elements[T])&&this.elements[T].renderFrame();this.renderConfig.clearCanvas!==!0&&this.restore()}}},CanvasRendererBase.prototype.buildItem=function(o){var u=this.elements;if(!(u[o]||this.layers[o].ty===99)){var T=this.createItem(this.layers[o],this,this.globalData);u[o]=T,T.initExpressions()}},CanvasRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var o=this.pendingElements.pop();o.checkParenting()}},CanvasRendererBase.prototype.hide=function(){this.animationItem.container.style.display="none"},CanvasRendererBase.prototype.show=function(){this.animationItem.container.style.display="block"};function CanvasContext(){this.opacity=-1,this.transform=createTypedArray("float32",16),this.fillStyle="",this.strokeStyle="",this.lineWidth="",this.lineCap="",this.lineJoin="",this.miterLimit="",this.id=Math.random()}function CVContextData(){this.stack=[],this.cArrPos=0,this.cTr=new Matrix;var o,u=15;for(o=0;o<u;o+=1){var T=new CanvasContext;this.stack[o]=T}this._length=u,this.nativeContext=null,this.transformMat=new Matrix,this.currentOpacity=1,this.currentFillStyle="",this.appliedFillStyle="",this.currentStrokeStyle="",this.appliedStrokeStyle="",this.currentLineWidth="",this.appliedLineWidth="",this.currentLineCap="",this.appliedLineCap="",this.currentLineJoin="",this.appliedLineJoin="",this.appliedMiterLimit="",this.currentMiterLimit=""}CVContextData.prototype.duplicate=function(){var o=this._length*2,u=0;for(u=this._length;u<o;u+=1)this.stack[u]=new CanvasContext;this._length=o},CVContextData.prototype.reset=function(){this.cArrPos=0,this.cTr.reset(),this.stack[this.cArrPos].opacity=1},CVContextData.prototype.restore=function(o){this.cArrPos-=1;var u=this.stack[this.cArrPos],T=u.transform,S,E=this.cTr.props;for(S=0;S<16;S+=1)E[S]=T[S];if(o){this.nativeContext.restore();var C=this.stack[this.cArrPos+1];this.appliedFillStyle=C.fillStyle,this.appliedStrokeStyle=C.strokeStyle,this.appliedLineWidth=C.lineWidth,this.appliedLineCap=C.lineCap,this.appliedLineJoin=C.lineJoin,this.appliedMiterLimit=C.miterLimit}this.nativeContext.setTransform(T[0],T[1],T[4],T[5],T[12],T[13]),(o||u.opacity!==-1&&this.currentOpacity!==u.opacity)&&(this.nativeContext.globalAlpha=u.opacity,this.currentOpacity=u.opacity),this.currentFillStyle=u.fillStyle,this.currentStrokeStyle=u.strokeStyle,this.currentLineWidth=u.lineWidth,this.currentLineCap=u.lineCap,this.currentLineJoin=u.lineJoin,this.currentMiterLimit=u.miterLimit},CVContextData.prototype.save=function(o){o&&this.nativeContext.save();var u=this.cTr.props;this._length<=this.cArrPos&&this.duplicate();var T=this.stack[this.cArrPos],S;for(S=0;S<16;S+=1)T.transform[S]=u[S];this.cArrPos+=1;var E=this.stack[this.cArrPos];E.opacity=T.opacity,E.fillStyle=T.fillStyle,E.strokeStyle=T.strokeStyle,E.lineWidth=T.lineWidth,E.lineCap=T.lineCap,E.lineJoin=T.lineJoin,E.miterLimit=T.miterLimit},CVContextData.prototype.setOpacity=function(o){this.stack[this.cArrPos].opacity=o},CVContextData.prototype.setContext=function(o){this.nativeContext=o},CVContextData.prototype.fillStyle=function(o){this.stack[this.cArrPos].fillStyle!==o&&(this.currentFillStyle=o,this.stack[this.cArrPos].fillStyle=o)},CVContextData.prototype.strokeStyle=function(o){this.stack[this.cArrPos].strokeStyle!==o&&(this.currentStrokeStyle=o,this.stack[this.cArrPos].strokeStyle=o)},CVContextData.prototype.lineWidth=function(o){this.stack[this.cArrPos].lineWidth!==o&&(this.currentLineWidth=o,this.stack[this.cArrPos].lineWidth=o)},CVContextData.prototype.lineCap=function(o){this.stack[this.cArrPos].lineCap!==o&&(this.currentLineCap=o,this.stack[this.cArrPos].lineCap=o)},CVContextData.prototype.lineJoin=function(o){this.stack[this.cArrPos].lineJoin!==o&&(this.currentLineJoin=o,this.stack[this.cArrPos].lineJoin=o)},CVContextData.prototype.miterLimit=function(o){this.stack[this.cArrPos].miterLimit!==o&&(this.currentMiterLimit=o,this.stack[this.cArrPos].miterLimit=o)},CVContextData.prototype.transform=function(o){this.transformMat.cloneFromProps(o);var u=this.cTr;this.transformMat.multiply(u),u.cloneFromProps(this.transformMat.props);var T=u.props;this.nativeContext.setTransform(T[0],T[1],T[4],T[5],T[12],T[13])},CVContextData.prototype.opacity=function(o){var u=this.stack[this.cArrPos].opacity;u*=o<0?0:o,this.stack[this.cArrPos].opacity!==u&&(this.currentOpacity!==o&&(this.nativeContext.globalAlpha=o,this.currentOpacity=o),this.stack[this.cArrPos].opacity=u)},CVContextData.prototype.fill=function(o){this.appliedFillStyle!==this.currentFillStyle&&(this.appliedFillStyle=this.currentFillStyle,this.nativeContext.fillStyle=this.appliedFillStyle),this.nativeContext.fill(o)},CVContextData.prototype.fillRect=function(o,u,T,S){this.appliedFillStyle!==this.currentFillStyle&&(this.appliedFillStyle=this.currentFillStyle,this.nativeContext.fillStyle=this.appliedFillStyle),this.nativeContext.fillRect(o,u,T,S)},CVContextData.prototype.stroke=function(){this.appliedStrokeStyle!==this.currentStrokeStyle&&(this.appliedStrokeStyle=this.currentStrokeStyle,this.nativeContext.strokeStyle=this.appliedStrokeStyle),this.appliedLineWidth!==this.currentLineWidth&&(this.appliedLineWidth=this.currentLineWidth,this.nativeContext.lineWidth=this.appliedLineWidth),this.appliedLineCap!==this.currentLineCap&&(this.appliedLineCap=this.currentLineCap,this.nativeContext.lineCap=this.appliedLineCap),this.appliedLineJoin!==this.currentLineJoin&&(this.appliedLineJoin=this.currentLineJoin,this.nativeContext.lineJoin=this.appliedLineJoin),this.appliedMiterLimit!==this.currentMiterLimit&&(this.appliedMiterLimit=this.currentMiterLimit,this.nativeContext.miterLimit=this.appliedMiterLimit),this.nativeContext.stroke()};function CVCompElement(o,u,T){this.completeLayers=!1,this.layers=o.layers,this.pendingElements=[],this.elements=createSizedArray(this.layers.length),this.initElement(o,u,T),this.tm=o.tm?PropertyFactory.getProp(this,o.tm,0,u.frameRate,this):{_placeholder:!0}}extendPrototype([CanvasRendererBase,ICompElement,CVBaseElement],CVCompElement),CVCompElement.prototype.renderInnerContent=function(){var o=this.canvasContext;o.beginPath(),o.moveTo(0,0),o.lineTo(this.data.w,0),o.lineTo(this.data.w,this.data.h),o.lineTo(0,this.data.h),o.lineTo(0,0),o.clip();var u,T=this.layers.length;for(u=T-1;u>=0;u-=1)(this.completeLayers||this.elements[u])&&this.elements[u].renderFrame()},CVCompElement.prototype.destroy=function(){var o,u=this.layers.length;for(o=u-1;o>=0;o-=1)this.elements[o]&&this.elements[o].destroy();this.layers=null,this.elements=null},CVCompElement.prototype.createComp=function(o){return new CVCompElement(o,this.globalData,this)};function CanvasRenderer(o,u){this.animationItem=o,this.renderConfig={clearCanvas:u&&u.clearCanvas!==void 0?u.clearCanvas:!0,context:u&&u.context||null,progressiveLoad:u&&u.progressiveLoad||!1,preserveAspectRatio:u&&u.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:u&&u.imagePreserveAspectRatio||"xMidYMid slice",contentVisibility:u&&u.contentVisibility||"visible",className:u&&u.className||"",id:u&&u.id||"",runExpressions:!u||u.runExpressions===void 0||u.runExpressions},this.renderConfig.dpr=u&&u.dpr||1,this.animationItem.wrapper&&(this.renderConfig.dpr=u&&u.dpr||window.devicePixelRatio||1),this.renderedFrame=-1,this.globalData={frameNum:-1,_mdf:!1,renderConfig:this.renderConfig,currentGlobalAlpha:-1},this.contextData=new CVContextData,this.elements=[],this.pendingElements=[],this.transformMat=new Matrix,this.completeLayers=!1,this.rendererType="canvas",this.renderConfig.clearCanvas&&(this.ctxTransform=this.contextData.transform.bind(this.contextData),this.ctxOpacity=this.contextData.opacity.bind(this.contextData),this.ctxFillStyle=this.contextData.fillStyle.bind(this.contextData),this.ctxStrokeStyle=this.contextData.strokeStyle.bind(this.contextData),this.ctxLineWidth=this.contextData.lineWidth.bind(this.contextData),this.ctxLineCap=this.contextData.lineCap.bind(this.contextData),this.ctxLineJoin=this.contextData.lineJoin.bind(this.contextData),this.ctxMiterLimit=this.contextData.miterLimit.bind(this.contextData),this.ctxFill=this.contextData.fill.bind(this.contextData),this.ctxFillRect=this.contextData.fillRect.bind(this.contextData),this.ctxStroke=this.contextData.stroke.bind(this.contextData),this.save=this.contextData.save.bind(this.contextData))}extendPrototype([CanvasRendererBase],CanvasRenderer),CanvasRenderer.prototype.createComp=function(o){return new CVCompElement(o,this.globalData,this)};function HBaseElement(){}HBaseElement.prototype={checkBlendMode:function(){},initRendererElement:function(){this.baseElement=createTag(this.data.tg||"div"),this.data.hasMask?(this.svgElement=createNS("svg"),this.layerElement=createNS("g"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),this.data.bm!==0&&this.setBlendMode()},renderElement:function(){var u=this.transformedElement?this.transformedElement.style:{};if(this.finalTransform._matMdf){var T=this.finalTransform.mat.toCSS();u.transform=T,u.webkitTransform=T}this.finalTransform._opMdf&&(u.opacity=this.finalTransform.mProp.o.v)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function(){},setMatte:function(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=BaseRenderer.prototype.buildElementParenting;function HSolidElement(o,u,T){this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var o;this.data.hasMask?(o=createNS("rect"),o.setAttribute("width",this.data.sw),o.setAttribute("height",this.data.sh),o.setAttribute("fill",this.data.sc),this.svgElement.setAttribute("width",this.data.sw),this.svgElement.setAttribute("height",this.data.sh)):(o=createTag("div"),o.style.width=this.data.sw+"px",o.style.height=this.data.sh+"px",o.style.backgroundColor=this.data.sc),this.layerElement.appendChild(o)};function HShapeElement(o,u,T){this.shapes=[],this.shapesData=o.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.shapesContainer=createNS("g"),this.initElement(o,u,T),this.prevViewData=[],this.currentBBox={x:999999,y:-999999,h:0,w:0}}extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var o;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),o=this.svgElement;else{o=createNS("svg");var u=this.comp.data?this.comp.data:this.globalData.compSize;o.setAttribute("width",u.w),o.setAttribute("height",u.h),o.appendChild(this.shapesContainer),this.layerElement.appendChild(o)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=o},HShapeElement.prototype.getTransformedPoint=function(o,u){var T,S=o.length;for(T=0;T<S;T+=1)u=o[T].mProps.v.applyToPointArray(u[0],u[1],0);return u},HShapeElement.prototype.calculateShapeBoundingBox=function(o,u){var T=o.sh.v,S=o.transformers,E,C=T._length,_,P,R,I;if(!(C<=1)){for(E=0;E<C-1;E+=1)_=this.getTransformedPoint(S,T.v[E]),P=this.getTransformedPoint(S,T.o[E]),R=this.getTransformedPoint(S,T.i[E+1]),I=this.getTransformedPoint(S,T.v[E+1]),this.checkBounds(_,P,R,I,u);T.c&&(_=this.getTransformedPoint(S,T.v[E]),P=this.getTransformedPoint(S,T.o[E]),R=this.getTransformedPoint(S,T.i[0]),I=this.getTransformedPoint(S,T.v[0]),this.checkBounds(_,P,R,I,u))}},HShapeElement.prototype.checkBounds=function(o,u,T,S,E){this.getBoundsOfCurve(o,u,T,S);var C=this.shapeBoundingBox;E.x=bmMin(C.left,E.x),E.xMax=bmMax(C.right,E.xMax),E.y=bmMin(C.top,E.y),E.yMax=bmMax(C.bottom,E.yMax)},HShapeElement.prototype.shapeBoundingBox={left:0,right:0,top:0,bottom:0},HShapeElement.prototype.tempBoundingBox={x:0,xMax:0,y:0,yMax:0,width:0,height:0},HShapeElement.prototype.getBoundsOfCurve=function(o,u,T,S){for(var E=[[o[0],S[0]],[o[1],S[1]]],C,_,P,R,I,L,j,M=0;M<2;++M)_=6*o[M]-12*u[M]+6*T[M],C=-3*o[M]+9*u[M]-9*T[M]+3*S[M],P=3*u[M]-3*o[M],_|=0,C|=0,P|=0,C===0&&_===0||(C===0?(R=-P/_,R>0&&R<1&&E[M].push(this.calculateF(R,o,u,T,S,M))):(I=_*_-4*P*C,I>=0&&(L=(-_+bmSqrt(I))/(2*C),L>0&&L<1&&E[M].push(this.calculateF(L,o,u,T,S,M)),j=(-_-bmSqrt(I))/(2*C),j>0&&j<1&&E[M].push(this.calculateF(j,o,u,T,S,M)))));this.shapeBoundingBox.left=bmMin.apply(null,E[0]),this.shapeBoundingBox.top=bmMin.apply(null,E[1]),this.shapeBoundingBox.right=bmMax.apply(null,E[0]),this.shapeBoundingBox.bottom=bmMax.apply(null,E[1])},HShapeElement.prototype.calculateF=function(o,u,T,S,E,C){return bmPow(1-o,3)*u[C]+3*bmPow(1-o,2)*o*T[C]+3*(1-o)*bmPow(o,2)*S[C]+bmPow(o,3)*E[C]},HShapeElement.prototype.calculateBoundingBox=function(o,u){var T,S=o.length;for(T=0;T<S;T+=1)o[T]&&o[T].sh?this.calculateShapeBoundingBox(o[T],u):o[T]&&o[T].it?this.calculateBoundingBox(o[T].it,u):o[T]&&o[T].style&&o[T].w&&this.expandStrokeBoundingBox(o[T].w,u)},HShapeElement.prototype.expandStrokeBoundingBox=function(o,u){var T=0;if(o.keyframes){for(var S=0;S<o.keyframes.length;S+=1){var E=o.keyframes[S].s;E>T&&(T=E)}T*=o.mult}else T=o.v*o.mult;u.x-=T,u.xMax+=T,u.y-=T,u.yMax+=T},HShapeElement.prototype.currentBoxContains=function(o){return this.currentBBox.x<=o.x&&this.currentBBox.y<=o.y&&this.currentBBox.width+this.currentBBox.x>=o.x+o.width&&this.currentBBox.height+this.currentBBox.y>=o.y+o.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var o=this.tempBoundingBox,u=999999;if(o.x=u,o.xMax=-u,o.y=u,o.yMax=-u,this.calculateBoundingBox(this.itemsData,o),o.width=o.xMax<o.x?0:o.xMax-o.x,o.height=o.yMax<o.y?0:o.yMax-o.y,this.currentBoxContains(o))return;var T=!1;if(this.currentBBox.w!==o.width&&(this.currentBBox.w=o.width,this.shapeCont.setAttribute("width",o.width),T=!0),this.currentBBox.h!==o.height&&(this.currentBBox.h=o.height,this.shapeCont.setAttribute("height",o.height),T=!0),T||this.currentBBox.x!==o.x||this.currentBBox.y!==o.y){this.currentBBox.w=o.width,this.currentBBox.h=o.height,this.currentBBox.x=o.x,this.currentBBox.y=o.y,this.shapeCont.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h);var S=this.shapeCont.style,E="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)";S.transform=E,S.webkitTransform=E}}};function HTextElement(o,u,T){this.textSpans=[],this.textPaths=[],this.currentBBox={x:999999,y:-999999,h:0,w:0},this.renderType="svg",this.isMasked=!1,this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],HTextElement),HTextElement.prototype.createContent=function(){if(this.isMasked=this.checkMasks(),this.isMasked){this.renderType="svg",this.compW=this.comp.data.w,this.compH=this.comp.data.h,this.svgElement.setAttribute("width",this.compW),this.svgElement.setAttribute("height",this.compH);var o=createNS("g");this.maskedElement.appendChild(o),this.innerElem=o}else this.renderType="html",this.innerElem=this.layerElement;this.checkParenting()},HTextElement.prototype.buildNewText=function(){var o=this.textProperty.currentData;this.renderedLetters=createSizedArray(o.l?o.l.length:0);var u=this.innerElem.style,T=o.fc?this.buildColor(o.fc):"rgba(0,0,0,0)";u.fill=T,u.color=T,o.sc&&(u.stroke=this.buildColor(o.sc),u.strokeWidth=o.sw+"px");var S=this.globalData.fontManager.getFontByName(o.f);if(!this.globalData.fontManager.chars)if(u.fontSize=o.finalSize+"px",u.lineHeight=o.finalSize+"px",S.fClass)this.innerElem.className=S.fClass;else{u.fontFamily=S.fFamily;var E=o.fWeight,C=o.fStyle;u.fontStyle=C,u.fontWeight=E}var _,P,R=o.l;P=R.length;var I,L,j,M=this.mHelper,D,F="",N=0;for(_=0;_<P;_+=1){if(this.globalData.fontManager.chars?(this.textPaths[N]?I=this.textPaths[N]:(I=createNS("path"),I.setAttribute("stroke-linecap",lineCapEnum[1]),I.setAttribute("stroke-linejoin",lineJoinEnum[2]),I.setAttribute("stroke-miterlimit","4")),this.isMasked||(this.textSpans[N]?(L=this.textSpans[N],j=L.children[0]):(L=createTag("div"),L.style.lineHeight=0,j=createNS("svg"),j.appendChild(I),styleDiv(L)))):this.isMasked?I=this.textPaths[N]?this.textPaths[N]:createNS("text"):this.textSpans[N]?(L=this.textSpans[N],I=this.textPaths[N]):(L=createTag("span"),styleDiv(L),I=createTag("span"),styleDiv(I),L.appendChild(I)),this.globalData.fontManager.chars){var G=this.globalData.fontManager.getCharData(o.finalText[_],S.fStyle,this.globalData.fontManager.getFontByName(o.f).fFamily),B;if(G?B=G.data:B=null,M.reset(),B&&B.shapes&&B.shapes.length&&(D=B.shapes[0].it,M.scale(o.finalSize/100,o.finalSize/100),F=this.createPathShape(M,D),I.setAttribute("d",F)),this.isMasked)this.innerElem.appendChild(I);else{if(this.innerElem.appendChild(L),B&&B.shapes){document.body.appendChild(j);var H=j.getBBox();j.setAttribute("width",H.width+2),j.setAttribute("height",H.height+2),j.setAttribute("viewBox",H.x-1+" "+(H.y-1)+" "+(H.width+2)+" "+(H.height+2));var O=j.style,V="translate("+(H.x-1)+"px,"+(H.y-1)+"px)";O.transform=V,O.webkitTransform=V,R[_].yOffset=H.y-1}else j.setAttribute("width",1),j.setAttribute("height",1);L.appendChild(j)}}else if(I.textContent=R[_].val,I.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),this.isMasked)this.innerElem.appendChild(I);else{this.innerElem.appendChild(L);var U=I.style,W="translate3d(0,"+-o.finalSize/1.2+"px,0)";U.transform=W,U.webkitTransform=W}this.isMasked?this.textSpans[N]=I:this.textSpans[N]=L,this.textSpans[N].style.display="block",this.textPaths[N]=I,N+=1}for(;N<this.textSpans.length;)this.textSpans[N].style.display="none",N+=1},HTextElement.prototype.renderInnerContent=function(){this.validateText();var o;if(this.data.singleShape){if(!this._isFirstFrame&&!this.lettersChangedFlag)return;if(this.isMasked&&this.finalTransform._matMdf){this.svgElement.setAttribute("viewBox",-this.finalTransform.mProp.p.v[0]+" "+-this.finalTransform.mProp.p.v[1]+" "+this.compW+" "+this.compH),o=this.svgElement.style;var u="translate("+-this.finalTransform.mProp.p.v[0]+"px,"+-this.finalTransform.mProp.p.v[1]+"px)";o.transform=u,o.webkitTransform=u}}if(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),!(!this.lettersChangedFlag&&!this.textAnimator.lettersChangedFlag)){var T,S,E=0,C=this.textAnimator.renderedLetters,_=this.textProperty.currentData.l;S=_.length;var P,R,I;for(T=0;T<S;T+=1)_[T].n?E+=1:(R=this.textSpans[T],I=this.textPaths[T],P=C[E],E+=1,P._mdf.m&&(this.isMasked?R.setAttribute("transform",P.m):(R.style.webkitTransform=P.m,R.style.transform=P.m)),R.style.opacity=P.o,P.sw&&P._mdf.sw&&I.setAttribute("stroke-width",P.sw),P.sc&&P._mdf.sc&&I.setAttribute("stroke",P.sc),P.fc&&P._mdf.fc&&(I.setAttribute("fill",P.fc),I.style.color=P.fc));if(this.innerElem.getBBox&&!this.hidden&&(this._isFirstFrame||this._mdf)){var L=this.innerElem.getBBox();this.currentBBox.w!==L.width&&(this.currentBBox.w=L.width,this.svgElement.setAttribute("width",L.width)),this.currentBBox.h!==L.height&&(this.currentBBox.h=L.height,this.svgElement.setAttribute("height",L.height));var j=1;if(this.currentBBox.w!==L.width+j*2||this.currentBBox.h!==L.height+j*2||this.currentBBox.x!==L.x-j||this.currentBBox.y!==L.y-j){this.currentBBox.w=L.width+j*2,this.currentBBox.h=L.height+j*2,this.currentBBox.x=L.x-j,this.currentBBox.y=L.y-j,this.svgElement.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h),o=this.svgElement.style;var M="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)";o.transform=M,o.webkitTransform=M}}}};function HCameraElement(o,u,T){this.initFrame(),this.initBaseData(o,u,T),this.initHierarchy();var S=PropertyFactory.getProp;if(this.pe=S(this,o.pe,0,0,this),o.ks.p.s?(this.px=S(this,o.ks.p.x,1,0,this),this.py=S(this,o.ks.p.y,1,0,this),this.pz=S(this,o.ks.p.z,1,0,this)):this.p=S(this,o.ks.p,1,0,this),o.ks.a&&(this.a=S(this,o.ks.a,1,0,this)),o.ks.or.k.length&&o.ks.or.k[0].to){var E,C=o.ks.or.k.length;for(E=0;E<C;E+=1)o.ks.or.k[E].to=null,o.ks.or.k[E].ti=null}this.or=S(this,o.ks.or,1,degToRads,this),this.or.sh=!0,this.rx=S(this,o.ks.rx,0,degToRads,this),this.ry=S(this,o.ks.ry,0,degToRads,this),this.rz=S(this,o.ks.rz,0,degToRads,this),this.mat=new Matrix,this._prevMat=new Matrix,this._isFirstFrame=!0,this.finalTransform={mProp:this}}extendPrototype([BaseElement,FrameElement,HierarchyElement],HCameraElement),HCameraElement.prototype.setup=function(){var o,u=this.comp.threeDElements.length,T,S,E;for(o=0;o<u;o+=1)if(T=this.comp.threeDElements[o],T.type==="3d"){S=T.perspectiveElem.style,E=T.container.style;var C=this.pe.v+"px",_="0px 0px 0px",P="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";S.perspective=C,S.webkitPerspective=C,E.transformOrigin=_,E.mozTransformOrigin=_,E.webkitTransformOrigin=_,S.transform=P,S.webkitTransform=P}},HCameraElement.prototype.createElements=function(){},HCameraElement.prototype.hide=function(){},HCameraElement.prototype.renderFrame=function(){var o=this._isFirstFrame,u,T;if(this.hierarchy)for(T=this.hierarchy.length,u=0;u<T;u+=1)o=this.hierarchy[u].finalTransform.mProp._mdf||o;if(o||this.pe._mdf||this.p&&this.p._mdf||this.px&&(this.px._mdf||this.py._mdf||this.pz._mdf)||this.rx._mdf||this.ry._mdf||this.rz._mdf||this.or._mdf||this.a&&this.a._mdf){if(this.mat.reset(),this.hierarchy)for(T=this.hierarchy.length-1,u=T;u>=0;u-=1){var S=this.hierarchy[u].finalTransform.mProp;this.mat.translate(-S.p.v[0],-S.p.v[1],S.p.v[2]),this.mat.rotateX(-S.or.v[0]).rotateY(-S.or.v[1]).rotateZ(S.or.v[2]),this.mat.rotateX(-S.rx.v).rotateY(-S.ry.v).rotateZ(S.rz.v),this.mat.scale(1/S.s.v[0],1/S.s.v[1],1/S.s.v[2]),this.mat.translate(S.a.v[0],S.a.v[1],S.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var E;this.p?E=[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:E=[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var C=Math.sqrt(Math.pow(E[0],2)+Math.pow(E[1],2)+Math.pow(E[2],2)),_=[E[0]/C,E[1]/C,E[2]/C],P=Math.sqrt(_[2]*_[2]+_[0]*_[0]),R=Math.atan2(_[1],P),I=Math.atan2(_[0],-_[2]);this.mat.rotateY(I).rotateX(-R)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var L=!this._prevMat.equals(this.mat);if((L||this.pe._mdf)&&this.comp.threeDElements){T=this.comp.threeDElements.length;var j,M,D;for(u=0;u<T;u+=1)if(j=this.comp.threeDElements[u],j.type==="3d"){if(L){var F=this.mat.toCSS();D=j.container.style,D.transform=F,D.webkitTransform=F}this.pe._mdf&&(M=j.perspectiveElem.style,M.perspective=this.pe.v+"px",M.webkitPerspective=this.pe.v+"px")}this.mat.clone(this._prevMat)}}this._isFirstFrame=!1},HCameraElement.prototype.prepareFrame=function(o){this.prepareProperties(o,!0)},HCameraElement.prototype.destroy=function(){},HCameraElement.prototype.getBaseElement=function(){return null};function HImageElement(o,u,T){this.assetData=u.getAssetData(o.refId),this.initElement(o,u,T)}extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement],HImageElement),HImageElement.prototype.createContent=function(){var o=this.globalData.getAssetsPath(this.assetData),u=new Image;this.data.hasMask?(this.imageElem=createNS("image"),this.imageElem.setAttribute("width",this.assetData.w+"px"),this.imageElem.setAttribute("height",this.assetData.h+"px"),this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink","href",o),this.layerElement.appendChild(this.imageElem),this.baseElement.setAttribute("width",this.assetData.w),this.baseElement.setAttribute("height",this.assetData.h)):this.layerElement.appendChild(u),u.crossOrigin="anonymous",u.src=o,this.data.ln&&this.baseElement.setAttribute("id",this.data.ln)};function HybridRendererBase(o,u){this.animationItem=o,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:u&&u.className||"",imagePreserveAspectRatio:u&&u.imagePreserveAspectRatio||"xMidYMid slice",hideOnTransparent:!(u&&u.hideOnTransparent===!1),filterSize:{width:u&&u.filterSize&&u.filterSize.width||"400%",height:u&&u.filterSize&&u.filterSize.height||"400%",x:u&&u.filterSize&&u.filterSize.x||"-100%",y:u&&u.filterSize&&u.filterSize.y||"-100%"}},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType="html"}extendPrototype([BaseRenderer],HybridRendererBase),HybridRendererBase.prototype.buildItem=SVGRenderer.prototype.buildItem,HybridRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var o=this.pendingElements.pop();o.checkParenting()}},HybridRendererBase.prototype.appendElementInPos=function(o,u){var T=o.getBaseElement();if(T){var S=this.layers[u];if(!S.ddd||!this.supports3d)if(this.threeDElements)this.addTo3dContainer(T,u);else{for(var E=0,C,_,P;E<u;)this.elements[E]&&this.elements[E]!==!0&&this.elements[E].getBaseElement&&(_=this.elements[E],P=this.layers[E].ddd?this.getThreeDContainerByPos(E):_.getBaseElement(),C=P||C),E+=1;C?(!S.ddd||!this.supports3d)&&this.layerElement.insertBefore(T,C):(!S.ddd||!this.supports3d)&&this.layerElement.appendChild(T)}else this.addTo3dContainer(T,u)}},HybridRendererBase.prototype.createShape=function(o){return this.supports3d?new HShapeElement(o,this.globalData,this):new SVGShapeElement(o,this.globalData,this)},HybridRendererBase.prototype.createText=function(o){return this.supports3d?new HTextElement(o,this.globalData,this):new SVGTextLottieElement(o,this.globalData,this)},HybridRendererBase.prototype.createCamera=function(o){return this.camera=new HCameraElement(o,this.globalData,this),this.camera},HybridRendererBase.prototype.createImage=function(o){return this.supports3d?new HImageElement(o,this.globalData,this):new IImageElement(o,this.globalData,this)},HybridRendererBase.prototype.createSolid=function(o){return this.supports3d?new HSolidElement(o,this.globalData,this):new ISolidElement(o,this.globalData,this)},HybridRendererBase.prototype.createNull=SVGRenderer.prototype.createNull,HybridRendererBase.prototype.getThreeDContainerByPos=function(o){for(var u=0,T=this.threeDElements.length;u<T;){if(this.threeDElements[u].startPos<=o&&this.threeDElements[u].endPos>=o)return this.threeDElements[u].perspectiveElem;u+=1}return null},HybridRendererBase.prototype.createThreeDContainer=function(o,u){var T=createTag("div"),S,E;styleDiv(T);var C=createTag("div");if(styleDiv(C),u==="3d"){S=T.style,S.width=this.globalData.compSize.w+"px",S.height=this.globalData.compSize.h+"px";var _="50% 50%";S.webkitTransformOrigin=_,S.mozTransformOrigin=_,S.transformOrigin=_,E=C.style;var P="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";E.transform=P,E.webkitTransform=P}T.appendChild(C);var R={container:C,perspectiveElem:T,startPos:o,endPos:o,type:u};return this.threeDElements.push(R),R},HybridRendererBase.prototype.build3dContainers=function(){var o,u=this.layers.length,T,S="";for(o=0;o<u;o+=1)this.layers[o].ddd&&this.layers[o].ty!==3?(S!=="3d"&&(S="3d",T=this.createThreeDContainer(o,"3d")),T.endPos=Math.max(T.endPos,o)):(S!=="2d"&&(S="2d",T=this.createThreeDContainer(o,"2d")),T.endPos=Math.max(T.endPos,o));for(u=this.threeDElements.length,o=u-1;o>=0;o-=1)this.resizerElem.appendChild(this.threeDElements[o].perspectiveElem)},HybridRendererBase.prototype.addTo3dContainer=function(o,u){for(var T=0,S=this.threeDElements.length;T<S;){if(u<=this.threeDElements[T].endPos){for(var E=this.threeDElements[T].startPos,C;E<u;)this.elements[E]&&this.elements[E].getBaseElement&&(C=this.elements[E].getBaseElement()),E+=1;C?this.threeDElements[T].container.insertBefore(o,C):this.threeDElements[T].container.appendChild(o);break}T+=1}},HybridRendererBase.prototype.configAnimation=function(o){var u=createTag("div"),T=this.animationItem.wrapper,S=u.style;S.width=o.w+"px",S.height=o.h+"px",this.resizerElem=u,styleDiv(u),S.transformStyle="flat",S.mozTransformStyle="flat",S.webkitTransformStyle="flat",this.renderConfig.className&&u.setAttribute("class",this.renderConfig.className),T.appendChild(u),S.overflow="hidden";var E=createNS("svg");E.setAttribute("width","1"),E.setAttribute("height","1"),styleDiv(E),this.resizerElem.appendChild(E);var C=createNS("defs");E.appendChild(C),this.data=o,this.setupGlobalData(o,E),this.globalData.defs=C,this.layers=o.layers,this.layerElement=this.resizerElem,this.build3dContainers(),this.updateContainerSize()},HybridRendererBase.prototype.destroy=function(){this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=""),this.animationItem.container=null,this.globalData.defs=null;var o,u=this.layers?this.layers.length:0;for(o=0;o<u;o+=1)this.elements[o]&&this.elements[o].destroy&&this.elements[o].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},HybridRendererBase.prototype.updateContainerSize=function(){var o=this.animationItem.wrapper.offsetWidth,u=this.animationItem.wrapper.offsetHeight,T=o/u,S=this.globalData.compSize.w/this.globalData.compSize.h,E,C,_,P;S>T?(E=o/this.globalData.compSize.w,C=o/this.globalData.compSize.w,_=0,P=(u-this.globalData.compSize.h*(o/this.globalData.compSize.w))/2):(E=u/this.globalData.compSize.h,C=u/this.globalData.compSize.h,_=(o-this.globalData.compSize.w*(u/this.globalData.compSize.h))/2,P=0);var R=this.resizerElem.style;R.webkitTransform="matrix3d("+E+",0,0,0,0,"+C+",0,0,0,0,1,0,"+_+","+P+",0,1)",R.transform=R.webkitTransform},HybridRendererBase.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRendererBase.prototype.hide=function(){this.resizerElem.style.display="none"},HybridRendererBase.prototype.show=function(){this.resizerElem.style.display="block"},HybridRendererBase.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var o=this.globalData.compSize.w,u=this.globalData.compSize.h,T,S=this.threeDElements.length;for(T=0;T<S;T+=1){var E=this.threeDElements[T].perspectiveElem.style;E.webkitPerspective=Math.sqrt(Math.pow(o,2)+Math.pow(u,2))+"px",E.perspective=E.webkitPerspective}}},HybridRendererBase.prototype.searchExtraCompositions=function(o){var u,T=o.length,S=createTag("div");for(u=0;u<T;u+=1)if(o[u].xt){var E=this.createComp(o[u],S,this.globalData.comp,null);E.initExpressions(),this.globalData.projectInterface.registerComposition(E)}};function HCompElement(o,u,T){this.layers=o.layers,this.supports3d=!o.hasMask,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(o,u,T),this.tm=o.tm?PropertyFactory.getProp(this,o.tm,0,u.frameRate,this):{_placeholder:!0}}extendPrototype([HybridRendererBase,ICompElement,HBaseElement],HCompElement),HCompElement.prototype._createBaseContainerElements=HCompElement.prototype.createContainerElements,HCompElement.prototype.createContainerElements=function(){this._createBaseContainerElements(),this.data.hasMask?(this.svgElement.setAttribute("width",this.data.w),this.svgElement.setAttribute("height",this.data.h),this.transformedElement=this.baseElement):this.transformedElement=this.layerElement},HCompElement.prototype.addTo3dContainer=function(o,u){for(var T=0,S;T<u;)this.elements[T]&&this.elements[T].getBaseElement&&(S=this.elements[T].getBaseElement()),T+=1;S?this.layerElement.insertBefore(o,S):this.layerElement.appendChild(o)},HCompElement.prototype.createComp=function(o){return this.supports3d?new HCompElement(o,this.globalData,this):new SVGCompElement(o,this.globalData,this)};function HybridRenderer(o,u){this.animationItem=o,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:u&&u.className||"",imagePreserveAspectRatio:u&&u.imagePreserveAspectRatio||"xMidYMid slice",hideOnTransparent:!(u&&u.hideOnTransparent===!1),filterSize:{width:u&&u.filterSize&&u.filterSize.width||"400%",height:u&&u.filterSize&&u.filterSize.height||"400%",x:u&&u.filterSize&&u.filterSize.x||"-100%",y:u&&u.filterSize&&u.filterSize.y||"-100%"},runExpressions:!u||u.runExpressions===void 0||u.runExpressions},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType="html"}extendPrototype([HybridRendererBase],HybridRenderer),HybridRenderer.prototype.createComp=function(o){return this.supports3d?new HCompElement(o,this.globalData,this):new SVGCompElement(o,this.globalData,this)};var CompExpressionInterface=function(){return function(o){function u(T){for(var S=0,E=o.layers.length;S<E;){if(o.layers[S].nm===T||o.layers[S].ind===T)return o.elements[S].layerInterface;S+=1}return null}return Object.defineProperty(u,"_name",{value:o.data.nm}),u.layer=u,u.pixelAspect=1,u.height=o.data.h||o.globalData.compSize.h,u.width=o.data.w||o.globalData.compSize.w,u.pixelAspect=1,u.frameDuration=1/o.globalData.frameRate,u.displayStartTime=0,u.numLayers=o.layers.length,u}}();function _typeof$2(o){"@babel/helpers - typeof";return _typeof$2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$2(o)}function seedRandom(o,u){var T=this,S=256,E=6,C=52,_="random",P=u.pow(S,E),R=u.pow(2,C),I=R*2,L=S-1,j;function M(O,V,U){var W=[];V=V===!0?{entropy:!0}:V||{};var K=G(N(V.entropy?[O,H(o)]:O===null?B():O,3),W),Y=new D(W),ee=function(){for(var se=Y.g(E),Q=P,ie=0;se<R;)se=(se+ie)*S,Q*=S,ie=Y.g(1);for(;se>=I;)se/=2,Q/=2,ie>>>=1;return(se+ie)/Q};return ee.int32=function(){return Y.g(4)|0},ee.quick=function(){return Y.g(4)/4294967296},ee.double=ee,G(H(Y.S),o),(V.pass||U||function(oe,se,Q,ie){return ie&&(ie.S&&F(ie,Y),oe.state=function(){return F(Y,{})}),Q?(u[_]=oe,se):oe})(ee,K,"global"in V?V.global:this==u,V.state)}u["seed"+_]=M;function D(O){var V,U=O.length,W=this,K=0,Y=W.i=W.j=0,ee=W.S=[];for(U||(O=[U++]);K<S;)ee[K]=K++;for(K=0;K<S;K++)ee[K]=ee[Y=L&Y+O[K%U]+(V=ee[K])],ee[Y]=V;W.g=function(oe){for(var se,Q=0,ie=W.i,ae=W.j,re=W.S;oe--;)se=re[ie=L&ie+1],Q=Q*S+re[L&(re[ie]=re[ae=L&ae+se])+(re[ae]=se)];return W.i=ie,W.j=ae,Q}}function F(O,V){return V.i=O.i,V.j=O.j,V.S=O.S.slice(),V}function N(O,V){var U=[],W=_typeof$2(O),K;if(V&&W=="object")for(K in O)try{U.push(N(O[K],V-1))}catch{}return U.length?U:W=="string"?O:O+"\0"}function G(O,V){for(var U=O+"",W,K=0;K<U.length;)V[L&K]=L&(W^=V[L&K]*19)+U.charCodeAt(K++);return H(V)}function B(){try{var O=new Uint8Array(S);return(T.crypto||T.msCrypto).getRandomValues(O),H(O)}catch{var V=T.navigator,U=V&&V.plugins;return[+new Date,T,U,T.screen,H(o)]}}function H(O){return String.fromCharCode.apply(0,O)}G(u.random(),o)}function initialize$2(o){seedRandom([],o)}var propTypes={SHAPE:"shape"};function _typeof$1(o){"@babel/helpers - typeof";return _typeof$1=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof$1(o)}var ExpressionManager=function(){var ob={},Math=BMMath,window=null,document=null,XMLHttpRequest=null,fetch=null,frames=null,_lottieGlobal={};initialize$2(BMMath);function resetFrame(){_lottieGlobal={}}function $bm_isInstanceOfArray(o){return o.constructor===Array||o.constructor===Float32Array}function isNumerable(o,u){return o==="number"||u instanceof Number||o==="boolean"||o==="string"}function $bm_neg(o){var u=_typeof$1(o);if(u==="number"||o instanceof Number||u==="boolean")return-o;if($bm_isInstanceOfArray(o)){var T,S=o.length,E=[];for(T=0;T<S;T+=1)E[T]=-o[T];return E}return o.propType?o.v:-o}var easeInBez=BezierFactory.getBezierEasing(.333,0,.833,.833,"easeIn").get,easeOutBez=BezierFactory.getBezierEasing(.167,.167,.667,1,"easeOut").get,easeInOutBez=BezierFactory.getBezierEasing(.33,0,.667,1,"easeInOut").get;function sum(o,u){var T=_typeof$1(o),S=_typeof$1(u);if(isNumerable(T,o)&&isNumerable(S,u)||T==="string"||S==="string")return o+u;if($bm_isInstanceOfArray(o)&&isNumerable(S,u))return o=o.slice(0),o[0]+=u,o;if(isNumerable(T,o)&&$bm_isInstanceOfArray(u))return u=u.slice(0),u[0]=o+u[0],u;if($bm_isInstanceOfArray(o)&&$bm_isInstanceOfArray(u)){for(var E=0,C=o.length,_=u.length,P=[];E<C||E<_;)(typeof o[E]=="number"||o[E]instanceof Number)&&(typeof u[E]=="number"||u[E]instanceof Number)?P[E]=o[E]+u[E]:P[E]=u[E]===void 0?o[E]:o[E]||u[E],E+=1;return P}return 0}var add=sum;function sub(o,u){var T=_typeof$1(o),S=_typeof$1(u);if(isNumerable(T,o)&&isNumerable(S,u))return T==="string"&&(o=parseInt(o,10)),S==="string"&&(u=parseInt(u,10)),o-u;if($bm_isInstanceOfArray(o)&&isNumerable(S,u))return o=o.slice(0),o[0]-=u,o;if(isNumerable(T,o)&&$bm_isInstanceOfArray(u))return u=u.slice(0),u[0]=o-u[0],u;if($bm_isInstanceOfArray(o)&&$bm_isInstanceOfArray(u)){for(var E=0,C=o.length,_=u.length,P=[];E<C||E<_;)(typeof o[E]=="number"||o[E]instanceof Number)&&(typeof u[E]=="number"||u[E]instanceof Number)?P[E]=o[E]-u[E]:P[E]=u[E]===void 0?o[E]:o[E]||u[E],E+=1;return P}return 0}function mul(o,u){var T=_typeof$1(o),S=_typeof$1(u),E;if(isNumerable(T,o)&&isNumerable(S,u))return o*u;var C,_;if($bm_isInstanceOfArray(o)&&isNumerable(S,u)){for(_=o.length,E=createTypedArray("float32",_),C=0;C<_;C+=1)E[C]=o[C]*u;return E}if(isNumerable(T,o)&&$bm_isInstanceOfArray(u)){for(_=u.length,E=createTypedArray("float32",_),C=0;C<_;C+=1)E[C]=o*u[C];return E}return 0}function div(o,u){var T=_typeof$1(o),S=_typeof$1(u),E;if(isNumerable(T,o)&&isNumerable(S,u))return o/u;var C,_;if($bm_isInstanceOfArray(o)&&isNumerable(S,u)){for(_=o.length,E=createTypedArray("float32",_),C=0;C<_;C+=1)E[C]=o[C]/u;return E}if(isNumerable(T,o)&&$bm_isInstanceOfArray(u)){for(_=u.length,E=createTypedArray("float32",_),C=0;C<_;C+=1)E[C]=o/u[C];return E}return 0}function mod(o,u){return typeof o=="string"&&(o=parseInt(o,10)),typeof u=="string"&&(u=parseInt(u,10)),o%u}var $bm_sum=sum,$bm_sub=sub,$bm_mul=mul,$bm_div=div,$bm_mod=mod;function clamp(o,u,T){if(u>T){var S=T;T=u,u=S}return Math.min(Math.max(o,u),T)}function radiansToDegrees(o){return o/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(o){return o*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(o,u){if(typeof o=="number"||o instanceof Number)return u=u||0,Math.abs(o-u);u||(u=helperLengthArray);var T,S=Math.min(o.length,u.length),E=0;for(T=0;T<S;T+=1)E+=Math.pow(u[T]-o[T],2);return Math.sqrt(E)}function normalize(o){return div(o,length(o))}function rgbToHsl(o){var u=o[0],T=o[1],S=o[2],E=Math.max(u,T,S),C=Math.min(u,T,S),_,P,R=(E+C)/2;if(E===C)_=0,P=0;else{var I=E-C;switch(P=R>.5?I/(2-E-C):I/(E+C),E){case u:_=(T-S)/I+(T<S?6:0);break;case T:_=(S-u)/I+2;break;case S:_=(u-T)/I+4;break}_/=6}return[_,P,R,o[3]]}function hue2rgb(o,u,T){return T<0&&(T+=1),T>1&&(T-=1),T<1/6?o+(u-o)*6*T:T<1/2?u:T<2/3?o+(u-o)*(2/3-T)*6:o}function hslToRgb(o){var u=o[0],T=o[1],S=o[2],E,C,_;if(T===0)E=S,_=S,C=S;else{var P=S<.5?S*(1+T):S+T-S*T,R=2*S-P;E=hue2rgb(R,P,u+1/3),C=hue2rgb(R,P,u),_=hue2rgb(R,P,u-1/3)}return[E,C,_,o[3]]}function linear(o,u,T,S,E){if((S===void 0||E===void 0)&&(S=u,E=T,u=0,T=1),T<u){var C=T;T=u,u=C}if(o<=u)return S;if(o>=T)return E;var _=T===u?0:(o-u)/(T-u);if(!S.length)return S+(E-S)*_;var P,R=S.length,I=createTypedArray("float32",R);for(P=0;P<R;P+=1)I[P]=S[P]+(E[P]-S[P])*_;return I}function random(o,u){if(u===void 0&&(o===void 0?(o=0,u=1):(u=o,o=void 0)),u.length){var T,S=u.length;o||(o=createTypedArray("float32",S));var E=createTypedArray("float32",S),C=BMMath.random();for(T=0;T<S;T+=1)E[T]=o[T]+C*(u[T]-o[T]);return E}o===void 0&&(o=0);var _=BMMath.random();return o+_*(u-o)}function createPath(o,u,T,S){var E,C=o.length,_=shapePool.newElement();_.setPathData(!!S,C);var P=[0,0],R,I;for(E=0;E<C;E+=1)R=u&&u[E]?u[E]:P,I=T&&T[E]?T[E]:P,_.setTripleAt(o[E][0],o[E][1],I[0]+o[E][0],I[1]+o[E][1],R[0]+o[E][0],R[1]+o[E][1],E,!0);return _}function initiateExpression(elem,data,property){function noOp(o){return o}if(!elem.globalData.renderConfig.runExpressions)return noOp;var val=data.x,needsVelocity=/velocity(?![\w\d])/.test(val),_needsRandom=val.indexOf("random")!==-1,elemType=elem.data.ty,transform,$bm_transform,content,effect,thisProperty=property;thisProperty._name=elem.data.nm,thisProperty.valueAtTime=thisProperty.getValueAtTime,Object.defineProperty(thisProperty,"value",{get:function(){return thisProperty.v}}),elem.comp.frameDuration=1/elem.comp.globalData.frameRate,elem.comp.displayStartTime=0;var inPoint=elem.data.ip/elem.comp.globalData.frameRate,outPoint=elem.data.op/elem.comp.globalData.frameRate,width=elem.data.sw?elem.data.sw:0,height=elem.data.sh?elem.data.sh:0,name=elem.data.nm,loopIn,loop_in,loopOut,loop_out,smooth,toWorld,fromWorld,fromComp,toComp,fromCompToSurface,position,rotation,anchorPoint,scale,thisLayer,thisComp,mask,valueAtTime,velocityAtTime,scoped_bm_rt,expression_function=eval("[function _expression_function(){"+val+";scoped_bm_rt=$bm_rt}]")[0],numKeys=property.kf?data.k.length:0,active=!this.data||this.data.hd!==!0,wiggle=(function o(u,T){var S,E,C=this.pv.length?this.pv.length:1,_=createTypedArray("float32",C);u=5;var P=Math.floor(time*u);for(S=0,E=0;S<P;){for(E=0;E<C;E+=1)_[E]+=-T+T*2*BMMath.random();S+=1}var R=time*u,I=R-Math.floor(R),L=createTypedArray("float32",C);if(C>1){for(E=0;E<C;E+=1)L[E]=this.pv[E]+_[E]+(-T+T*2*BMMath.random())*I;return L}return this.pv+_[0]+(-T+T*2*BMMath.random())*I}).bind(this);thisProperty.loopIn&&(loopIn=thisProperty.loopIn.bind(thisProperty),loop_in=loopIn),thisProperty.loopOut&&(loopOut=thisProperty.loopOut.bind(thisProperty),loop_out=loopOut),thisProperty.smooth&&(smooth=thisProperty.smooth.bind(thisProperty));function loopInDuration(o,u){return loopIn(o,u,!0)}function loopOutDuration(o,u){return loopOut(o,u,!0)}this.getValueAtTime&&(valueAtTime=this.getValueAtTime.bind(this)),this.getVelocityAtTime&&(velocityAtTime=this.getVelocityAtTime.bind(this));var comp=elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);function lookAt(o,u){var T=[u[0]-o[0],u[1]-o[1],u[2]-o[2]],S=Math.atan2(T[0],Math.sqrt(T[1]*T[1]+T[2]*T[2]))/degToRads,E=-Math.atan2(T[1],T[2])/degToRads;return[E,S,0]}function easeOut(o,u,T,S,E){return applyEase(easeOutBez,o,u,T,S,E)}function easeIn(o,u,T,S,E){return applyEase(easeInBez,o,u,T,S,E)}function ease(o,u,T,S,E){return applyEase(easeInOutBez,o,u,T,S,E)}function applyEase(o,u,T,S,E,C){E===void 0?(E=T,C=S):u=(u-T)/(S-T),u>1?u=1:u<0&&(u=0);var _=o(u);if($bm_isInstanceOfArray(E)){var P,R=E.length,I=createTypedArray("float32",R);for(P=0;P<R;P+=1)I[P]=(C[P]-E[P])*_+E[P];return I}return(C-E)*_+E}function nearestKey(o){var u,T=data.k.length,S,E;if(!data.k.length||typeof data.k[0]=="number")S=0,E=0;else if(S=-1,o*=elem.comp.globalData.frameRate,o<data.k[0].t)S=1,E=data.k[0].t;else{for(u=0;u<T-1;u+=1)if(o===data.k[u].t){S=u+1,E=data.k[u].t;break}else if(o>data.k[u].t&&o<data.k[u+1].t){o-data.k[u].t>data.k[u+1].t-o?(S=u+2,E=data.k[u+1].t):(S=u+1,E=data.k[u].t);break}S===-1&&(S=u+1,E=data.k[u].t)}var C={};return C.index=S,C.time=E/elem.comp.globalData.frameRate,C}function key(o){var u,T,S;if(!data.k.length||typeof data.k[0]=="number")throw new Error("The property has no keyframe at index "+o);o-=1,u={time:data.k[o].t/elem.comp.globalData.frameRate,value:[]};var E=Object.prototype.hasOwnProperty.call(data.k[o],"s")?data.k[o].s:data.k[o-1].e;for(S=E.length,T=0;T<S;T+=1)u[T]=E[T],u.value[T]=E[T];return u}function framesToTime(o,u){return u||(u=elem.comp.globalData.frameRate),o/u}function timeToFrames(o,u){return!o&&o!==0&&(o=time),u||(u=elem.comp.globalData.frameRate),o*u}function seedRandom(o){BMMath.seedrandom(randSeed+o)}function sourceRectAtTime(){return elem.sourceRectAtTime()}function substring(o,u){return typeof value=="string"?u===void 0?value.substring(o):value.substring(o,u):""}function substr(o,u){return typeof value=="string"?u===void 0?value.substr(o):value.substr(o,u):""}function posterizeTime(o){time=o===0?0:Math.floor(time*o)/o,value=valueAtTime(time)}var time,velocity,value,text,textIndex,textTotal,selectorValue,index=elem.data.ind,hasParent=!!(elem.hierarchy&&elem.hierarchy.length),parent,randSeed=Math.floor(Math.random()*1e6),globalData=elem.globalData;function executeExpression(o){return value=o,this.frameExpressionId===elem.globalData.frameId&&this.propType!=="textSelector"?value:(this.propType==="textSelector"&&(textIndex=this.textIndex,textTotal=this.textTotal,selectorValue=this.selectorValue),thisLayer||(text=elem.layerInterface.text,thisLayer=elem.layerInterface,thisComp=elem.comp.compInterface,toWorld=thisLayer.toWorld.bind(thisLayer),fromWorld=thisLayer.fromWorld.bind(thisLayer),fromComp=thisLayer.fromComp.bind(thisLayer),toComp=thisLayer.toComp.bind(thisLayer),mask=thisLayer.mask?thisLayer.mask.bind(thisLayer):null,fromCompToSurface=fromComp),transform||(transform=elem.layerInterface("ADBE Transform Group"),$bm_transform=transform,transform&&(anchorPoint=transform.anchorPoint)),elemType===4&&!content&&(content=thisLayer("ADBE Root Vectors Group")),effect||(effect=thisLayer(4)),hasParent=!!(elem.hierarchy&&elem.hierarchy.length),hasParent&&!parent&&(parent=elem.hierarchy[0].layerInterface),time=this.comp.renderedFrame/this.comp.globalData.frameRate,_needsRandom&&seedRandom(randSeed+time),needsVelocity&&(velocity=velocityAtTime(time)),expression_function(),this.frameExpressionId=elem.globalData.frameId,scoped_bm_rt=scoped_bm_rt.propType===propTypes.SHAPE?scoped_bm_rt.v:scoped_bm_rt,scoped_bm_rt)}return executeExpression.__preventDeadCodeRemoval=[$bm_transform,anchorPoint,time,velocity,inPoint,outPoint,width,height,name,loop_in,loop_out,smooth,toComp,fromCompToSurface,toWorld,fromWorld,mask,position,rotation,scale,thisComp,numKeys,active,wiggle,loopInDuration,loopOutDuration,comp,lookAt,easeOut,easeIn,ease,nearestKey,key,text,textIndex,textTotal,selectorValue,framesToTime,timeToFrames,sourceRectAtTime,substring,substr,posterizeTime,index,globalData],executeExpression}return ob.initiateExpression=initiateExpression,ob.__preventDeadCodeRemoval=[window,document,XMLHttpRequest,fetch,frames,$bm_neg,add,$bm_sum,$bm_sub,$bm_mul,$bm_div,$bm_mod,clamp,radians_to_degrees,degreesToRadians,degrees_to_radians,normalize,rgbToHsl,hslToRgb,linear,random,createPath,_lottieGlobal],ob.resetFrame=resetFrame,ob}(),Expressions=function(){var o={};o.initExpressions=u,o.resetFrame=ExpressionManager.resetFrame;function u(T){var S=0,E=[];function C(){S+=1}function _(){S-=1,S===0&&R()}function P(I){E.indexOf(I)===-1&&E.push(I)}function R(){var I,L=E.length;for(I=0;I<L;I+=1)E[I].release();E.length=0}T.renderer.compInterface=CompExpressionInterface(T.renderer),T.renderer.globalData.projectInterface.registerComposition(T.renderer),T.renderer.globalData.pushExpression=C,T.renderer.globalData.popExpression=_,T.renderer.globalData.registerExpressionProperty=P}return o}(),MaskManagerInterface=function(){function o(T,S){this._mask=T,this._data=S}Object.defineProperty(o.prototype,"maskPath",{get:function(){return this._mask.prop.k&&this._mask.prop.getValue(),this._mask.prop}}),Object.defineProperty(o.prototype,"maskOpacity",{get:function(){return this._mask.op.k&&this._mask.op.getValue(),this._mask.op.v*100}});var u=function(S){var E=createSizedArray(S.viewData.length),C,_=S.viewData.length;for(C=0;C<_;C+=1)E[C]=new o(S.viewData[C],S.masksProperties[C]);var P=function(I){for(C=0;C<_;){if(S.masksProperties[C].nm===I)return E[C];C+=1}return null};return P};return u}(),ExpressionPropertyInterface=function(){var o={pv:0,v:0,mult:1},u={pv:[0,0,0],v:[0,0,0],mult:1};function T(_,P,R){Object.defineProperty(_,"velocity",{get:function(){return P.getVelocityAtTime(P.comp.currentFrame)}}),_.numKeys=P.keyframes?P.keyframes.length:0,_.key=function(I){if(!_.numKeys)return 0;var L="";"s"in P.keyframes[I-1]?L=P.keyframes[I-1].s:"e"in P.keyframes[I-2]?L=P.keyframes[I-2].e:L=P.keyframes[I-2].s;var j=R==="unidimensional"?new Number(L):Object.assign({},L);return j.time=P.keyframes[I-1].t/P.elem.comp.globalData.frameRate,j.value=R==="unidimensional"?L[0]:L,j},_.valueAtTime=P.getValueAtTime,_.speedAtTime=P.getSpeedAtTime,_.velocityAtTime=P.getVelocityAtTime,_.propertyGroup=P.propertyGroup}function S(_){(!_||!("pv"in _))&&(_=o);var P=1/_.mult,R=_.pv*P,I=new Number(R);return I.value=R,T(I,_,"unidimensional"),function(){return _.k&&_.getValue(),R=_.v*P,I.value!==R&&(I=new Number(R),I.value=R,I[0]=R,T(I,_,"unidimensional")),I}}function E(_){(!_||!("pv"in _))&&(_=u);var P=1/_.mult,R=_.data&&_.data.l||_.pv.length,I=createTypedArray("float32",R),L=createTypedArray("float32",R);return I.value=L,T(I,_,"multidimensional"),function(){_.k&&_.getValue();for(var j=0;j<R;j+=1)L[j]=_.v[j]*P,I[j]=L[j];return I}}function C(){return o}return function(_){return _?_.propType==="unidimensional"?S(_):E(_):C}}(),TransformExpressionInterface=function(){return function(o){function u(_){switch(_){case"scale":case"Scale":case"ADBE Scale":case 6:return u.scale;case"rotation":case"Rotation":case"ADBE Rotation":case"ADBE Rotate Z":case 10:return u.rotation;case"ADBE Rotate X":return u.xRotation;case"ADBE Rotate Y":return u.yRotation;case"position":case"Position":case"ADBE Position":case 2:return u.position;case"ADBE Position_0":return u.xPosition;case"ADBE Position_1":return u.yPosition;case"ADBE Position_2":return u.zPosition;case"anchorPoint":case"AnchorPoint":case"Anchor Point":case"ADBE AnchorPoint":case 1:return u.anchorPoint;case"opacity":case"Opacity":case 11:return u.opacity;default:return null}}Object.defineProperty(u,"rotation",{get:ExpressionPropertyInterface(o.r||o.rz)}),Object.defineProperty(u,"zRotation",{get:ExpressionPropertyInterface(o.rz||o.r)}),Object.defineProperty(u,"xRotation",{get:ExpressionPropertyInterface(o.rx)}),Object.defineProperty(u,"yRotation",{get:ExpressionPropertyInterface(o.ry)}),Object.defineProperty(u,"scale",{get:ExpressionPropertyInterface(o.s)});var T,S,E,C;return o.p?C=ExpressionPropertyInterface(o.p):(T=ExpressionPropertyInterface(o.px),S=ExpressionPropertyInterface(o.py),o.pz&&(E=ExpressionPropertyInterface(o.pz))),Object.defineProperty(u,"position",{get:function(){return o.p?C():[T(),S(),E?E():0]}}),Object.defineProperty(u,"xPosition",{get:ExpressionPropertyInterface(o.px)}),Object.defineProperty(u,"yPosition",{get:ExpressionPropertyInterface(o.py)}),Object.defineProperty(u,"zPosition",{get:ExpressionPropertyInterface(o.pz)}),Object.defineProperty(u,"anchorPoint",{get:ExpressionPropertyInterface(o.a)}),Object.defineProperty(u,"opacity",{get:ExpressionPropertyInterface(o.o)}),Object.defineProperty(u,"skew",{get:ExpressionPropertyInterface(o.sk)}),Object.defineProperty(u,"skewAxis",{get:ExpressionPropertyInterface(o.sa)}),Object.defineProperty(u,"orientation",{get:ExpressionPropertyInterface(o.or)}),u}}(),LayerExpressionInterface=function(){function o(I){var L=new Matrix;if(I!==void 0){var j=this._elem.finalTransform.mProp.getValueAtTime(I);j.clone(L)}else{var M=this._elem.finalTransform.mProp;M.applyToMatrix(L)}return L}function u(I,L){var j=this.getMatrix(L);return j.props[12]=0,j.props[13]=0,j.props[14]=0,this.applyPoint(j,I)}function T(I,L){var j=this.getMatrix(L);return this.applyPoint(j,I)}function S(I,L){var j=this.getMatrix(L);return j.props[12]=0,j.props[13]=0,j.props[14]=0,this.invertPoint(j,I)}function E(I,L){var j=this.getMatrix(L);return this.invertPoint(j,I)}function C(I,L){if(this._elem.hierarchy&&this._elem.hierarchy.length){var j,M=this._elem.hierarchy.length;for(j=0;j<M;j+=1)this._elem.hierarchy[j].finalTransform.mProp.applyToMatrix(I)}return I.applyToPointArray(L[0],L[1],L[2]||0)}function _(I,L){if(this._elem.hierarchy&&this._elem.hierarchy.length){var j,M=this._elem.hierarchy.length;for(j=0;j<M;j+=1)this._elem.hierarchy[j].finalTransform.mProp.applyToMatrix(I)}return I.inversePoint(L)}function P(I){var L=new Matrix;if(L.reset(),this._elem.finalTransform.mProp.applyToMatrix(L),this._elem.hierarchy&&this._elem.hierarchy.length){var j,M=this._elem.hierarchy.length;for(j=0;j<M;j+=1)this._elem.hierarchy[j].finalTransform.mProp.applyToMatrix(L);return L.inversePoint(I)}return L.inversePoint(I)}function R(){return[1,1,1,1]}return function(I){var L;function j(N){D.mask=new MaskManagerInterface(N,I)}function M(N){D.effect=N}function D(N){switch(N){case"ADBE Root Vectors Group":case"Contents":case 2:return D.shapeInterface;case 1:case 6:case"Transform":case"transform":case"ADBE Transform Group":return L;case 4:case"ADBE Effect Parade":case"effects":case"Effects":return D.effect;case"ADBE Text Properties":return D.textInterface;default:return null}}D.getMatrix=o,D.invertPoint=_,D.applyPoint=C,D.toWorld=T,D.toWorldVec=u,D.fromWorld=E,D.fromWorldVec=S,D.toComp=T,D.fromComp=P,D.sampleImage=R,D.sourceRectAtTime=I.sourceRectAtTime.bind(I),D._elem=I,L=TransformExpressionInterface(I.finalTransform.mProp);var F=getDescriptor(L,"anchorPoint");return Object.defineProperties(D,{hasParent:{get:function(){return I.hierarchy.length}},parent:{get:function(){return I.hierarchy[0].layerInterface}},rotation:getDescriptor(L,"rotation"),scale:getDescriptor(L,"scale"),position:getDescriptor(L,"position"),opacity:getDescriptor(L,"opacity"),anchorPoint:F,anchor_point:F,transform:{get:function(){return L}},active:{get:function(){return I.isInRange}}}),D.startTime=I.data.st,D.index=I.data.ind,D.source=I.data.refId,D.height=I.data.ty===0?I.data.h:100,D.width=I.data.ty===0?I.data.w:100,D.inPoint=I.data.ip/I.comp.globalData.frameRate,D.outPoint=I.data.op/I.comp.globalData.frameRate,D._name=I.data.nm,D.registerMaskInterface=j,D.registerEffectsInterface=M,D}}(),propertyGroupFactory=function(){return function(o,u){return function(T){return T=T===void 0?1:T,T<=0?o:u(T-1)}}}(),PropertyInterface=function(){return function(o,u){var T={_name:o};function S(E){return E=E===void 0?1:E,E<=0?T:u(E-1)}return S}}(),EffectsExpressionInterface=function(){var o={createEffectsInterface:u};function u(E,C){if(E.effectsManager){var _=[],P=E.data.ef,R,I=E.effectsManager.effectElements.length;for(R=0;R<I;R+=1)_.push(T(P[R],E.effectsManager.effectElements[R],C,E));var L=E.data.ef||[],j=function(D){for(R=0,I=L.length;R<I;){if(D===L[R].nm||D===L[R].mn||D===L[R].ix)return _[R];R+=1}return null};return Object.defineProperty(j,"numProperties",{get:function(){return L.length}}),j}return null}function T(E,C,_,P){function R(D){for(var F=E.ef,N=0,G=F.length;N<G;){if(D===F[N].nm||D===F[N].mn||D===F[N].ix)return F[N].ty===5?L[N]:L[N]();N+=1}throw new Error}var I=propertyGroupFactory(R,_),L=[],j,M=E.ef.length;for(j=0;j<M;j+=1)E.ef[j].ty===5?L.push(T(E.ef[j],C.effectElements[j],C.effectElements[j].propertyGroup,P)):L.push(S(C.effectElements[j],E.ef[j].ty,P,I));return E.mn==="ADBE Color Control"&&Object.defineProperty(R,"color",{get:function(){return L[0]()}}),Object.defineProperties(R,{numProperties:{get:function(){return E.np}},_name:{value:E.nm},propertyGroup:{value:I}}),R.enabled=E.en!==0,R.active=R.enabled,R}function S(E,C,_,P){var R=ExpressionPropertyInterface(E.p);function I(){return C===10?_.comp.compInterface(E.p.v):R()}return E.p.setGroupProperty&&E.p.setGroupProperty(PropertyInterface("",P)),I}return o}(),ShapePathInterface=function(){return function(u,T,S){var E=T.sh;function C(P){return P==="Shape"||P==="shape"||P==="Path"||P==="path"||P==="ADBE Vector Shape"||P===2?C.path:null}var _=propertyGroupFactory(C,S);return E.setGroupProperty(PropertyInterface("Path",_)),Object.defineProperties(C,{path:{get:function(){return E.k&&E.getValue(),E}},shape:{get:function(){return E.k&&E.getValue(),E}},_name:{value:u.nm},ix:{value:u.ix},propertyIndex:{value:u.ix},mn:{value:u.mn},propertyGroup:{value:S}}),C}}(),ShapeExpressionInterface=function(){function o(F,N,G){var B=[],H,O=F?F.length:0;for(H=0;H<O;H+=1)F[H].ty==="gr"?B.push(T(F[H],N[H],G)):F[H].ty==="fl"?B.push(S(F[H],N[H],G)):F[H].ty==="st"?B.push(_(F[H],N[H],G)):F[H].ty==="tm"?B.push(P(F[H],N[H],G)):F[H].ty==="tr"||(F[H].ty==="el"?B.push(I(F[H],N[H],G)):F[H].ty==="sr"?B.push(L(F[H],N[H],G)):F[H].ty==="sh"?B.push(ShapePathInterface(F[H],N[H],G)):F[H].ty==="rc"?B.push(j(F[H],N[H],G)):F[H].ty==="rd"?B.push(M(F[H],N[H],G)):F[H].ty==="rp"?B.push(D(F[H],N[H],G)):F[H].ty==="gf"?B.push(E(F[H],N[H],G)):B.push(C(F[H],N[H])));return B}function u(F,N,G){var B,H=function(U){for(var W=0,K=B.length;W<K;){if(B[W]._name===U||B[W].mn===U||B[W].propertyIndex===U||B[W].ix===U||B[W].ind===U)return B[W];W+=1}return typeof U=="number"?B[U-1]:null};H.propertyGroup=propertyGroupFactory(H,G),B=o(F.it,N.it,H.propertyGroup),H.numProperties=B.length;var O=R(F.it[F.it.length-1],N.it[N.it.length-1],H.propertyGroup);return H.transform=O,H.propertyIndex=F.cix,H._name=F.nm,H}function T(F,N,G){var B=function(U){switch(U){case"ADBE Vectors Group":case"Contents":case 2:return B.content;default:return B.transform}};B.propertyGroup=propertyGroupFactory(B,G);var H=u(F,N,B.propertyGroup),O=R(F.it[F.it.length-1],N.it[N.it.length-1],B.propertyGroup);return B.content=H,B.transform=O,Object.defineProperty(B,"_name",{get:function(){return F.nm}}),B.numProperties=F.np,B.propertyIndex=F.ix,B.nm=F.nm,B.mn=F.mn,B}function S(F,N,G){function B(H){return H==="Color"||H==="color"?B.color:H==="Opacity"||H==="opacity"?B.opacity:null}return Object.defineProperties(B,{color:{get:ExpressionPropertyInterface(N.c)},opacity:{get:ExpressionPropertyInterface(N.o)},_name:{value:F.nm},mn:{value:F.mn}}),N.c.setGroupProperty(PropertyInterface("Color",G)),N.o.setGroupProperty(PropertyInterface("Opacity",G)),B}function E(F,N,G){function B(H){return H==="Start Point"||H==="start point"?B.startPoint:H==="End Point"||H==="end point"?B.endPoint:H==="Opacity"||H==="opacity"?B.opacity:null}return Object.defineProperties(B,{startPoint:{get:ExpressionPropertyInterface(N.s)},endPoint:{get:ExpressionPropertyInterface(N.e)},opacity:{get:ExpressionPropertyInterface(N.o)},type:{get:function(){return"a"}},_name:{value:F.nm},mn:{value:F.mn}}),N.s.setGroupProperty(PropertyInterface("Start Point",G)),N.e.setGroupProperty(PropertyInterface("End Point",G)),N.o.setGroupProperty(PropertyInterface("Opacity",G)),B}function C(){function F(){return null}return F}function _(F,N,G){var B=propertyGroupFactory(K,G),H=propertyGroupFactory(W,B);function O(Y){Object.defineProperty(W,F.d[Y].nm,{get:ExpressionPropertyInterface(N.d.dataProps[Y].p)})}var V,U=F.d?F.d.length:0,W={};for(V=0;V<U;V+=1)O(V),N.d.dataProps[V].p.setGroupProperty(H);function K(Y){return Y==="Color"||Y==="color"?K.color:Y==="Opacity"||Y==="opacity"?K.opacity:Y==="Stroke Width"||Y==="stroke width"?K.strokeWidth:null}return Object.defineProperties(K,{color:{get:ExpressionPropertyInterface(N.c)},opacity:{get:ExpressionPropertyInterface(N.o)},strokeWidth:{get:ExpressionPropertyInterface(N.w)},dash:{get:function(){return W}},_name:{value:F.nm},mn:{value:F.mn}}),N.c.setGroupProperty(PropertyInterface("Color",B)),N.o.setGroupProperty(PropertyInterface("Opacity",B)),N.w.setGroupProperty(PropertyInterface("Stroke Width",B)),K}function P(F,N,G){function B(O){return O===F.e.ix||O==="End"||O==="end"?B.end:O===F.s.ix?B.start:O===F.o.ix?B.offset:null}var H=propertyGroupFactory(B,G);return B.propertyIndex=F.ix,N.s.setGroupProperty(PropertyInterface("Start",H)),N.e.setGroupProperty(PropertyInterface("End",H)),N.o.setGroupProperty(PropertyInterface("Offset",H)),B.propertyIndex=F.ix,B.propertyGroup=G,Object.defineProperties(B,{start:{get:ExpressionPropertyInterface(N.s)},end:{get:ExpressionPropertyInterface(N.e)},offset:{get:ExpressionPropertyInterface(N.o)},_name:{value:F.nm}}),B.mn=F.mn,B}function R(F,N,G){function B(O){return F.a.ix===O||O==="Anchor Point"?B.anchorPoint:F.o.ix===O||O==="Opacity"?B.opacity:F.p.ix===O||O==="Position"?B.position:F.r.ix===O||O==="Rotation"||O==="ADBE Vector Rotation"?B.rotation:F.s.ix===O||O==="Scale"?B.scale:F.sk&&F.sk.ix===O||O==="Skew"?B.skew:F.sa&&F.sa.ix===O||O==="Skew Axis"?B.skewAxis:null}var H=propertyGroupFactory(B,G);return N.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity",H)),N.transform.mProps.p.setGroupProperty(PropertyInterface("Position",H)),N.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point",H)),N.transform.mProps.s.setGroupProperty(PropertyInterface("Scale",H)),N.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation",H)),N.transform.mProps.sk&&(N.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew",H)),N.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle",H))),N.transform.op.setGroupProperty(PropertyInterface("Opacity",H)),Object.defineProperties(B,{opacity:{get:ExpressionPropertyInterface(N.transform.mProps.o)},position:{get:ExpressionPropertyInterface(N.transform.mProps.p)},anchorPoint:{get:ExpressionPropertyInterface(N.transform.mProps.a)},scale:{get:ExpressionPropertyInterface(N.transform.mProps.s)},rotation:{get:ExpressionPropertyInterface(N.transform.mProps.r)},skew:{get:ExpressionPropertyInterface(N.transform.mProps.sk)},skewAxis:{get:ExpressionPropertyInterface(N.transform.mProps.sa)},_name:{value:F.nm}}),B.ty="tr",B.mn=F.mn,B.propertyGroup=G,B}function I(F,N,G){function B(V){return F.p.ix===V?B.position:F.s.ix===V?B.size:null}var H=propertyGroupFactory(B,G);B.propertyIndex=F.ix;var O=N.sh.ty==="tm"?N.sh.prop:N.sh;return O.s.setGroupProperty(PropertyInterface("Size",H)),O.p.setGroupProperty(PropertyInterface("Position",H)),Object.defineProperties(B,{size:{get:ExpressionPropertyInterface(O.s)},position:{get:ExpressionPropertyInterface(O.p)},_name:{value:F.nm}}),B.mn=F.mn,B}function L(F,N,G){function B(V){return F.p.ix===V?B.position:F.r.ix===V?B.rotation:F.pt.ix===V?B.points:F.or.ix===V||V==="ADBE Vector Star Outer Radius"?B.outerRadius:F.os.ix===V?B.outerRoundness:F.ir&&(F.ir.ix===V||V==="ADBE Vector Star Inner Radius")?B.innerRadius:F.is&&F.is.ix===V?B.innerRoundness:null}var H=propertyGroupFactory(B,G),O=N.sh.ty==="tm"?N.sh.prop:N.sh;return B.propertyIndex=F.ix,O.or.setGroupProperty(PropertyInterface("Outer Radius",H)),O.os.setGroupProperty(PropertyInterface("Outer Roundness",H)),O.pt.setGroupProperty(PropertyInterface("Points",H)),O.p.setGroupProperty(PropertyInterface("Position",H)),O.r.setGroupProperty(PropertyInterface("Rotation",H)),F.ir&&(O.ir.setGroupProperty(PropertyInterface("Inner Radius",H)),O.is.setGroupProperty(PropertyInterface("Inner Roundness",H))),Object.defineProperties(B,{position:{get:ExpressionPropertyInterface(O.p)},rotation:{get:ExpressionPropertyInterface(O.r)},points:{get:ExpressionPropertyInterface(O.pt)},outerRadius:{get:ExpressionPropertyInterface(O.or)},outerRoundness:{get:ExpressionPropertyInterface(O.os)},innerRadius:{get:ExpressionPropertyInterface(O.ir)},innerRoundness:{get:ExpressionPropertyInterface(O.is)},_name:{value:F.nm}}),B.mn=F.mn,B}function j(F,N,G){function B(V){return F.p.ix===V?B.position:F.r.ix===V?B.roundness:F.s.ix===V||V==="Size"||V==="ADBE Vector Rect Size"?B.size:null}var H=propertyGroupFactory(B,G),O=N.sh.ty==="tm"?N.sh.prop:N.sh;return B.propertyIndex=F.ix,O.p.setGroupProperty(PropertyInterface("Position",H)),O.s.setGroupProperty(PropertyInterface("Size",H)),O.r.setGroupProperty(PropertyInterface("Rotation",H)),Object.defineProperties(B,{position:{get:ExpressionPropertyInterface(O.p)},roundness:{get:ExpressionPropertyInterface(O.r)},size:{get:ExpressionPropertyInterface(O.s)},_name:{value:F.nm}}),B.mn=F.mn,B}function M(F,N,G){function B(V){return F.r.ix===V||V==="Round Corners 1"?B.radius:null}var H=propertyGroupFactory(B,G),O=N;return B.propertyIndex=F.ix,O.rd.setGroupProperty(PropertyInterface("Radius",H)),Object.defineProperties(B,{radius:{get:ExpressionPropertyInterface(O.rd)},_name:{value:F.nm}}),B.mn=F.mn,B}function D(F,N,G){function B(V){return F.c.ix===V||V==="Copies"?B.copies:F.o.ix===V||V==="Offset"?B.offset:null}var H=propertyGroupFactory(B,G),O=N;return B.propertyIndex=F.ix,O.c.setGroupProperty(PropertyInterface("Copies",H)),O.o.setGroupProperty(PropertyInterface("Offset",H)),Object.defineProperties(B,{copies:{get:ExpressionPropertyInterface(O.c)},offset:{get:ExpressionPropertyInterface(O.o)},_name:{value:F.nm}}),B.mn=F.mn,B}return function(F,N,G){var B;function H(V){if(typeof V=="number")return V=V===void 0?1:V,V===0?G:B[V-1];for(var U=0,W=B.length;U<W;){if(B[U]._name===V)return B[U];U+=1}return null}function O(){return G}return H.propertyGroup=propertyGroupFactory(H,O),B=o(F,N,H.propertyGroup),H.numProperties=B.length,H._name="Contents",H}}(),TextExpressionInterface=function(){return function(o){var u;function T(S){switch(S){case"ADBE Text Document":return T.sourceText;default:return null}}return Object.defineProperty(T,"sourceText",{get:function(){o.textProperty.getValue();var E=o.textProperty.currentData.t;return(!u||E!==u.value)&&(u=new String(E),u.value=E||new String(E),Object.defineProperty(u,"style",{get:function(){return{fillColor:o.textProperty.currentData.fc}}})),u}}),T}}();function _typeof(o){"@babel/helpers - typeof";return _typeof=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_typeof(o)}var FootageInterface=function(){var o=function(S){var E="",C=S.getFootageData();function _(){return E="",C=S.getFootageData(),P}function P(R){if(C[R])return E=R,C=C[R],_typeof(C)==="object"?P:C;var I=R.indexOf(E);if(I!==-1){var L=parseInt(R.substr(I+E.length),10);return C=C[L],_typeof(C)==="object"?P:C}return""}return _},u=function(S){function E(C){return C==="Outline"?E.outlineInterface():null}return E._name="Outline",E.outlineInterface=o(S),E};return function(T){function S(E){return E==="Data"?S.dataInterface:null}return S._name="Data",S.dataInterface=u(T),S}}(),interfaces={layer:LayerExpressionInterface,effects:EffectsExpressionInterface,comp:CompExpressionInterface,shape:ShapeExpressionInterface,text:TextExpressionInterface,footage:FootageInterface};function getInterface(o){return interfaces[o]||null}var expressionHelpers=function(){function o(_,P,R){P.x&&(R.k=!0,R.x=!0,R.initiateExpression=ExpressionManager.initiateExpression,R.effectsSequence.push(R.initiateExpression(_,P,R).bind(R)))}function u(_){return _*=this.elem.globalData.frameRate,_-=this.offsetTime,_!==this._cachingAtTime.lastFrame&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastFrame<_?this._cachingAtTime.lastIndex:0,this._cachingAtTime.value=this.interpolateValue(_,this._cachingAtTime),this._cachingAtTime.lastFrame=_),this._cachingAtTime.value}function T(_){var P=-.01,R=this.getValueAtTime(_),I=this.getValueAtTime(_+P),L=0;if(R.length){var j;for(j=0;j<R.length;j+=1)L+=Math.pow(I[j]-R[j],2);L=Math.sqrt(L)*100}else L=0;return L}function S(_){if(this.vel!==void 0)return this.vel;var P=-.001,R=this.getValueAtTime(_),I=this.getValueAtTime(_+P),L;if(R.length){L=createTypedArray("float32",R.length);var j;for(j=0;j<R.length;j+=1)L[j]=(I[j]-R[j])/P}else L=(I-R)/P;return L}function E(){return this.pv}function C(_){this.propertyGroup=_}return{searchExpressions:o,getSpeedAtTime:T,getVelocityAtTime:S,getValueAtTime:u,getStaticValueAtTime:E,setGroupProperty:C}}();function addPropertyDecorator(){function o(M,D,F){if(!this.k||!this.keyframes)return this.pv;M=M?M.toLowerCase():"";var N=this.comp.renderedFrame,G=this.keyframes,B=G[G.length-1].t;if(N<=B)return this.pv;var H,O;F?(D?H=Math.abs(B-this.elem.comp.globalData.frameRate*D):H=Math.max(0,B-this.elem.data.ip),O=B-H):((!D||D>G.length-1)&&(D=G.length-1),O=G[G.length-1-D].t,H=B-O);var V,U,W;if(M==="pingpong"){var K=Math.floor((N-O)/H);if(K%2!==0)return this.getValueAtTime((H-(N-O)%H+O)/this.comp.globalData.frameRate,0)}else if(M==="offset"){var Y=this.getValueAtTime(O/this.comp.globalData.frameRate,0),ee=this.getValueAtTime(B/this.comp.globalData.frameRate,0),oe=this.getValueAtTime(((N-O)%H+O)/this.comp.globalData.frameRate,0),se=Math.floor((N-O)/H);if(this.pv.length){for(W=new Array(Y.length),U=W.length,V=0;V<U;V+=1)W[V]=(ee[V]-Y[V])*se+oe[V];return W}return(ee-Y)*se+oe}else if(M==="continue"){var Q=this.getValueAtTime(B/this.comp.globalData.frameRate,0),ie=this.getValueAtTime((B-.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(W=new Array(Q.length),U=W.length,V=0;V<U;V+=1)W[V]=Q[V]+(Q[V]-ie[V])*((N-B)/this.comp.globalData.frameRate)/5e-4;return W}return Q+(Q-ie)*((N-B)/.001)}return this.getValueAtTime(((N-O)%H+O)/this.comp.globalData.frameRate,0)}function u(M,D,F){if(!this.k)return this.pv;M=M?M.toLowerCase():"";var N=this.comp.renderedFrame,G=this.keyframes,B=G[0].t;if(N>=B)return this.pv;var H,O;F?(D?H=Math.abs(this.elem.comp.globalData.frameRate*D):H=Math.max(0,this.elem.data.op-B),O=B+H):((!D||D>G.length-1)&&(D=G.length-1),O=G[D].t,H=O-B);var V,U,W;if(M==="pingpong"){var K=Math.floor((B-N)/H);if(K%2===0)return this.getValueAtTime(((B-N)%H+B)/this.comp.globalData.frameRate,0)}else if(M==="offset"){var Y=this.getValueAtTime(B/this.comp.globalData.frameRate,0),ee=this.getValueAtTime(O/this.comp.globalData.frameRate,0),oe=this.getValueAtTime((H-(B-N)%H+B)/this.comp.globalData.frameRate,0),se=Math.floor((B-N)/H)+1;if(this.pv.length){for(W=new Array(Y.length),U=W.length,V=0;V<U;V+=1)W[V]=oe[V]-(ee[V]-Y[V])*se;return W}return oe-(ee-Y)*se}else if(M==="continue"){var Q=this.getValueAtTime(B/this.comp.globalData.frameRate,0),ie=this.getValueAtTime((B+.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(W=new Array(Q.length),U=W.length,V=0;V<U;V+=1)W[V]=Q[V]+(Q[V]-ie[V])*(B-N)/.001;return W}return Q+(Q-ie)*(B-N)/.001}return this.getValueAtTime((H-((B-N)%H+B))/this.comp.globalData.frameRate,0)}function T(M,D){if(!this.k)return this.pv;if(M=(M||.4)*.5,D=Math.floor(D||5),D<=1)return this.pv;var F=this.comp.renderedFrame/this.comp.globalData.frameRate,N=F-M,G=F+M,B=D>1?(G-N)/(D-1):1,H=0,O=0,V;this.pv.length?V=createTypedArray("float32",this.pv.length):V=0;for(var U;H<D;){if(U=this.getValueAtTime(N+H*B),this.pv.length)for(O=0;O<this.pv.length;O+=1)V[O]+=U[O];else V+=U;H+=1}if(this.pv.length)for(O=0;O<this.pv.length;O+=1)V[O]/=D;else V/=D;return V}function S(M){this._transformCachingAtTime||(this._transformCachingAtTime={v:new Matrix});var D=this._transformCachingAtTime.v;if(D.cloneFromProps(this.pre.props),this.appliedTransformations<1){var F=this.a.getValueAtTime(M);D.translate(-F[0]*this.a.mult,-F[1]*this.a.mult,F[2]*this.a.mult)}if(this.appliedTransformations<2){var N=this.s.getValueAtTime(M);D.scale(N[0]*this.s.mult,N[1]*this.s.mult,N[2]*this.s.mult)}if(this.sk&&this.appliedTransformations<3){var G=this.sk.getValueAtTime(M),B=this.sa.getValueAtTime(M);D.skewFromAxis(-G*this.sk.mult,B*this.sa.mult)}if(this.r&&this.appliedTransformations<4){var H=this.r.getValueAtTime(M);D.rotate(-H*this.r.mult)}else if(!this.r&&this.appliedTransformations<4){var O=this.rz.getValueAtTime(M),V=this.ry.getValueAtTime(M),U=this.rx.getValueAtTime(M),W=this.or.getValueAtTime(M);D.rotateZ(-O*this.rz.mult).rotateY(V*this.ry.mult).rotateX(U*this.rx.mult).rotateZ(-W[2]*this.or.mult).rotateY(W[1]*this.or.mult).rotateX(W[0]*this.or.mult)}if(this.data.p&&this.data.p.s){var K=this.px.getValueAtTime(M),Y=this.py.getValueAtTime(M);if(this.data.p.z){var ee=this.pz.getValueAtTime(M);D.translate(K*this.px.mult,Y*this.py.mult,-ee*this.pz.mult)}else D.translate(K*this.px.mult,Y*this.py.mult,0)}else{var oe=this.p.getValueAtTime(M);D.translate(oe[0]*this.p.mult,oe[1]*this.p.mult,-oe[2]*this.p.mult)}return D}function E(){return this.v.clone(new Matrix)}var C=TransformPropertyFactory.getTransformProperty;TransformPropertyFactory.getTransformProperty=function(M,D,F){var N=C(M,D,F);return N.dynamicProperties.length?N.getValueAtTime=S.bind(N):N.getValueAtTime=E.bind(N),N.setGroupProperty=expressionHelpers.setGroupProperty,N};var _=PropertyFactory.getProp;PropertyFactory.getProp=function(M,D,F,N,G){var B=_(M,D,F,N,G);B.kf?B.getValueAtTime=expressionHelpers.getValueAtTime.bind(B):B.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(B),B.setGroupProperty=expressionHelpers.setGroupProperty,B.loopOut=o,B.loopIn=u,B.smooth=T,B.getVelocityAtTime=expressionHelpers.getVelocityAtTime.bind(B),B.getSpeedAtTime=expressionHelpers.getSpeedAtTime.bind(B),B.numKeys=D.a===1?D.k.length:0,B.propertyIndex=D.ix;var H=0;return F!==0&&(H=createTypedArray("float32",D.a===1?D.k[0].s.length:D.k.length)),B._cachingAtTime={lastFrame:initialDefaultFrame,lastIndex:0,value:H},expressionHelpers.searchExpressions(M,D,B),B.k&&G.addDynamicProperty(B),B};function P(M){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shapePool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),M*=this.elem.globalData.frameRate,M-=this.offsetTime,M!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime<M?this._caching.lastIndex:0,this._cachingAtTime.lastTime=M,this.interpolateShape(M,this._cachingAtTime.shapeValue,this._cachingAtTime)),this._cachingAtTime.shapeValue}var R=ShapePropertyFactory.getConstructorFunction(),I=ShapePropertyFactory.getKeyframedConstructorFunction();function L(){}L.prototype={vertices:function(D,F){this.k&&this.getValue();var N=this.v;F!==void 0&&(N=this.getValueAtTime(F,0));var G,B=N._length,H=N[D],O=N.v,V=createSizedArray(B);for(G=0;G<B;G+=1)D==="i"||D==="o"?V[G]=[H[G][0]-O[G][0],H[G][1]-O[G][1]]:V[G]=[H[G][0],H[G][1]];return V},points:function(D){return this.vertices("v",D)},inTangents:function(D){return this.vertices("i",D)},outTangents:function(D){return this.vertices("o",D)},isClosed:function(){return this.v.c},pointOnPath:function(D,F){var N=this.v;F!==void 0&&(N=this.getValueAtTime(F,0)),this._segmentsLength||(this._segmentsLength=bez.getSegmentsLength(N));for(var G=this._segmentsLength,B=G.lengths,H=G.totalLength*D,O=0,V=B.length,U=0,W;O<V;){if(U+B[O].addedLength>H){var K=O,Y=N.c&&O===V-1?0:O+1,ee=(H-U)/B[O].addedLength;W=bez.getPointInSegment(N.v[K],N.v[Y],N.o[K],N.i[Y],ee,B[O]);break}else U+=B[O].addedLength;O+=1}return W||(W=N.c?[N.v[0][0],N.v[0][1]]:[N.v[N._length-1][0],N.v[N._length-1][1]]),W},vectorOnPath:function(D,F,N){D==1?D=this.v.c:D==0&&(D=.999);var G=this.pointOnPath(D,F),B=this.pointOnPath(D+.001,F),H=B[0]-G[0],O=B[1]-G[1],V=Math.sqrt(Math.pow(H,2)+Math.pow(O,2));if(V===0)return[0,0];var U=N==="tangent"?[H/V,O/V]:[-O/V,H/V];return U},tangentOnPath:function(D,F){return this.vectorOnPath(D,F,"tangent")},normalOnPath:function(D,F){return this.vectorOnPath(D,F,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([L],R),extendPrototype([L],I),I.prototype.getValueAtTime=P,I.prototype.initiateExpression=ExpressionManager.initiateExpression;var j=ShapePropertyFactory.getShapeProp;ShapePropertyFactory.getShapeProp=function(M,D,F,N,G){var B=j(M,D,F,N,G);return B.propertyIndex=D.ix,B.lock=!1,F===3?expressionHelpers.searchExpressions(M,D.pt,B):F===4&&expressionHelpers.searchExpressions(M,D.ks,B),B.k&&M.addDynamicProperty(B),B}}function initialize$1(){addPropertyDecorator()}function addDecorator(){function o(){return this.data.d.x?(this.calculateExpression=ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this),this.addEffect(this.getExpressionValue.bind(this)),!0):null}TextProperty.prototype.getExpressionValue=function(u,T){var S=this.calculateExpression(T);if(u.t!==S){var E={};return this.copyData(E,u),E.t=S.toString(),E.__complete=!1,E}return u},TextProperty.prototype.searchProperty=function(){var u=this.searchKeyframes(),T=this.searchExpressions();return this.kf=u||T,this.kf},TextProperty.prototype.searchExpressions=o}function initialize(){addDecorator()}function SVGComposableEffect(){}SVGComposableEffect.prototype={createMergeNode:function o(u,T){var S=createNS("feMerge");S.setAttribute("result",u);var E,C;for(C=0;C<T.length;C+=1)E=createNS("feMergeNode"),E.setAttribute("in",T[C]),S.appendChild(E),S.appendChild(E);return S}};var linearFilterValue="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0";function SVGTintFilter(o,u,T,S,E){this.filterManager=u;var C=createNS("feColorMatrix");C.setAttribute("type","matrix"),C.setAttribute("color-interpolation-filters","linearRGB"),C.setAttribute("values",linearFilterValue+" 1 0"),this.linearFilter=C,C.setAttribute("result",S+"_tint_1"),o.appendChild(C),C=createNS("feColorMatrix"),C.setAttribute("type","matrix"),C.setAttribute("color-interpolation-filters","sRGB"),C.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),C.setAttribute("result",S+"_tint_2"),o.appendChild(C),this.matrixFilter=C;var _=this.createMergeNode(S,[E,S+"_tint_1",S+"_tint_2"]);o.appendChild(_)}extendPrototype([SVGComposableEffect],SVGTintFilter),SVGTintFilter.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){var u=this.filterManager.effectElements[0].p.v,T=this.filterManager.effectElements[1].p.v,S=this.filterManager.effectElements[2].p.v/100;this.linearFilter.setAttribute("values",linearFilterValue+" "+S+" 0"),this.matrixFilter.setAttribute("values",T[0]-u[0]+" 0 0 0 "+u[0]+" "+(T[1]-u[1])+" 0 0 0 "+u[1]+" "+(T[2]-u[2])+" 0 0 0 "+u[2]+" 0 0 0 1 0")}};function SVGFillFilter(o,u,T,S){this.filterManager=u;var E=createNS("feColorMatrix");E.setAttribute("type","matrix"),E.setAttribute("color-interpolation-filters","sRGB"),E.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),E.setAttribute("result",S),o.appendChild(E),this.matrixFilter=E}SVGFillFilter.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){var u=this.filterManager.effectElements[2].p.v,T=this.filterManager.effectElements[6].p.v;this.matrixFilter.setAttribute("values","0 0 0 0 "+u[0]+" 0 0 0 0 "+u[1]+" 0 0 0 0 "+u[2]+" 0 0 0 "+T+" 0")}};function SVGStrokeEffect(o,u,T){this.initialized=!1,this.filterManager=u,this.elem=T,this.paths=[]}SVGStrokeEffect.prototype.initialize=function(){var o=this.elem.layerElement.children||this.elem.layerElement.childNodes,u,T,S,E;for(this.filterManager.effectElements[1].p.v===1?(E=this.elem.maskManager.masksProperties.length,S=0):(S=this.filterManager.effectElements[0].p.v-1,E=S+1),T=createNS("g"),T.setAttribute("fill","none"),T.setAttribute("stroke-linecap","round"),T.setAttribute("stroke-dashoffset",1),S;S<E;S+=1)u=createNS("path"),T.appendChild(u),this.paths.push({p:u,m:S});if(this.filterManager.effectElements[10].p.v===3){var C=createNS("mask"),_=createElementID();C.setAttribute("id",_),C.setAttribute("mask-type","alpha"),C.appendChild(T),this.elem.globalData.defs.appendChild(C);var P=createNS("g");for(P.setAttribute("mask","url("+getLocationHref()+"#"+_+")");o[0];)P.appendChild(o[0]);this.elem.layerElement.appendChild(P),this.masker=C,T.setAttribute("stroke","#fff")}else if(this.filterManager.effectElements[10].p.v===1||this.filterManager.effectElements[10].p.v===2){if(this.filterManager.effectElements[10].p.v===2)for(o=this.elem.layerElement.children||this.elem.layerElement.childNodes;o.length;)this.elem.layerElement.removeChild(o[0]);this.elem.layerElement.appendChild(T),this.elem.layerElement.removeAttribute("mask"),T.setAttribute("stroke","#fff")}this.initialized=!0,this.pathMasker=T},SVGStrokeEffect.prototype.renderFrame=function(o){this.initialized||this.initialize();var u,T=this.paths.length,S,E;for(u=0;u<T;u+=1)if(this.paths[u].m!==-1&&(S=this.elem.maskManager.viewData[this.paths[u].m],E=this.paths[u].p,(o||this.filterManager._mdf||S.prop._mdf)&&E.setAttribute("d",S.lastPath),o||this.filterManager.effectElements[9].p._mdf||this.filterManager.effectElements[4].p._mdf||this.filterManager.effectElements[7].p._mdf||this.filterManager.effectElements[8].p._mdf||S.prop._mdf)){var C;if(this.filterManager.effectElements[7].p.v!==0||this.filterManager.effectElements[8].p.v!==100){var _=Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)*.01,P=Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)*.01,R=E.getTotalLength();C="0 0 0 "+R*_+" ";var I=R*(P-_),L=1+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v*.01,j=Math.floor(I/L),M;for(M=0;M<j;M+=1)C+="1 "+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v*.01+" ";C+="0 "+R*10+" 0 0"}else C="1 "+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v*.01;E.setAttribute("stroke-dasharray",C)}if((o||this.filterManager.effectElements[4].p._mdf)&&this.pathMasker.setAttribute("stroke-width",this.filterManager.effectElements[4].p.v*2),(o||this.filterManager.effectElements[6].p._mdf)&&this.pathMasker.setAttribute("opacity",this.filterManager.effectElements[6].p.v),(this.filterManager.effectElements[10].p.v===1||this.filterManager.effectElements[10].p.v===2)&&(o||this.filterManager.effectElements[3].p._mdf)){var D=this.filterManager.effectElements[3].p.v;this.pathMasker.setAttribute("stroke","rgb("+bmFloor(D[0]*255)+","+bmFloor(D[1]*255)+","+bmFloor(D[2]*255)+")")}};function SVGTritoneFilter(o,u,T,S){this.filterManager=u;var E=createNS("feColorMatrix");E.setAttribute("type","matrix"),E.setAttribute("color-interpolation-filters","linearRGB"),E.setAttribute("values","0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"),o.appendChild(E);var C=createNS("feComponentTransfer");C.setAttribute("color-interpolation-filters","sRGB"),C.setAttribute("result",S),this.matrixFilter=C;var _=createNS("feFuncR");_.setAttribute("type","table"),C.appendChild(_),this.feFuncR=_;var P=createNS("feFuncG");P.setAttribute("type","table"),C.appendChild(P),this.feFuncG=P;var R=createNS("feFuncB");R.setAttribute("type","table"),C.appendChild(R),this.feFuncB=R,o.appendChild(C)}SVGTritoneFilter.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){var u=this.filterManager.effectElements[0].p.v,T=this.filterManager.effectElements[1].p.v,S=this.filterManager.effectElements[2].p.v,E=S[0]+" "+T[0]+" "+u[0],C=S[1]+" "+T[1]+" "+u[1],_=S[2]+" "+T[2]+" "+u[2];this.feFuncR.setAttribute("tableValues",E),this.feFuncG.setAttribute("tableValues",C),this.feFuncB.setAttribute("tableValues",_)}};function SVGProLevelsFilter(o,u,T,S){this.filterManager=u;var E=this.filterManager.effectElements,C=createNS("feComponentTransfer");(E[10].p.k||E[10].p.v!==0||E[11].p.k||E[11].p.v!==1||E[12].p.k||E[12].p.v!==1||E[13].p.k||E[13].p.v!==0||E[14].p.k||E[14].p.v!==1)&&(this.feFuncR=this.createFeFunc("feFuncR",C)),(E[17].p.k||E[17].p.v!==0||E[18].p.k||E[18].p.v!==1||E[19].p.k||E[19].p.v!==1||E[20].p.k||E[20].p.v!==0||E[21].p.k||E[21].p.v!==1)&&(this.feFuncG=this.createFeFunc("feFuncG",C)),(E[24].p.k||E[24].p.v!==0||E[25].p.k||E[25].p.v!==1||E[26].p.k||E[26].p.v!==1||E[27].p.k||E[27].p.v!==0||E[28].p.k||E[28].p.v!==1)&&(this.feFuncB=this.createFeFunc("feFuncB",C)),(E[31].p.k||E[31].p.v!==0||E[32].p.k||E[32].p.v!==1||E[33].p.k||E[33].p.v!==1||E[34].p.k||E[34].p.v!==0||E[35].p.k||E[35].p.v!==1)&&(this.feFuncA=this.createFeFunc("feFuncA",C)),(this.feFuncR||this.feFuncG||this.feFuncB||this.feFuncA)&&(C.setAttribute("color-interpolation-filters","sRGB"),o.appendChild(C)),(E[3].p.k||E[3].p.v!==0||E[4].p.k||E[4].p.v!==1||E[5].p.k||E[5].p.v!==1||E[6].p.k||E[6].p.v!==0||E[7].p.k||E[7].p.v!==1)&&(C=createNS("feComponentTransfer"),C.setAttribute("color-interpolation-filters","sRGB"),C.setAttribute("result",S),o.appendChild(C),this.feFuncRComposed=this.createFeFunc("feFuncR",C),this.feFuncGComposed=this.createFeFunc("feFuncG",C),this.feFuncBComposed=this.createFeFunc("feFuncB",C))}SVGProLevelsFilter.prototype.createFeFunc=function(o,u){var T=createNS(o);return T.setAttribute("type","table"),u.appendChild(T),T},SVGProLevelsFilter.prototype.getTableValue=function(o,u,T,S,E){for(var C=0,_=256,P,R=Math.min(o,u),I=Math.max(o,u),L=Array.call(null,{length:_}),j,M=0,D=E-S,F=u-o;C<=256;)P=C/256,P<=R?j=F<0?E:S:P>=I?j=F<0?S:E:j=S+D*Math.pow((P-o)/F,1/T),L[M]=j,M+=1,C+=256/(_-1);return L.join(" ")},SVGProLevelsFilter.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){var u,T=this.filterManager.effectElements;this.feFuncRComposed&&(o||T[3].p._mdf||T[4].p._mdf||T[5].p._mdf||T[6].p._mdf||T[7].p._mdf)&&(u=this.getTableValue(T[3].p.v,T[4].p.v,T[5].p.v,T[6].p.v,T[7].p.v),this.feFuncRComposed.setAttribute("tableValues",u),this.feFuncGComposed.setAttribute("tableValues",u),this.feFuncBComposed.setAttribute("tableValues",u)),this.feFuncR&&(o||T[10].p._mdf||T[11].p._mdf||T[12].p._mdf||T[13].p._mdf||T[14].p._mdf)&&(u=this.getTableValue(T[10].p.v,T[11].p.v,T[12].p.v,T[13].p.v,T[14].p.v),this.feFuncR.setAttribute("tableValues",u)),this.feFuncG&&(o||T[17].p._mdf||T[18].p._mdf||T[19].p._mdf||T[20].p._mdf||T[21].p._mdf)&&(u=this.getTableValue(T[17].p.v,T[18].p.v,T[19].p.v,T[20].p.v,T[21].p.v),this.feFuncG.setAttribute("tableValues",u)),this.feFuncB&&(o||T[24].p._mdf||T[25].p._mdf||T[26].p._mdf||T[27].p._mdf||T[28].p._mdf)&&(u=this.getTableValue(T[24].p.v,T[25].p.v,T[26].p.v,T[27].p.v,T[28].p.v),this.feFuncB.setAttribute("tableValues",u)),this.feFuncA&&(o||T[31].p._mdf||T[32].p._mdf||T[33].p._mdf||T[34].p._mdf||T[35].p._mdf)&&(u=this.getTableValue(T[31].p.v,T[32].p.v,T[33].p.v,T[34].p.v,T[35].p.v),this.feFuncA.setAttribute("tableValues",u))}};function SVGDropShadowEffect(o,u,T,S,E){var C=u.container.globalData.renderConfig.filterSize,_=u.data.fs||C;o.setAttribute("x",_.x||C.x),o.setAttribute("y",_.y||C.y),o.setAttribute("width",_.width||C.width),o.setAttribute("height",_.height||C.height),this.filterManager=u;var P=createNS("feGaussianBlur");P.setAttribute("in","SourceAlpha"),P.setAttribute("result",S+"_drop_shadow_1"),P.setAttribute("stdDeviation","0"),this.feGaussianBlur=P,o.appendChild(P);var R=createNS("feOffset");R.setAttribute("dx","25"),R.setAttribute("dy","0"),R.setAttribute("in",S+"_drop_shadow_1"),R.setAttribute("result",S+"_drop_shadow_2"),this.feOffset=R,o.appendChild(R);var I=createNS("feFlood");I.setAttribute("flood-color","#00ff00"),I.setAttribute("flood-opacity","1"),I.setAttribute("result",S+"_drop_shadow_3"),this.feFlood=I,o.appendChild(I);var L=createNS("feComposite");L.setAttribute("in",S+"_drop_shadow_3"),L.setAttribute("in2",S+"_drop_shadow_2"),L.setAttribute("operator","in"),L.setAttribute("result",S+"_drop_shadow_4"),o.appendChild(L);var j=this.createMergeNode(S,[S+"_drop_shadow_4",E]);o.appendChild(j)}extendPrototype([SVGComposableEffect],SVGDropShadowEffect),SVGDropShadowEffect.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){if((o||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute("stdDeviation",this.filterManager.effectElements[4].p.v/4),o||this.filterManager.effectElements[0].p._mdf){var u=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute("flood-color",rgbToHex(Math.round(u[0]*255),Math.round(u[1]*255),Math.round(u[2]*255)))}if((o||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute("flood-opacity",this.filterManager.effectElements[1].p.v/255),o||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var T=this.filterManager.effectElements[3].p.v,S=(this.filterManager.effectElements[2].p.v-90)*degToRads,E=T*Math.cos(S),C=T*Math.sin(S);this.feOffset.setAttribute("dx",E),this.feOffset.setAttribute("dy",C)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(o,u,T){this.initialized=!1,this.filterManager=u,this.filterElem=o,this.elem=T,T.matteElement=createNS("g"),T.matteElement.appendChild(T.layerElement),T.matteElement.appendChild(T.transformedElement),T.baseElement=T.matteElement}SVGMatte3Effect.prototype.findSymbol=function(o){for(var u=0,T=_svgMatteSymbols.length;u<T;){if(_svgMatteSymbols[u]===o)return _svgMatteSymbols[u];u+=1}return null},SVGMatte3Effect.prototype.replaceInParent=function(o,u){var T=o.layerElement.parentNode;if(T){for(var S=T.children,E=0,C=S.length;E<C&&S[E]!==o.layerElement;)E+=1;var _;E<=C-2&&(_=S[E+1]);var P=createNS("use");P.setAttribute("href","#"+u),_?T.insertBefore(P,_):T.appendChild(P)}},SVGMatte3Effect.prototype.setElementAsMask=function(o,u){if(!this.findSymbol(u)){var T=createElementID(),S=createNS("mask");S.setAttribute("id",u.layerId),S.setAttribute("mask-type","alpha"),_svgMatteSymbols.push(u);var E=o.globalData.defs;E.appendChild(S);var C=createNS("symbol");C.setAttribute("id",T),this.replaceInParent(u,T),C.appendChild(u.layerElement),E.appendChild(C);var _=createNS("use");_.setAttribute("href","#"+T),S.appendChild(_),u.data.hd=!1,u.show()}o.setMatte(u.layerId)},SVGMatte3Effect.prototype.initialize=function(){for(var o=this.filterManager.effectElements[0].p.v,u=this.elem.comp.elements,T=0,S=u.length;T<S;)u[T]&&u[T].data.ind===o&&this.setElementAsMask(this.elem,u[T]),T+=1;this.initialized=!0},SVGMatte3Effect.prototype.renderFrame=function(){this.initialized||this.initialize()};function SVGGaussianBlurEffect(o,u,T,S){o.setAttribute("x","-100%"),o.setAttribute("y","-100%"),o.setAttribute("width","300%"),o.setAttribute("height","300%"),this.filterManager=u;var E=createNS("feGaussianBlur");E.setAttribute("result",S),o.appendChild(E),this.feGaussianBlur=E}SVGGaussianBlurEffect.prototype.renderFrame=function(o){if(o||this.filterManager._mdf){var u=.3,T=this.filterManager.effectElements[0].p.v*u,S=this.filterManager.effectElements[1].p.v,E=S==3?0:T,C=S==2?0:T;this.feGaussianBlur.setAttribute("stdDeviation",E+" "+C);var _=this.filterManager.effectElements[2].p.v==1?"wrap":"duplicate";this.feGaussianBlur.setAttribute("edgeMode",_)}};function TransformEffect(){}TransformEffect.prototype.init=function(o){this.effectsManager=o,this.type=effectTypes.TRANSFORM_EFFECT,this.matrix=new Matrix,this.opacity=-1,this._mdf=!1,this._opMdf=!1},TransformEffect.prototype.renderFrame=function(o){if(this._opMdf=!1,this._mdf=!1,o||this.effectsManager._mdf){var u=this.effectsManager.effectElements,T=u[0].p.v,S=u[1].p.v,E=u[2].p.v===1,C=u[3].p.v,_=E?C:u[4].p.v,P=u[5].p.v,R=u[6].p.v,I=u[7].p.v;this.matrix.reset(),this.matrix.translate(-T[0],-T[1],T[2]),this.matrix.scale(_*.01,C*.01,1),this.matrix.rotate(-I*degToRads),this.matrix.skewFromAxis(-P*degToRads,(R+90)*degToRads),this.matrix.translate(S[0],S[1],0),this._mdf=!0,this.opacity!==u[8].p.v&&(this.opacity=u[8].p.v,this._opMdf=!0)}};function SVGTransformEffect(o,u){this.init(u)}extendPrototype([TransformEffect],SVGTransformEffect);function CVTransformEffect(o){this.init(o)}return extendPrototype([TransformEffect],CVTransformEffect),registerRenderer("canvas",CanvasRenderer),registerRenderer("html",HybridRenderer),registerRenderer("svg",SVGRenderer),ShapeModifiers.registerModifier("tm",TrimModifier),ShapeModifiers.registerModifier("pb",PuckerAndBloatModifier),ShapeModifiers.registerModifier("rp",RepeaterModifier),ShapeModifiers.registerModifier("rd",RoundCornersModifier),ShapeModifiers.registerModifier("zz",ZigZagModifier),ShapeModifiers.registerModifier("op",OffsetPathModifier),setExpressionsPlugin(Expressions),setExpressionInterfaces(getInterface),initialize$1(),initialize(),registerEffect$1(20,SVGTintFilter,!0),registerEffect$1(21,SVGFillFilter,!0),registerEffect$1(22,SVGStrokeEffect,!1),registerEffect$1(23,SVGTritoneFilter,!0),registerEffect$1(24,SVGProLevelsFilter,!0),registerEffect$1(25,SVGDropShadowEffect,!0),registerEffect$1(28,SVGMatte3Effect,!1),registerEffect$1(29,SVGGaussianBlurEffect,!0),registerEffect$1(35,SVGTransformEffect,!1),registerEffect(35,CVTransformEffect),lottie})}
322)(lottie$1,lottie$1.exports);var lottieExports=lottie$1.exports;const lottie=getDefaultExportFromCjs(lottieExports);function _arrayLikeToArray(o,u){(u==null||u>o.length)&&(u=o.length);for(var T=0,S=Array(u);T<u;T++)S[T]=o[T];return S}function _arrayWithHoles(o){if(Array.isArray(o))return o}function _defineProperty(o,u,T){return(u=_toPropertyKey(u))in o?Object.defineProperty(o,u,{value:T,enumerable:!0,configurable:!0,writable:!0}):o[u]=T,o}function _iterableToArrayLimit(o,u){var T=o==null?null:typeof Symbol<"u"&&o[Symbol.iterator]||o["@@iterator"];if(T!=null){var S,E,C,_,P=[],R=!0,I=!1;try{if(C=(T=T.call(o)).next,u!==0)for(;!(R=(S=C.call(T)).done)&&(P.push(S.value),P.length!==u);R=!0);}catch(L){I=!0,E=L}finally{try{if(!R&&T.return!=null&&(_=T.return(),Object(_)!==_))return}finally{if(I)throw E}}return P}}function _nonIterableRest(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. 323In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ownKeys(o,u){var T=Object.keys(o);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(o);u&&(S=S.filter(function(E){return Object.getOwnPropertyDescriptor(o,E).enumerable})),T.push.apply(T,S)}return T}function _objectSpread2(o){for(var u=1;u<arguments.length;u++){var T=arguments[u]!=null?arguments[u]:{};u%2?ownKeys(Object(T),!0).forEach(function(S){_defineProperty(o,S,T[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(T)):ownKeys(Object(T)).forEach(function(S){Object.defineProperty(o,S,Object.getOwnPropertyDescriptor(T,S))})}return o}function _objectWithoutProperties(o,u){if(o==null)return{};var T,S,E=_objectWithoutPropertiesLoose(o,u);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(o);for(S=0;S<C.length;S++)T=C[S],u.includes(T)||{}.propertyIsEnumerable.call(o,T)&&(E[T]=o[T])}return E}function _objectWithoutPropertiesLoose(o,u){if(o==null)return{};var T={};for(var S in o)if({}.hasOwnProperty.call(o,S)){if(u.includes(S))continue;T[S]=o[S]}return T}function _slicedToArray(o,u){return _arrayWithHoles(o)||_iterableToArrayLimit(o,u)||_unsupportedIterableToArray(o,u)||_nonIterableRest()}function _toPrimitive(o,u){if(typeof o!="object"||!o)return o;var T=o[Symbol.toPrimitive];if(T!==void 0){var S=T.call(o,u);if(typeof S!="object")return S;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(o)}function _toPropertyKey(o){var u=_toPrimitive(o,"string");return typeof u=="symbol"?u:u+""}function _unsupportedIterableToArray(o,u){if(o){if(typeof o=="string")return _arrayLikeToArray(o,u);var T={}.toString.call(o).slice(8,-1);return T==="Object"&&o.constructor&&(T=o.constructor.name),T==="Map"||T==="Set"?Array.from(o):T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T)?_arrayLikeToArray(o,u):void 0}}var _excluded$1=["animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","name","assetsPath","rendererSettings"],useLottie=function o(u,T){var S=u.animationData,E=u.loop,C=u.autoplay,_=u.initialSegment,P=u.onComplete,R=u.onLoopComplete,I=u.onEnterFrame,L=u.onSegmentStart,j=u.onConfigReady,M=u.onDataReady,D=u.onDataFailed,F=u.onLoadedImages,N=u.onDOMLoaded,G=u.onDestroy;u.lottieRef,u.renderer,u.name,u.assetsPath,u.rendererSettings;var B=_objectWithoutProperties(u,_excluded$1),H=reactExports.useState(!1),O=_slicedToArray(H,2),V=O[0],U=O[1],W=reactExports.useRef(),K=reactExports.useRef(null),Y=function(){var ne;(ne=W.current)===null||ne===void 0||ne.play()},ee=function(){var ne;(ne=W.current)===null||ne===void 0||ne.stop()},oe=function(){var ne;(ne=W.current)===null||ne===void 0||ne.pause()},se=function(ne){var ue;(ue=W.current)===null||ue===void 0||ue.setSpeed(ne)},Q=function(ne,ue){var ce;(ce=W.current)===null||ce===void 0||ce.goToAndPlay(ne,ue)},ie=function(ne,ue){var ce;(ce=W.current)===null||ce===void 0||ce.goToAndStop(ne,ue)},ae=function(ne){var ue;(ue=W.current)===null||ue===void 0||ue.setDirection(ne)},re=function(ne,ue){var ce;(ce=W.current)===null||ce===void 0||ce.playSegments(ne,ue)},J=function(ne){var ue;(ue=W.current)===null||ue===void 0||ue.setSubframe(ne)},te=function(ne){var ue;return(ue=W.current)===null||ue===void 0?void 0:ue.getDuration(ne)},Z=function(){var ne;(ne=W.current)===null||ne===void 0||ne.destroy(),W.current=void 0},X=function(){var ne=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ue;if(K.current){(ue=W.current)===null||ue===void 0||ue.destroy();
vendor: 4,509 bytes, lines 323-324
323var ce=_objectSpread2(_objectSpread2(_objectSpread2({},u),ne),{},{container:K.current});return W.current=lottie.loadAnimation(ce),U(!!W.current),function(){var fe;(fe=W.current)===null||fe===void 0||fe.destroy(),W.current=void 0}}};reactExports.useEffect(function(){var he=X();return function(){return he==null?void 0:he()}},[S,E]),reactExports.useEffect(function(){W.current&&(W.current.autoplay=!!C)},[C]),reactExports.useEffect(function(){if(W.current){if(!_){W.current.resetSegments(!0);return}!Array.isArray(_)||!_.length||((W.current.currentRawFrame<_[0]||W.current.currentRawFrame>_[1])&&(W.current.currentRawFrame=_[0]),W.current.setSegment(_[0],_[1]))}},[_]),reactExports.useEffect(function(){var he=[{name:"complete",handler:P},{name:"loopComplete",handler:R},{name:"enterFrame",handler:I},{name:"segmentStart",handler:L},{name:"config_ready",handler:j},{name:"data_ready",handler:M},{name:"data_failed",handler:D},{name:"loaded_images",handler:F},{name:"DOMLoaded",handler:N},{name:"destroy",handler:G}],ne=he.filter(function(ce){return ce.handler!=null});if(ne.length){var ue=ne.map(function(ce){var fe;return(fe=W.current)===null||fe===void 0||fe.addEventListener(ce.name,ce.handler),function(){var ve;(ve=W.current)===null||ve===void 0||ve.removeEventListener(ce.name,ce.handler)}});return function(){ue.forEach(function(ce){return ce()})}}},[P,R,I,L,j,M,D,F,N,G]);var de=React$1.createElement("div",_objectSpread2({style:T,ref:K},B));return{View:de,play:Y,stop:ee,pause:oe,setSpeed:se,goToAndStop:ie,goToAndPlay:Q,setDirection:ae,playSegments:re,setSubframe:J,getDuration:te,destroy:Z,animationContainerRef:K,animationLoaded:V,animationItem:W.current}};function getContainerVisibility(o){var u=o.getBoundingClientRect(),T=u.top,S=u.height,E=window.innerHeight-T,C=window.innerHeight+S;return E/C}function getContainerCursorPosition(o,u,T){var S=o.getBoundingClientRect(),E=S.top,C=S.left,_=S.width,P=S.height,R=(u-C)/_,I=(T-E)/P;return{x:R,y:I}}var useInitInteractivity=function o(u){var T=u.wrapperRef,S=u.animationItem,E=u.mode,C=u.actions;reactExports.useEffect(function(){var _=T.current;if(!(!_||!S||!C.length)){S.stop();var P=function(){var L=null,j=function(){var D=getContainerVisibility(_),F=C.find(function(G){var B=G.visibility;return B&&D>=B[0]&&D<=B[1]});if(F){if(F.type==="seek"&&F.visibility&&F.frames.length===2){var N=F.frames[0]+Math.ceil((D-F.visibility[0])/(F.visibility[1]-F.visibility[0])*F.frames[1]);//! goToAndStop must be relative to the start of the current segment 324S.goToAndStop(N-S.firstFrame-1,!0)}F.type==="loop"&&(L===null||L!==F.frames||S.isPaused)&&(S.playSegments(F.frames,!0),L=F.frames),F.type==="play"&&S.isPaused&&(S.resetSegments(!0),S.play()),F.type==="stop"&&S.goToAndStop(F.frames[0]-S.firstFrame-1,!0)}};return document.addEventListener("scroll",j),function(){document.removeEventListener("scroll",j)}},R=function(){var L=function(F,N){var G=F,B=N;if(G!==-1&&B!==-1){var H=getContainerCursorPosition(_,G,B);G=H.x,B=H.y}var O=C.find(function(W){var K=W.position;return K&&Array.isArray(K.x)&&Array.isArray(K.y)?G>=K.x[0]&&G<=K.x[1]&&B>=K.y[0]&&B<=K.y[1]:K&&!Number.isNaN(K.x)&&!Number.isNaN(K.y)?G===K.x&&B===K.y:!1});if(O){if(O.type==="seek"&&O.position&&Array.isArray(O.position.x)&&Array.isArray(O.position.y)&&O.frames.length===2){var V=(G-O.position.x[0])/(O.position.x[1]-O.position.x[0]),U=(B-O.position.y[0])/(O.position.y[1]-O.position.y[0]);S.playSegments(O.frames,!0),S.goToAndStop(Math.ceil((V+U)/2*(O.frames[1]-O.frames[0])),!0)}O.type==="loop"&&S.playSegments(O.frames,!0),O.type==="play"&&(S.isPaused&&S.resetSegments(!1),S.playSegments(O.frames)),O.type==="stop"&&S.goToAndStop(O.frames[0],!0)}},j=function(F){L(F.clientX,F.clientY)},M=function(){L(-1,-1)};return _.addEventListener("mousemove",j),_.addEventListener("mouseout",M),function(){_.removeEventListener("mousemove",j),_.removeEventListener("mouseout",M)}};switch(E){case"scroll":return P();case"cursor":return R()}}},[E,S])},useLottieInteractivity=function o(u){var T=u.actions,S=u.mode,E=u.lottieObj,C=E.animationItem,_=E.View,P=E.animationContainerRef;return useInitInteractivity({actions:T,animationItem:C,mode:S,wrapperRef:P}),_},_excluded=["style","interactivity"],Lottie=function o(u){var T,S,E,C=u.style,_=u.interactivity,P=_objectWithoutProperties(u,_excluded),R=useLottie(P,C),I=R.View,L=R.play,j=R.stop,M=R.pause,D=R.setSpeed,F=R.goToAndStop,N=R.goToAndPlay,G=R.setDirection,B=R.playSegments,H=R.setSubframe,O=R.getDuration,V=R.destroy,U=R.animationContainerRef,W=
324R.animationLoaded,K=R.animationItem;return reactExports.useEffect(function(){u.lottieRef&&(u.lottieRef.current={play:L,stop:j,pause:M,setSpeed:D,goToAndPlay:N,goToAndStop:F,setDirection:G,playSegments:B,setSubframe:H,getDuration:O,destroy:V,animationContainerRef:U,animationLoaded:W,animationItem:K})},[(T=u.lottieRef)===null||T===void 0?void 0:T.current]),useLottieInteractivity({lottieObj:{View:I,play:L,stop:j,pause:M,setSpeed:D,goToAndStop:F,goToAndPlay:N,setDirection:G,playSegments:B,setSubframe:H,getDuration:O,destroy:V,animationContainerRef:U,animationLoaded:W,animationItem:K},actions:(S=_==null?void 0:_.actions)!==null&&S!==void 0?S:[],mode:(E=_==null?void 0:_.mode)!==null&&E!==void 0?E:"scroll"})};function GlobalEffectOverlay(){const{currentEffect:o,stopEffect:u}=useEffectSystem(),[T,S]=reactExports.useState(null),[E,C]=reactExports.useState(!1),[_,P]=reactExports.useState(null);if(reactExports.useEffect(()=>{if(!o){S(null),P(null);return}const{config:j}=o;j.type===EFFECT_TYPES.LOTTIE&&(C(!0),P(null),fetch(j.src).then(M=>{if(!M.ok)throw new Error(`Failed to load: ${j.src}`);return M.json()}).then(M=>{S(M),C(!1)}).catch(M=>{console.error("[GlobalEffectOverlay] Error loading animation:",M),P(M.message),C(!1)}))},[o]),!o)return null;const{config:R,name:I}=o,L=I==="COUNTDOWN";return jsxRuntimeExports.jsxs("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:9999,backdropFilter:L?"blur(10px)":"none",backgroundColor:L?"rgba(0, 0, 0, 0.6)":"transparent",pointerEvents:L?"auto":"none",transition:"all 0.3s ease",display:"flex",alignItems:"center",justifyContent:"center"},children:[R.type===EFFECT_TYPES.LOTTIE&&T&&jsxRuntimeExports.jsx(Lottie,{animationData:T,loop:!1,autoplay:!0,onComplete:u,style:{width:"100%",height:"100%",maxWidth:"600px",maxHeight:"600px",filter:L?"drop-shadow(0 0 20px rgba(255,255,255,0.5))":"none"}}),R.type===EFFECT_TYPES.VIDEO&&jsxRuntimeExports.jsx("video",{src:R.src,autoPlay:!0,muted:!0,onEnded:u,style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain"}}),E&&jsxRuntimeExports.jsx("div",{style:{color:"#fff",fontSize:"1.5rem",textShadow:"0 2px 4px rgba(0,0,0,0.5)",display:L?"block":"none"},children:"Loading..."})]})}const SEEN_KEY_PREFIX="admin_data_refresh_seen_";function AdminCopyRefreshBanner(){const{currentUser:o}=useAuth(),{subscription:u}=useSubscription(),[T,S]=reactExports.useState(!1),E=u==null?void 0:u.dataRefreshSignal;reactExports.useEffect(()=>{if(!(o!=null&&o.uid)||!E){S(!1);return}let P=null;try{P=localStorage.getItem(SEEN_KEY_PREFIX+o.uid)}catch{}S(!P||E>P)},[o==null?void 0:o.uid,E]);const C=()=>{if(o!=null&&o.uid&&E)try{localStorage.setItem(SEEN_KEY_PREFIX+o.uid,E)}catch{}S(!1)},_=()=>{C();try{sessionStorage.clear()}catch{}window.location.reload()};return T?jsxRuntimeExports.jsxs("div",{style:{position:"fixed",top:0,left:0,right:0,zIndex:1e4,background:"linear-gradient(90deg, #4f46e5, #7c3aed)",color:"#fff",padding:"10px 16px",display:"flex",alignItems:"center",justifyContent:"center",gap:12,flexWrap:"wrap",boxShadow:"0 2px 8px rgba(0,0,0,0.25)",fontSize:15},role:"status",children:[jsxRuntimeExports.jsx("span",{style:{fontWeight:600},children:"ð Quản trá» viên vừa chuyá»n dữ liá»u há»c táºp và o tà i khoản cá»§a bạn."}),jsxRuntimeExports.jsx("button",{onClick:_,style:{background:"#fff",color:"#4f46e5",border:"none",borderRadius:8,padding:"6px 16px",fontWeight:700,cursor:"pointer",fontSize:14},children:"Tải dữ liá»u má»i"}),jsxRuntimeExports.jsx("button",{onClick:C,"aria-label":"Äóng",style:{background:"transparent",color:"#fff",border:"none",fontSize:20,lineHeight:1,cursor:"pointer",padding:"0 4px"},children:"â"})]}):null}const RELOAD_FLAG="chunk_reload";function lazyRetry(o){return reactExports.lazy(()=>retryImport(o))}async function retryImport(o,u=3){try{const T=await o();try{sessionStorage.removeItem(RELOAD_FLAG)}catch{}return T}catch(T){if(T instanceof Error&&T.message==="CHUNK_LOAD_FAILED")throw T;if(u>0)return await new Promise(E=>setTimeout(E,1e3)),retryImport(o,u-1);let S=!0;try{S=sessionStorage.getItem(RELOAD_FLAG)==="1",S||sessionStorage.setItem(RELOAD_FLAG,"1")}catch{S=!0}throw S||window.location.reload(),new Error("CHUNK_LOAD_FAILED")}}const UpdateNotification=()=>{const o=useTheme(),u=useMediaQuery(o.breakpoints.down("sm")),[T,S]=reactExports.useState(null),[E,C]=reactExports.useState("HIDDEN");reactExports.useEffect(()=>{(async()=>
324{try{const M=Timestamp.now(),D=query(collection(db,"system_notifications"),where("isActive","==",!0),orderBy("createdAt","desc"),limit(5)),N=(await getDocs(D)).docs.map(G=>({id:G.id,...G.data()})).find(G=>{var V,U;const B=((V=G.startTime)==null?void 0:V.toMillis())||0,H=((U=G.endTime)==null?void 0:U.toMillis())||0,O=Date.now();return O>=B&&O<=H});if(N){const G=`notif_closed_${N.versionId||N.id}`;if(!localStorage.getItem(G)){if(N.mediaUrl&&N.mediaType!=="video"){const H=new Image;H.src=N.mediaUrl}S(N),C("MODAL")}}}catch(M){console.error("Lá»i check thông báo:",M)}})()},[]);const _=()=>{C("STICKER")},P=()=>{C("MODAL")},R=j=>{if(j.stopPropagation(),T){const M=`notif_closed_${T.versionId||T.id}`;localStorage.setItem(M,"true")}C("HIDDEN")},I=async()=>{if(T){const j=`notif_closed_${T.versionId||T.id}`;localStorage.setItem(j,"true")}window.location.reload()},L=()=>{if(T){const j=`notif_closed_${T.versionId||T.id}`;localStorage.setItem(j,"true")}T!=null&&T.actionUrl&&(window.location.href=T.actionUrl)};return!T||E==="HIDDEN"?null:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs(Dialog,{open:E==="MODAL",onClose:_,maxWidth:"sm",fullWidth:!0,fullScreen:u,scroll:"paper",sx:{"& .MuiDialog-paper":u?{m:0,borderRadius:0}:{borderRadius:2}},children:[jsxRuntimeExports.jsxs(DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",bgcolor:"#e3f2fd",py:{xs:1.5,sm:2},px:{xs:2,sm:3}},children:[jsxRuntimeExports.jsxs(Box,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:0},children:[jsxRuntimeExports.jsx(NotificationsActiveIcon,{color:"primary",sx:{flexShrink:0}}),jsxRuntimeExports.jsx(Typography,{variant:"h6",fontWeight:"bold",color:"primary",sx:{fontSize:{xs:"1.05rem",sm:"1.25rem"},overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:T.title})]}),jsxRuntimeExports.jsx(IconButton,{onClick:_,size:"small",sx:{flexShrink:0,ml:1},children:jsxRuntimeExports.jsx(CloseIcon,{})})]}),jsxRuntimeExports.jsxs(DialogContent,{dividers:!0,sx:{py:{xs:2,sm:3},px:{xs:2,sm:3}},children:[jsxRuntimeExports.jsx(Typography,{variant:"body1",sx:{mb:2,whiteSpace:"pre-line",fontSize:{xs:"0.9rem",sm:"1rem"}},children:T.description}),T.mediaUrl&&jsxRuntimeExports.jsx(Box,{sx:{mt:2,borderRadius:2,overflow:"hidden",border:"1px solid #eee"},children:T.mediaType==="video"?jsxRuntimeExports.jsxs("video",{controls:!0,width:"100%",autoPlay:!0,muted:!0,playsInline:!0,preload:"metadata",style:{display:"block"},children:[jsxRuntimeExports.jsx("source",{src:T.mediaUrl,type:"video/mp4"}),"Trình duyá»t không há» trợ video."]}):jsxRuntimeExports.jsx(Box,{sx:{position:"relative",aspectRatio:"16 / 9",bgcolor:"#f0f0f0"},children:jsxRuntimeExports.jsx(Box,{component:"img",src:T.mediaUrl,alt:"Update preview",loading:"eager",decoding:"async",fetchPriority:"high",onLoad:j=>{j.currentTarget.style.opacity="1"},sx:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover",display:"block",opacity:0,transition:"opacity .25s ease"}})})})]}),jsxRuntimeExports.jsxs(DialogActions,{sx:{p:2,pb:{xs:"max(16px, env(safe-area-inset-bottom))",sm:2},bgcolor:"#f5f5f5",flexDirection:{xs:"column-reverse",sm:"row"},gap:{xs:1,sm:0},"& > button":{width:{xs:"100%",sm:"auto"},m:{xs:0,sm:void 0}}},children:[T.actionUrl&&jsxRuntimeExports.jsx(Button,{onClick:L,variant:"outlined",color:"primary",fullWidth:u,children:"Thá» ngay"}),jsxRuntimeExports.jsx(Button,{onClick:I,variant:"contained",color:"primary",fullWidth:u,children:"Äã hiá»u (OK)"})]})]}),jsxRuntimeExports.jsx(Zoom,{in:E==="STICKER",children:jsxRuntimeExports.jsxs(Paper,{elevation:4,sx:{position:"fixed",bottom:{xs:"max(16px, env(safe-area-inset-bottom))",sm:24},left:{xs:12,sm:24},right:{xs:12,sm:"auto"},maxWidth:{xs:"calc(100% - 24px)",sm:320},zIndex:9999,borderRadius:"28px",bgcolor:"white",display:"flex",alignItems:"center",pr:1,cursor:"pointer",border:"2px solid #2196f3"},onClick:P,children:[jsxRuntimeExports.jsx(Fab,{color:"primary",size:"medium",sx:{boxShadow:"none",flexShrink:0},children:jsxRuntimeExports.jsx(NotificationsActiveIcon,{})}),jsxRuntimeExports.jsxs(Box,{sx:{ml:1.5,mr:1,minWidth:0,flex:1},children:[jsxRuntimeExports.jsx(Typography,{variant:"caption",fontWeight:"bold",color:"primary",display:"block",noWrap:!0,children:"Cáºp nháºt má»i!"}),jsxRuntimeExports.jsx(Typography,{variant:"caption",color:"text.secondary",noWrap:!0,sx:{display:"block"},children:"Xem chi tiết"})]}),jsxRuntimeExports.jsx(IconButton,{size:"small",onClick:R,sx:{bgcolor:"#eee",width:20,height:20,flexShrink:0,"&:hover":{bgcolor:"#ffcdd2",color:"#d32f2f"}},children:jsxRuntimeExports.jsx(CloseIcon,{sx:{fontSize:14}})})]})})]})},externalTools$3=[{category:"Phần má»m giảng dạy/quản lý",tools:[{name:"VnEdu",icon:"https://play-lh.googleusercontent.com/mwA7_AKSRV39zR1CbfCGkiMb3PxSQ_Ab5FINQeZs5Cfo20CyxJBwbc1Q7XzlReCqi8s",url:"https://vnedu.vn",altText:"VnEdu - Mạng giáo dục Viá»t Nam"},{name:"SMAS",icon:"https://play-lh.googleusercontent.com/5Vs6Mie-_t1zVJ3q__KwQWQUPx9MqQT5z23N337VmaUc5RLJ0UtwHfy6fJypbALYNAuY",url:"https://vtsmas.vn/auth/login",altText:"SMAS - Há» thá»ng quản lý nhà trưá»ng"}
324,{name:"CSDL Ngà nh GD",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://csdl.moet.gov.vn&size=128",url:"https://csdl.moet.gov.vn",altText:"CÆ¡ sá» dữ liá»u ngà nh Giáo dục"},{name:"Khan Academy",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://vi.khanacademy.org&size=128",url:"https://vi.khanacademy.org",altText:"Khan Academy - Há»c miá»
n phÃ"},{name:"PhET Colorado",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://phet.colorado.edu&size=128",url:"https://phet.colorado.edu/vi",altText:"PhET - Mô phá»ng Toán & Khoa há»c"},{name:"Wordwall",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://wordwall.net&size=128",url:"https://wordwall.net/vi",altText:"Wordwall - Trò chÆ¡i tương tác"},{name:"Quizizz",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://quizizz.com&size=128",url:"https://quizizz.com",altText:"Quizizz - Äánh giá gamification"},{name:"Kahoot",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://kahoot.com&size=128",url:"https://kahoot.com",altText:"Kahoot - Game há»c táºp"},{name:"Padlet",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://padlet.com&size=128",url:"https://padlet.com",altText:"Padlet - Bảng cá»ng tác"},{name:"Plickers",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://get.plickers.com&size=128",url:"https://get.plickers.com",altText:"Plickers - Trắc nghiá»m thẻ bà i"}]},{category:"Phần má»m AI",subcategories:[{name:"AI tá»ng hợp",tools:[{name:"Gemini",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://gemini.google.com&size=128",url:"https://gemini.google.com",altText:"Google Gemini"},{name:"ChatGPT",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://chatgpt.com&size=128",url:"https://chatgpt.com",altText:"ChatGPT - OpenAI"},{name:"Claude",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://claude.ai&size=128",url:"https://claude.ai",altText:"Claude AI - Anthropic"},{name:"NotebookLM",icon:"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRmzKJvJxVdzoN9z5ZNStYBBLFvGUcQHRxjuw&s",url:"https://notebooklm.google.com",altText:"NotebookLM - Ghi chú thông minh"},{name:"Grok",icon:"https://img.icons8.com/color/1200/grok--v2.jpg",url:"https://x.ai",altText:"Grok - X.AI"},{name:"Deepseek",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://chat.deepseek.com&size=128",url:"https://chat.deepseek.com",altText:"Deepseek Chat"},{name:"Meta AI",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.meta.ai&size=128",url:"https://www.meta.ai",altText:"Meta AI"}]},{name:"AI tạo ảnh",tools:[{name:"Gemini (Image)",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://gemini.google.com&size=128",url:"https://gemini.google.com",altText:"Gemini Image Generation"},{name:"Canva Edu",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.canva.com&size=128",url:"https://www.canva.com/dream-lab",altText:"Canva Education"},{name:"DreamFace",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://dreamfaceapp.com&size=128",url:"https://dreamfaceapp.com",altText:"DreamFace - Photo Animator"},{name:"Dreamina",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.dreamina.com&size=128",url:"https://dreamina.capcut.com/ai-tool/generate?type=image",altText:"Dreamina Art"}
324,{name:"Leonardo.ai",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://leonardo.ai&size=128",url:"https://leonardo.ai",altText:"Leonardo AI"},{name:"Flux (BFL)",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://blackforestlabs.ai&size=128",url:"https://blackforestlabs.ai",altText:"Flux - Black Forest Labs"},{name:"MS Designer",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://designer.microsoft.com&size=128",url:"https://designer.microsoft.com",altText:"Microsoft Designer"},{name:"Runway",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://runwayml.com&size=128",url:"https://runwayml.com",altText:"RunwayML"},{name:"Kling AI",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://klingai.com&size=128",url:"https://klingai.com",altText:"Kling AI"}]},{name:"AI tạo video",tools:[{name:"Google Veo (Flow)",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://deepmind.google&size=128",url:"https://labs.google/fx/vi/tools/flow",altText:"Google Veo (DeepMind)"},{name:"Pixverse",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://pixverse.ai&size=128",url:"https://pixverse.ai",altText:"Pixverse AI"},{name:"Vidu",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.vidu.studio&size=128",url:"https://www.vidu.studio",altText:"Vidu Studio"},{name:"Digen",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.digen.ai&size=128",url:"https://www.digen.ai",altText:"Digen AI"}]},{name:"AI tạo nhạc/âm thanh",tools:[{name:"Suno",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://suno.com&size=128",url:"https://suno.com",altText:"Suno AI Music"},{name:"Google AI Studio",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://aistudio.google.com&size=128",url:"https://aistudio.google.com",altText:"Google AI Studio"},{name:"Turboscribe",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://turboscribe.ai&size=128",url:"https://turboscribe.ai",altText:"Turboscribe - AI Transcribe"},{name:"Vbee",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://vbee.vn&size=128",url:"https://vbee.vn",altText:"Vbee Text to Speech"},{name:"TTSFree",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://ttsfree.com&size=128",url:"https://ttsfree.com",altText:"TTS Free"},{name:"Narakeet",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.narakeet.com&size=128",url:"https://www.narakeet.com",altText:"Narakeet"},{name:"DupDub",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.dupdub.com&size=128",url:"https://www.dupdub.com",altText:"DupDub"}]}]},{category:"Trang thông tin giáo dục",tools:[{name:"Giáo Dục VN",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://giaoduc.net.vn&size=128",url:"https://giaoduc.net.vn",altText:"Tạp chà Giáo dục Viá»t Nam"},{name:"Bá» GD&ÄT",icon:"https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://moet.gov.vn&size=128",url:"https://moet.gov.vn",altText:"Bá» Giáo dục & Äà o tạo"},{name:"Tuá»i Trẻ",icon:"https://play-lh.googleusercontent.com/ABk3SvZrHnJSexMRGqZUXl5ua0UIFVBUbh738j66zAilUt8Xfy-wUlKnO6gdre_e5Bsk",url:"https://tuoitre.vn/giao-duc.htm",altText:"Báo Tuá»i Trẻ - Giáo Dục"},{name:"Tạp chà GD",icon:"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQghQXrNUWFRJ-Fw1pyhb2c4XCBWMYlS0ZA9w&s",url:"https://tapchigiaoduc.edu.vn",altText:"Tạp chà Giáo dục"}]}];function ExternalToolsSection({showTitle:o=!0,containerClassName:u="",collapsible:T=!1}){const{t:S}
324=useTranslation("common"),E=reactExports.useMemo(()=>window.matchMedia("(max-width: 768px)").matches,[]),[C,_]=reactExports.useState(!1),P={"Phần má»m giảng dạy/quản lý":"teaching","Phần má»m AI":"ai","AI tá»ng hợp":"aiGeneral","AI tạo ảnh":"aiImage","AI tạo video":"aiVideo","AI tạo nhạc/âm thanh":"aiAudio","Trang thông tin giáo dục":"education"},R=jsxRuntimeExports.jsxs("div",{className:"tools-container",children:[o&&!T&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(motion.h2,{className:"tools-title",initial:E?!1:{opacity:0,y:20},whileInView:E?void 0:{opacity:1,y:0},transition:E?void 0:{duration:.6},viewport:{once:!0},children:S("externalTools.title")}),jsxRuntimeExports.jsx(motion.p,{className:"tools-warning",initial:E?!1:{opacity:0,y:20},whileInView:E?void 0:{opacity:1,y:0},transition:E?void 0:{duration:.6,delay:.1},viewport:{once:!0},style:{color:"#fde68a",textAlign:"center",marginTop:"10px",marginBottom:"20px",fontWeight:600},children:S("externalTools.warning")})]}),externalTools$3.map((I,L)=>jsxRuntimeExports.jsxs(motion.div,{className:"tools-category",initial:E?!1:{opacity:0,y:20},whileInView:E?void 0:{opacity:1,y:0},transition:E?void 0:{delay:L*.1,duration:.6},viewport:{once:!0},children:[jsxRuntimeExports.jsx("h3",{children:P[I.category]?S(`externalTools.categories.${P[I.category]}`):I.category}),I.subcategories?I.subcategories.map(j=>jsxRuntimeExports.jsxs("div",{className:"tools-subcategory",children:[jsxRuntimeExports.jsx("h4",{children:P[j.name]?S(`externalTools.categories.${P[j.name]}`):j.name}),jsxRuntimeExports.jsx("div",{className:"tools-grid",children:j.tools.map(M=>jsxRuntimeExports.jsxs("a",{href:M.url,target:"_blank",rel:"noopener noreferrer",className:"tool-card",title:S("externalTools.accessTooltip",{name:M.name}),children:[jsxRuntimeExports.jsx("img",{src:M.icon,alt:M.altText,loading:"lazy"}),jsxRuntimeExports.jsx("span",{children:M.name})]},M.name))})]},j.name)):jsxRuntimeExports.jsx("div",{className:"tools-grid",children:I.tools.map(j=>jsxRuntimeExports.jsxs("a",{href:j.url,target:"_blank",rel:"noopener noreferrer",className:"tool-card",title:S("externalTools.accessTooltip",{name:j.name}),children:[jsxRuntimeExports.jsx("img",{src:j.icon,alt:j.altText,loading:"lazy"}),jsxRuntimeExports.jsx("span",{children:j.name})]},j.name))})]},I.category))]});return T?jsxRuntimeExports.jsxs("section",{className:`external-tools-section external-tools-section--collapsible ${u}`,children:[jsxRuntimeExports.jsxs("button",{className:"external-tools-toggle",onClick:()=>_(I=>!I),"aria-expanded":C,children:[jsxRuntimeExports.jsx("span",{className:"external-tools-toggle__icon",children:"ð"}),jsxRuntimeExports.jsx("span",{className:"external-tools-toggle__label",children:S("externalTools.title")}),jsxRuntimeExports.jsx("span",{className:`external-tools-toggle__arrow ${C?"external-tools-toggle__arrow--open":""}`,children:"â¼"})]}),jsxRuntimeExports.jsx(AnimatePresence,{initial:!1,children:C&&jsxRuntimeExports.jsx(motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.3,ease:"easeInOut"},style:{overflow:"hidden"},children:jsxRuntimeExports.jsxs("div",{style:{padding:"0 0 8px"},children:[jsxRuntimeExports.jsx("p",{className:"tools-warning",style:{color:"#fde68a",textAlign:"center",margin:"16px 0",fontWeight:600},children:S("externalTools.warning")}),R]})},"tools-body")})]}):jsxRuntimeExports.jsx(motion.section,{className:`external-tools-section ${u}`,initial:E?!1:{opacity:0},whileInView:E?void 0:{opacity:1},transition:E?void 0:{duration:.8},viewport:{once:!0},children:R})}function BaseModal({open:o=!1,onClose:u,title:T,size:S="md",showCloseButton:E=!0,closeOnOverlayClick:C=!0,className:_="",children:P,footer:R}){const I=reactExports.useCallback(M=>{M.key==="Escape"&&u&&u()},[u]);if(reactExports.useEffect(()=>(o&&(document.addEventListener("keydown",I),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",I),document.body.style.overflow=""}),[o,I]),!o)return null;const L=M=>{M.target===M.currentTarget&&C&&u&&u()},j=jsxRuntimeExports.jsx("div",{className:"base-modal-overlay",onClick:L,children:jsxRuntimeExports.jsxs("div",{className:`base-modal base-modal--${S} ${_}`,children:[(T||E)&&jsxRuntimeExports.jsxs("div",{className:"base-modal__header",children:[T&&jsxRuntimeExports.jsx("h2",{className:"base-modal__title",children:T}),E&&jsxRuntimeExports.jsx("button",{type:"button",className:"base-modal__close",onClick:u,"aria-label":"Äóng",children:"Ã"})]}),jsxRuntimeExports.jsx("div",{className:"base-modal__body",children:P}),R&&jsxRuntimeExports.jsx("div",{className:"base-modal__footer",children:R})]})});return reactDomExports.createPortal(j,document.body)}const MODULE_CATALOG=[{id:"tug-of-war-game",i18nKey:"tug-of-war-game",landingI18
324nKey:"tugOfWarGame",icon:"ðª¢",color:"linear-gradient(135deg, #10b981, #3b82f6)",available:!0,path:"/tug-of-war-game"},{id:"head-tilt-quiz",i18nKey:"head-tilt-quiz",landingI18nKey:"headTiltQuiz",icon:"ð¤",iconStyle:{display:"inline-block",transform:"rotate(45deg)"},color:"linear-gradient(135deg, #a18cd1, #fbc2eb)",available:!0,path:"/head-tilt-quiz"},{id:"hand-slash-quiz",i18nKey:"hand-slash-quiz",landingI18nKey:"handSlashQuiz",icon:"â",color:"linear-gradient(135deg, #f59e0b, #fbbf24)",available:!0,path:"/hand-slash-quiz"},{id:"star-bag-game",i18nKey:"star-bag-game",landingI18nKey:"starBagGame",icon:"â",color:"linear-gradient(135deg, #11998e, #38ef7d)",available:!0,path:"/star-bag-game"},{id:"minesweeper",i18nKey:"minesweeper",landingI18nKey:"minesweeper",landingUsesHomeNamespace:!0,icon:"ð§¨",color:"linear-gradient(135deg, #8b5e3c, #b88a5a)",available:!0,path:"/minesweeper"},{id:"pose-quiz",i18nKey:"pose-quiz",landingI18nKey:"poseQuiz",icon:"ð¤¸",color:"linear-gradient(135deg, #a8e0b8, #e3f7e9)",available:!0,path:"/pose-quiz"},{id:"flip-puzzle-game",i18nKey:"flip-puzzle-game",landingI18nKey:"flipPuzzleGame",icon:"ð§©",color:"linear-gradient(135deg, #ff6b6b, #ee5a6f)",available:!0,path:"/flip-puzzle-game"},{id:"knowledge-train-game",i18nKey:"knowledge-train-game",landingI18nKey:"knowledgeTrainGame",icon:"ð",color:"linear-gradient(135deg, #0ea5e9, #2563eb)",available:!0,path:"/knowledge-train-game"},{id:"turn-based-game",i18nKey:"turn-based-game",landingI18nKey:"turnBasedGame",icon:"ð²",color:"linear-gradient(135deg, #11998e, #38ef7d)",available:!0,path:"/turn-based-game"},{id:"versus-game",i18nKey:"versus-game",landingI18nKey:"versusGame",icon:"âï¸",color:"linear-gradient(135deg, #e74c3c, #ff6b6b)",available:!0,isPremiumFeature:!0,path:"/versus-game"},{id:"paper-mode",i18nKey:"paper-mode",landingI18nKey:"paperMode",icon:null,color:"linear-gradient(135deg, #1a1a2e, #0f3460)",available:!0,isNew:!0,path:"/paper-mode"},{id:"wheel-quiz",i18nKey:"wheel-quiz",landingI18nKey:"wheelQuiz",icon:"ð¡",color:"linear-gradient(135deg, #e8dcc8, #f5ead8)",available:!0,path:"/wheel-quiz"},{id:"face-random",i18nKey:"face-random",landingI18nKey:"faceRandom",icon:"ð·",color:"linear-gradient(135deg, #10b981, #3b82f6)",available:!0,isNew:!0,path:"/face-random"},{id:"paced-quiz",i18nKey:"paced-quiz",landingI18nKey:"pacedQuiz",icon:"â±ï¸",color:"linear-gradient(135deg, #667eea, #764ba2)",available:!0,path:"/paced-quiz"},{id:"flying-words-game",i18nKey:"flying-words-game",landingI18nKey:"flyingWordsGame",icon:"ð¦",color:"linear-gradient(135deg, #a78bfa, #7c3aed)",available:!0,path:"/flying-words-game"},{id:"quiz-game",i18nKey:"quiz-game",landingI18nKey:"quizGame",icon:"ð¤",color:"linear-gradient(135deg, #f093fb, #f5576c)",available:!0,path:"/quiz-game"},{id:"crossword-puzzle",i18nKey:"crossword-puzzle",landingI18nKey:"crosswordPuzzle",icon:"ð¤",color:"linear-gradient(135deg, #667eea, #764ba2)",available:!0,path:"/crossword-puzzle"},{id:"flashcard",i18nKey:"flashcard",landingI18nKey:"flashcard",landingUsesHomeNamespace:!0,icon:"ð",color:"linear-gradient(135deg, #1976d2, #42a5f5)",available:!0,path:"/flashcard"},{id:"mind-map",i18nKey:"mind-map",landingI18nKey:"mind-map",landingUsesHomeNamespace:!0,icon:"ð",color:"linear-gradient(135deg, #667eea, #764ba2)",available:!0,path:"/mind-map"},{id:"panorama-museum",i18nKey:"panorama-museum",landingI18nKey:"panoramaMuseum",icon:"ð§",color:"linear-gradient(135deg, #a8edea, #fed6e3)",available:!0,path:"/panorama-museum"},{id:"interactive-video",i18nKey:"interactive-video",landingI18nKey:"interactiveVideo",icon:"ð¬",color:"linear-gradient(135deg, #667eea, #764ba2)",available:!0,path:"/interactive-video"},{id:"interactive-image",i18nKey:"interactive-image",landingI18nKey:"interactiveImage",icon:"ð¼ï¸",color:"linear-gradient(135deg, #f59e0b, #ef4444)",available:!0,path:"/interactive-image"},{id:"journey",i18nKey:"journey",landingI18nKey:"journey",icon:"ðºï¸",color:"linear-gradient(135deg, #ec4899, #f472b6)",available:!0,isPremiumFeature:!0,path:"/journey"}
324,{id:"scavenger-hunt",i18nKey:"scavenger-hunt",landingI18nKey:"scavenger-hunt",icon:"ð",color:"linear-gradient(135deg, #7c3aed, #a855f7)",available:!0,path:"/scavenger-hunt"},{id:"html-embed-game",i18nKey:"html-embed-game",landingI18nKey:"htmlEmbedGame",icon:"ð¹ï¸",color:"linear-gradient(135deg, #1a1a2e, #16213e)",available:!0,isPremiumFeature:!0,path:"/html-embed-game"},{id:"noise-tracker",i18nKey:"noise-tracker",landingI18nKey:"noiseTracker",icon:"ð",color:"linear-gradient(135deg, #1a1a2e, #4a1942)",available:!0,path:"/noise-tracker"}],PROJECT_SEARCH_SOURCES=[{featureId:"tug-of-war-game",label:"Kéo co",icon:"ðª¢",path:"/tug-of-war-game",loadAll:o=>__vitePreload(()=>import("./tugOfWarService-C5KzKzgB.js"),__vite__mapDeps([0,1,2,3,4,5])).then(u=>u.getAllUserGames(o))},{featureId:"head-tilt-quiz",label:"Nghiêng Äầu",icon:"ð¤",path:"/head-tilt-quiz",loadAll:o=>__vitePreload(()=>import("./headTiltService-PeTe-xIm.js").then(u=>u.h),__vite__mapDeps([6,1,7])).then(u=>u.getAllLessons(o))},{featureId:"hand-slash-quiz",label:"Chém tay",icon:"â",path:"/hand-slash-quiz",loadAll:o=>__vitePreload(()=>import("./handSlashService-CklEk98N.js").then(u=>u.h),__vite__mapDeps([8,1,7])).then(u=>u.getAllLessons(o))},{featureId:"star-bag-game",label:"Túi sao",icon:"â",path:"/star-bag-game",loadAll:o=>__vitePreload(()=>import("./starBagService-CaNJAfWC.js").then(u=>u.s),__vite__mapDeps([9,1,7])).then(u=>u.getAllUserGames(o))},{featureId:"minesweeper",label:"Dò mìn",icon:"ð§¨",path:"/minesweeper",loadAll:o=>__vitePreload(()=>import("./minesweeperService-D0RsD1b6.js").then(u=>u.m),__vite__mapDeps([10,1,7])).then(u=>u.getAllUserGames(o))},{featureId:"pose-quiz",label:"Tạo dáng",icon:"ð¤¸",path:"/pose-quiz",loadAll:o=>__vitePreload(()=>import("./poseQuizService-CBtK-gBK.js").then(u=>u.p),__vite__mapDeps([11,1,7])).then(u=>u.getUserQuizzes(o))},{featureId:"flip-puzzle-game",label:"Láºt hình",icon:"ð§©",path:"/flip-puzzle-game",loadAll:o=>__vitePreload(()=>import("./flipPuzzleService-4wqpcbkQ.js").then(u=>u.f),__vite__mapDeps([12,1,7])).then(u=>u.getUserPuzzles(o))},{featureId:"knowledge-train-game",label:"Äoà n tà u",icon:"ð",path:"/knowledge-train-game",loadAll:o=>__vitePreload(()=>import("./knowledgeTrainService-y7fRG4Qi.js").then(u=>u.k),__vite__mapDeps([13,1,7])).then(u=>u.getUserTrains(o))},{featureId:"turn-based-game",label:"Cá» lượt",icon:"ð²",path:"/turn-based-game",loadAll:o=>__vitePreload(()=>import("./turnBasedGameService-BU3KxH3n.js").then(u=>u.t),__vite__mapDeps([14,1,7])).then(u=>u.getAllGames(o))},{featureId:"wheel-quiz",label:"Vòng quay",icon:"ð¡",path:"/wheel-quiz",loadAll:o=>__vitePreload(()=>import("./wheelQuizCloudService-Bqz9YCCY.js").then(u=>u.y),__vite__mapDeps([15,7,1,16])).then(u=>u.getAllQuestionSets(o))},{featureId:"paced-quiz",label:"Quiz nhá»p Äá»",icon:"â±ï¸",path:"/paced-quiz",loadAll:o=>__vitePreload(()=>import("./pacedQuizService-BtL7Bkox.js").then(u=>u.p),__vite__mapDeps([17,1,18,19,20,7])).then(u=>u.getUserQuizzes(o))},{featureId:"flying-words-game",label:"Từ ngữ bay",icon:"ð¦",path:"/flying-words-game",loadAll:o=>__vitePreload(()=>import("./flyingWordsService-ECtyZAS2.js"),__vite__mapDeps([21,1,2,3,4,5])).then(u=>u.getAllLessons(o))},{featureId:"quiz-game",label:"Quiz",icon:"ð¤",path:"/quiz-game",loadAll:o=>__vitePreload(()=>import("./quizGameService-COfox1GO.js").then(u=>u.q),__vite__mapDeps([22,1,7])).then(u=>u.getUserQuizzes(o))},{featureId:"crossword-puzzle",label:"à chữ",icon:"ð¤",path:"/crossword-puzzle",loadAll:o=>__vitePreload(()=>import("./crosswordService-BGQeoqHM.js").then(u=>u.a),__vite__mapDeps([23,1,7,24])).then(u=>u.getUserCrosswords(o))},{featureId:"flashcard",label:"Flashcard",icon:"ð",path:"/flashcard",loadAll:o=>__vitePreload(()=>import("./flashcardService-CMQq3J1A.js").then(u=>u.f),__vite__mapDeps([25,1,7])).then(u=>u.getDecks(o))},{featureId:"mind-map",label:"SÆ¡ Äá» tư duy",icon:"ð",path:"/mind-map",loadAll:o=>__vitePreload(()=>import("./mindMapService-B5fPv6E3.js").then(u=>u.m),__vite__mapDeps([26,1,7])).then(u=>u.getMindMaps(o))},{featureId:"interactive-video",label:"Video tương tác",icon:"ð¬",path:"/interactive-video",loadAll:o=>__vitePreload(()=>import("./lessonService-KFFZxx1P.js"),__vite__mapDeps([27,1,2,3,4,5])).then(u=>u.getUserLessons(o))},{featureId:"interactive-image",label:"Ảnh tương tác",icon:"ð¼ï¸",path:"/interactive-image",loadAll:o=>__vitePreload(()=>import("./interactiveImageService-DLsLSujm.js").then(u=>u.i),__vite__mapDeps([28,1,7])).then(u=>u.getUserInteractiveImages(o))}],TTL_MS=24*60*60*1e3,dataKey=o=>`project_search_index_${o}`,dirtyKey="project_search_dirty";function readProjectSearchCache(o){try{if(localStorage.getItem(dirt
324yKey))return null;const u=localStorage.getItem(dataKey(o));if(!u)return null;const T=JSON.parse(u);return!(T!=null&&T.ts)||Date.now()-T.ts>TTL_MS?null:T.items||null}catch{return null}}function writeProjectSearchCache(o,u){try{localStorage.setItem(dataKey(o),JSON.stringify({ts:Date.now(),items:u})),localStorage.removeItem(dirtyKey)}catch{}}function markProjectSearchDirty(){try{localStorage.setItem(dirtyKey,"1")}catch{}}function normalize(o){return(o||"").normalize("NFD").replace(/[Ì-ͯ]/g,"").replace(/[Ä]/g,"d").replace(/[Ä]/g,"D").toLowerCase().trim()}function ProjectSearchModal({open:o,onClose:u}){const{t:T}=useTranslation("common"),{t:S}=useTranslation("home"),{currentUser:E}=useAuth(),C=useNavigate(),[_,P]=reactExports.useState(""),[R,I]=reactExports.useState(null),[L,j]=reactExports.useState(!1),M=reactExports.useMemo(()=>MODULE_CATALOG.filter(H=>H.available&&!H.isExtension&&!H.path.startsWith("http")).map(H=>({id:H.id,title:S(`modules.${H.i18nKey}.title`),description:S(`modules.${H.i18nKey}.description`),icon:typeof H.icon=="string"?H.icon:"ð§©",path:H.path})),[S]);reactExports.useEffect(()=>{if(!o||!(E!=null&&E.uid))return;const H=E.uid,O=readProjectSearchCache(H);if(O){I(O);return}j(!0),Promise.allSettled(PROJECT_SEARCH_SOURCES.map(V=>V.loadAll(H).then(U=>(U||[]).map(W=>({id:W.id,title:W.title||"",featureId:V.featureId,label:V.label,icon:V.icon,path:V.path}))))).then(V=>{const U=[];for(const W of V)W.status==="fulfilled"&&U.push(...W.value);I(U),writeProjectSearchCache(H,U)}).finally(()=>j(!1))},[o,E]);const D=normalize(_),F=reactExports.useMemo(()=>R?D?R.filter(H=>normalize(H.title).includes(D)):R:[],[R,D]),N=reactExports.useMemo(()=>D?M.filter(H=>normalize(H.title).includes(D)||normalize(H.description).includes(D)):M,[M,D]),G=H=>{u(),C(`${H.path}?q=${encodeURIComponent(H.title)}`)},B=H=>{u(),C(H.path)};return jsxRuntimeExports.jsx(BaseModal,{open:o,onClose:u,size:"md",title:T("search.title"),children:jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,minHeight:200}
324,children:[jsxRuntimeExports.jsx("input",{autoFocus:!0,type:"text",value:_,onChange:H=>P(H.target.value),placeholder:T("search.placeholder"),style:{width:"100%",padding:"10px 14px",borderRadius:10,border:"1.5px solid #d1d5db",fontSize:"0.95rem",outline:"none",boxSizing:"border-box"}}),jsxRuntimeExports.jsxs("div",{style:{maxHeight:400,overflowY:"auto",display:"flex",flexDirection:"column",gap:4},children:[L&&jsxRuntimeExports.jsx("div",{style:{textAlign:"center",padding:"20px 0",color:"#78909c"},children:T("search.loading")}),!L&&F.length>0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{style:{fontSize:"0.75rem",fontWeight:700,color:"#9ca3af",textTransform:"uppercase",letterSpacing:"0.05em",padding:"6px 4px 2px"},children:T("search.groupLessons")}),F.map(H=>jsxRuntimeExports.jsxs("button",{onClick:()=>G(H),style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid #eef2f7",background:"#fff",cursor:"pointer",textAlign:"left",transition:"background 0.12s, border-color 0.12s"},onMouseEnter:O=>{O.currentTarget.style.background="#f5f3ff",O.currentTarget.style.borderColor="#d8c7ea"},onMouseLeave:O=>{O.currentTarget.style.background="#fff",O.currentTarget.style.borderColor="#eef2f7"},children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"1.3rem",flexShrink:0},children:H.icon}),jsxRuntimeExports.jsx("span",{style:{flex:1,minWidth:0,fontWeight:600,color:"#374151",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:H.title||T("search.untitled")}),jsxRuntimeExports.jsx("span",{style:{flexShrink:0,fontSize:"0.78rem",color:"#8b7aa8",background:"#f3e8ff",padding:"2px 8px",borderRadius:12},children:H.label})]},`${H.featureId}_${H.id}`))]}),N.length>0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{style:{fontSize:"0.75rem",fontWeight:700,color:"#9ca3af",textTransform:"uppercase",letterSpacing:"0.05em",padding:"10px 4px 2px"},children:T("search.groupFeatures")}),N.map(H=>jsxRuntimeExports.jsxs("button",{onClick:()=>B(H),style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid #eef2f7",background:"#fff",cursor:"pointer",textAlign:"left",transition:"background 0.12s, border-color 0.12s"},onMouseEnter:O=>{O.currentTarget.style.background="#eff6ff",O.currentTarget.style.borderColor="#bfdbfe"},onMouseLeave:O=>{O.currentTarget.style.background="#fff",O.currentTarget.style.borderColor="#eef2f7"},children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"1.3rem",flexShrink:0},children:H.icon}),jsxRuntimeExports.jsxs("span",{style:{flex:1,minWidth:0},children:[jsxRuntimeExports.jsx("span",{style:{display:"block",fontWeight:600,color:"#374151",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:H.title}),jsxRuntimeExports.jsx("span",{style:{display:"block",fontSize:"0.78rem",color:"#9ca3af",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:H.description})]}),jsxRuntimeExports.jsx("span",{style:{flexShrink:0,fontSize:"0.78rem",color:"#2563eb",background:"#dbeafe",padding:"2px 8px",borderRadius:12},children:T("search.labelFeature")})]},`feat_${H.id}`))]}),!L&&N.length===0&&F.length===0&&jsxRuntimeExports.jsx("div",{style:{textAlign:"center",padding:"24px 0",color:"#9ca3af"},children:T("search.noResults")})]})]})})}const TABS=[{key:"home",path:"/dashboard",icon:"ð§°",label:"Công cụ dạy há»c"},{key:"question-bank",path:"/question-bank",icon:"ð",i18nKey:"nav.questionBank"},{key:"assignments",path:"/assignments",icon:"ð¤",i18nKey:"nav.assignments"},{key:"community",path:"/community-library",icon:"ðï¸",i18nKey:"nav.community"}];function HomeTabsNav({active:o}){var G;const u=useNavigate(),{t:T}=useTranslation("common"),{subscription:S,setProModalOpen:E}=useSubscription(),[C,_]=reactExports.useState(!1),[P,R]=reactExports.useState(!1),I=B=>{o!==B.key&&u(B.path)},L=((G=S==null?void 0:S.proPlan)==null?void 0:G.isPurchased)===!0,j=S==null?void 0:S.proPlanExpiresAt,M=j!=null&&j.toDate?j.toDate():j?new Date(j):null,D=L||!!(M&&M>new Date),F=M&&!isNaN(M.getTime())?Math.ceil((M.getTime()-Date.now())/(1e3*60*60*24)):null;let N;return L?N=T("header.forever"):F!==null?N=T("header.daysPro",{days:F}):N=T("header.proAccount"),jsxRuntimeExports.jsxs("div",{className:"home-tabs-nav",children:[TABS.map(B=>{const H=o===B.key;return jsxRuntimeExports.jsx("div",{style:{position:"relative"},children:jsxRuntimeExports.jsx(motion.button,{className:`home-tab-btn${H?" home-tab-btn--active":""}`,onClick:()=>I(B),whileHover:{scale:H?1:1.05},whileTap:{scale:.96},children:jsxRuntimeExports.jsx("span",{children:B.label??T(B.i18nKey)})})},B.key)}),jsxRuntimeExports.jsxs(motion.button,{className:"home-tab-btn",onClick:()=>R(!0),whileHover:{scale:1.05},whileTap:{scale:.96},title:T("search.title"),"aria-label":T("search.title"),children:[jsxRuntimeExports.jsx("span",{className:"home-tab-icon",children:"ð"}),jsxRuntimeExports.jsx("span",{children:T("search.tab")})]}),D?jsxRuntimeExports.jsxs(motion.button,{className:"home-tab-btn home-tab-btn--pro-active",onClick:()=>_(!0),whileHover:{scale:1.05},whileTap:{scale:.96},title:N,children:[jsxRuntimeExports.jsx("span",{className:"home-tab-icon",children:"ð"}),jsxRuntimeExports.jsx("span",{children:N})]}):jsxRuntimeExports.jsxs(motion.button,{className:"home-tab-btn home-tab-btn--pro",onClick:()=>E(!0),whileHover:{scale:1.05},whileTap:{scale:.96},title:T("header.upgradePro"),children:[jsxRuntimeExports.jsx("span",{className:"home-tab-icon",children:"â"}),jsxRuntimeExports.jsx("span",{children:T("header.upgradePro")})]}),jsxRuntimeExports.jsx(ProjectSearchModal,{open:P,onClose:()=>R(!1)}),jsxRuntimeExports.jsxs(Dialog,{open:C,onClose:()=>_(!1),children:[jsxRuntimeExports.jsx(DialogTitle,{children:N}),jsxRuntimeExports.jsx(DialogContent,{children:F!==null?`Bạn còn ${F} ngà y PRO. Nếu thanh toán thêm sẽ ÄÆ°á»£c cá»ng dá»n sá» ngà y.`:"Nếu thanh toán thêm sẽ ÄÆ°á»£c cá»ng dá»n sá» ngà y."}),jsxRuntimeExports.jsx(DialogActions,{children:jsxRuntimeExports.jsx(Button,{onClick:()=>{_(!1),E(!0)},children:"OK"})})]})]})}const zaloGuide1="/assets/zalo1-Djj0-qal.png",zaloGuide2="/assets/zalo2-IvenB_3V.png",LandingHeader=()=>{const o=useNavigate(),{t:u,i18n:T}=useTranslation("landing"),[S,E]=reactExports.useState(!1),[C,_]=reactExports.useState(null),P=(()=>{const I=navigator.userAgent||"";return!!(/FBAN|FBAV|FB_IAB|FBIOS/i.test(I)||/ZaloApp|zalo/i.test(I)||/wv\)/i.test(I)||typeof window.ReactNativeWebView<"u"||/Instagram|BytedanceWebview|musical_ly|MicroMessenger|Line\//i.test(I))})(),R=I=>{T.changeLanguage(I),_(null)};return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(motion.nav,{className:"landing-nav",initial:{opacity:0,y:-20}
324,animate:{opacity:1,y:0},transition:{duration:.5},children:jsxRuntimeExports.jsxs("div",{className:"nav-container",children:[jsxRuntimeExports.jsx("h1",{className:"nav-logo",onClick:()=>o("/"),style:{cursor:"pointer"},children:u("nav.logo")}),jsxRuntimeExports.jsxs("div",{className:"nav-actions",children:[jsxRuntimeExports.jsx("a",{href:"/ai-tools",className:"nav-aitools-btn",onClick:I=>{I.preventDefault(),o("/ai-tools")},title:u("nav.aiTools"),children:jsxRuntimeExports.jsx("span",{children:u("nav.aiTools")})}),jsxRuntimeExports.jsx("a",{href:"/tien-ich-giao-duc",className:"nav-aitools-btn",onClick:I=>{I.preventDefault(),o("/tien-ich-giao-duc")},title:"Tiá»n Ãch GD",children:jsxRuntimeExports.jsx("span",{children:"Tiá»n Ãch GD"})}),jsxRuntimeExports.jsx("a",{href:"/mo-phong-bai-day",className:"nav-aitools-btn",onClick:I=>{I.preventDefault(),o("/mo-phong-bai-day")},title:"Mô phá»ng bà i dạy",children:jsxRuntimeExports.jsx("span",{children:"Mô phá»ng bà i dạy"})}),jsxRuntimeExports.jsx("a",{href:"/join",className:"nav-join-btn nav-join-btn--desktop",onClick:I=>{I.preventDefault(),o("/join")},children:u("nav.joinBtn")}),jsxRuntimeExports.jsx("button",{onClick:I=>_(I.currentTarget),title:"Thay Äá»i ngôn ngữ / Change Language",className:"lang-toggle-btn",style:{padding:"6px",cursor:"pointer",background:"transparent",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"6px"},children:jsxRuntimeExports.jsx("img",{src:"/images/languages.png",alt:"Language",style:{width:"24px",height:"24px",objectFit:"cover",borderRadius:"3px",display:"block"}})}),jsxRuntimeExports.jsxs(Menu,{anchorEl:C,open:!!C,onClose:()=>_(null),transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},PaperProps:{elevation:0,sx:{overflow:"visible",filter:"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",mt:1.5,"&:before":{content:'""',display:"block",position:"absolute",top:0,right:14,width:10,height:10,bgcolor:"background.paper",transform:"translateY(-50%) rotate(45deg)",zIndex:0}}},children:[jsxRuntimeExports.jsxs(MenuItem,{selected:T.language==="vi",onClick:()=>R("vi"),children:[jsxRuntimeExports.jsx("img",{src:viFlag,alt:"Tiếng Viá»t",style:{width:24,height:24,marginRight:12,borderRadius:3,objectFit:"cover"}}),"Tiếng Viá»t"]}),jsxRuntimeExports.jsxs(MenuItem,{selected:T.language==="en",onClick:()=>R("en"),children:[jsxRuntimeExports.jsx("img",{src:enFlag,alt:"English",style:{width:24,height:24,marginRight:12,borderRadius:3,objectFit:"cover"}}),"English"]}),jsxRuntimeExports.jsxs(MenuItem,{selected:T.language==="pl",onClick:()=>R("pl"),children:[jsxRuntimeExports.jsx("span",{style:{fontSize:"20px",width:24,height:24,marginRight:12,display:"flex",alignItems:"center",justifyContent:"center"},children:"ðµð±"}),"Polski"]})]}),jsxRuntimeExports.jsx("a",{href:"/login",className:"nav-login-btn",onClick:I=>{I.preventDefault(),P?E(!0):o("/login")},children:u("nav.loginBtn")})]})]})}),S&&jsxRuntimeExports.jsx("div",{className:"webview-modal-overlay",onClick:()=>E(!1),children:jsxRuntimeExports.jsxs("div",{className:"webview-modal-content",onClick:I=>I.stopPropagation(),children:[jsxRuntimeExports.jsx("h2",{className:"webview-modal-title",children:u("webviewModal.title")}),jsxRuntimeExports.jsx("p",{className:"webview-modal-intro",children:u("webviewModal.intro")}),jsxRuntimeExports.jsxs("div",{className:"webview-modal-steps",children:[jsxRuntimeExports.jsxs("div",{className:"webview-modal-step",children:[jsxRuntimeExports.jsx("p",{className:"step-text",children:u("webviewModal.step1")}),jsxRuntimeExports.jsx("img",{src:zaloGuide1,alt:u("webviewModal.step1"),className:"step-img"})]}),jsxRuntimeExports.jsxs("div",{className:"webview-modal-step",children:[jsxRuntimeExports.jsx("p",{className:"step-text",children:u("webviewModal.step2")}),jsxRuntimeExports.jsx("img",{src:zaloGuide2,alt:u("webviewModal.step2"),className:"step-img"})]})]}),jsxRuntimeExports.jsx("button",{onClick:()=>E(!1),className:"webview-modal-close-btn",children:u("webviewModal.btnClose")})]})})]})},SeoHelmet=({title:o,description:u,keywords:T,canonicalUrl:S,ogType:E="website",ogImage:C,ogTitle:_,ogDescription:P,twitterCard:R="summary_large_image",twitterImage:I,structuredData:L})=>{const j="https://giaoviendoimoi.com",M=S||(typeof window<"u"?window.location.href:j),D=C||`${j}/og-image.jpg`,F=L?Array.isArray(L)?L:[L]:[];return jsxRuntimeExports.jsxs(Helmet,{children:[jsxRuntimeExports.jsx("title",{children:o}),jsxRuntimeExports.jsx("meta",{name:"description",content:u}),T&&jsxRuntimeExports.jsx("meta",{name:"keywords",content:T}),jsxRuntimeExports.jsx("meta",{name:"robots",content:"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"}),jsxRuntimeExports.jsx("link",{rel:"canonical",href:M}),jsxRuntimeExports.jsx("meta",{property:"og:type",content:E}),jsxRuntimeExports.jsx("meta",{property:"og:url",content:M}),jsxRuntimeExports.jsx("meta",{property:"og:title",content:_||o}),jsxRuntimeExports.jsx("meta",{property:"og:description",content:P||u}),jsxRuntimeExports.jsx("meta",{property:"og:image",content:D}),jsxRuntimeExports.jsx("meta",{property:"og:site_name",content:"Giáo Viên Äá»i Má»i"}),jsxRuntimeExports.jsx("meta",{property:"og:locale",content:"vi_VN"}),jsxRuntimeExports.jsx("meta",{name:"twitter:card",content:R}),jsxRuntimeExports.jsx("meta",{name:"twitter:title",content:_||o}),jsxRuntimeExports.jsx("meta",{name:"twitter:description",content:P||u}),I&&jsxRuntimeExports.jsx("meta",{name:"twitter:image",content:I}),F.map((N,G)=>jsxRuntimeExports.jsx("script",{type:"application/ld+json",children:JSON.stringify(N)},G))]})},seoConfig={landing:{title:"Giáo Viên Äá»i Má»i - Công Cụ Dạy Há»c Hiá»n Äại, Trò ChÆ¡i & AI Cho Giáo Viên",description:"Ná»n tảng dạy há»c hiá»n Äại cho giáo viên sáng tạo: 20+ trò chÆ¡i dạy há»c (kéo co kiến thức, quiz online), AI soạn SKKN, biá»n pháp giáo viên giá»i, video tương tác, lá»p há»c tÃch cá»±c. Game hóa bà i g
324iảng, tÃch hợp nÄng lá»±c sá».",keywords:"giáo viên Äá»i má»i, giáo viên sáng tạo, giáo viên giá»i, giáo viên hiá»n Äại, thầy giáo TÃn, AI soạn SKKN, sáng kiến kinh nghiá»m, biá»n pháp giáo viên giá»i, AI giáo dục, ứng dụng AI trong dạy há»c, trò chÆ¡i dạy há»c, game dạy há»c, trò chÆ¡i há»c táºp, kéo co kiến thức, lá»p há»c tÃch cá»±c, dạy há»c tÃch cá»±c, game hóa, gamification, quiz online, vòng quay may mắn, flashcard, sÆ¡ Äá» tư duy, giáo án dạy há»c, giáo án tÃch hợp, tÃch hợp nÄng lá»±c sá», thi giáo viên giá»i, giáo án giáo viên giá»i, beeclass, kahoot tiếng viá»t, quizizz tiếng viá»t, công cụ dạy há»c miá»
n phÃ, elearning",ogImage:"/og-landing.jpg"},login:{title:"ÄÄng Nháºp | Giáo Viên Äá»i Má»i",description:"ÄÄng nháºp tà i khoản Giáo Viên Äá»i Má»i Äá» truy cáºp 20+ công cụ dạy há»c tương tác, AI soạn SKKN và trò chÆ¡i há»c táºp.",keywords:"ÄÄng nháºp, giáo viên Äá»i má»i, giáo viên sáng tạo, công cụ dạy há»c, AI giáo dục, elearning"},join:{title:"Tham Gia Lá»p Há»c - Nháºp Mã Bà i Táºp | Giáo Viên Äá»i Má»i",description:"Há»c sinh nháºp mã code Äá» tham gia bà i táºp, trò chÆ¡i há»c táºp trên ná»n tảng Giáo Viên Äá»i Má»i. Lá»p há»c tÃch cá»±c, game hóa bà i giảng.",keywords:"tham gia lá»p, nháºp mã bà i táºp, trò chÆ¡i há»c táºp, game dạy há»c, lá»p há»c tÃch cá»±c, giao bà i táºp online, beeclass, kahoot tiếng viá»t, quizizz tiếng viá»t",ogImage:"/og-hoc-sinh.jpg"},privacyPolicy:{title:"ChÃnh Sách Bảo Máºt | Giáo Viên Äá»i Má»i",description:"ChÃnh sách bảo máºt dữ liá»u cá nhân cá»§a ngưá»i dùng trên ná»n tảng Giáo Viên Äá»i Má»i.",keywords:"chÃnh sách bảo máºt, bảo vá» dữ liá»u, quyá»n riêng tư, giáo viên Äá»i má»i"},termsOfService:{title:"Äiá»u Khoản Sá» Dụng | Giáo Viên Äá»i Má»i",description:"Äiá»u khoản sá» dụng ná»n tảng Giáo Viên Äá»i Má»i - quy Äá»nh vá» quyá»n và trách nhiá»m cá»§a ngưá»i dùng.",keywords:"Äiá»u khoản, Äiá»u kiá»n sá» dụng, quy tắc, quyá»n, giáo viên Äá»i má»i"},about:{title:"Giá»i Thiá»u | Giáo Viên Äá»i Má»i",description:"Giáo Viên Äá»i Má»i là ná»n tảng dạy há»c tương tác giúp giáo viên sáng tạo nâng cao hiá»u quả giảng dạy: AI soạn SKKN, biá»n pháp giáo viên giá»i, trò chÆ¡i dạy há»c, tá»± Äá»ng nháºn xét há»c sinh, tÃch hợp nÄng lá»±c sá».",keywords:"giá»i thiá»u, giáo viên Äá»i má»i, giáo viên sáng tạo, giáo viên giá»i, ná»n tảng dạy há»c, AI giáo dục, ứng dụng AI trong dạy há»c, AI soạn SKKN, sáng kiến kinh nghiá»m, biá»n pháp giáo viên giá»i, thi giáo viên giá»i, giáo án giáo viên giá»i, nháºn xét há»c sinh, nháºn xét há»c bạ, tÃch hợp nÄng lá»±c sá», elearning"},shippingPolicy:{title:"ChÃnh Sách Giao Nháºn | Giáo Viên Äá»i Má»i",description:"ChÃnh sách giao nháºn và há» trợ khách hà ng cá»§a Giáo Viên Äá»i Má»i.",keywords:"giao nháºn, há» trợ, chÃnh sách, giáo viên Äá»i má»i"},pricing:{title:"Bảng Giá | Giáo Viên Äá»i Má»i",description:"Bảng giá các gói dá»ch vụ Giáo Viên Äá»i Má»i: FullGame, công cụ AI soạn SKKN, biá»n pháp giáo viên giá»i, tạo Äá» thi. Từ miá»
n phà Äến Premium, có dùng thá».",keywords:"bảng giá, gói dá»ch vụ, công cụ dạy há»c, AI soạn SKKN, sáng kiến kinh nghiá»m, biá»n pháp giáo viên giá»i, tạo Äá» thi, công vÄn 7991, soạn giáo án, giáo án tÃch hợp, AI giáo dục, mua công cụ dạy há»c",ogType:"product"},miniAppsBrowse:{title:"Mô Phá»ng Bà i Dạy Tương Tác | Giáo Viên Äá»i Má»i",description:"Kho mô phá»ng bà i dạy tương tác cho tất cả các khá»i từ Nhà trẻ Äến Lá»p 12. ",keywords:"mô phá»ng bà i dạy, mô phá»ng tương tác, bà i giảng tương tác, giáo án Äiá»n tá», công cụ dạy há»c, mô phá»ng thà nghiá»m, giáo viên Äá»i má»i",ogImage:"/og-mo-phong-bai-day.jpg"}},getStructuredData=(o,u)=>{const T="https://giaoviendoimoi.com",S={"@context":"https://schema.org","@type":"Organization",name:"Giáo Viên Äá»i Má»i",url:T,logo:`${T}
324/logo.png`,description:"Ná»n tảng dạy há»c tương tác vá»i 20+ games há»c táºp",telephone:"0363357745",sameAs:["https://www.facebook.com/thaygiaotin90","https://www.youtube.com/channel/UC66UEWfsar0kRJZmTMAg97A","https://www.tiktok.com/@thaygiao.tin"]},E={landing:{"@context":"https://schema.org","@graph":[S,{"@type":"WebApplication",name:"Giáo Viên Äá»i Má»i",url:T,applicationCategory:"EducationalApplication",offers:{"@type":"Offer",price:"0",priceCurrency:"VND"},aggregateRating:{"@type":"AggregateRating",ratingValue:"4.8",ratingCount:"1200"}}]},about:{"@context":"https://schema.org","@graph":[S,{"@type":"Article",headline:"Giá»i Thiá»u Giáo Viên Äá»i Má»i",description:"Ná»n tảng dạy há»c tương tác giúp giáo viên nâng cao hiá»u quả giảng dạy",url:`${T}/gioi-thieu`,author:S}]},pricing:{"@context":"https://schema.org","@graph":[S,{"@type":"WebPage",name:"Bảng Giá",url:`${T}/bang-gia`,description:"Xem bảng giá các gói dá»ch vụ"}]}};return E[o]||E.landing},getBreadcrumb=o=>{const u="https://giaoviendoimoi.com";return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:o.map((T,S)=>({"@type":"ListItem",position:S+1,name:T.name,item:`${u}${T.path==="/"?"/":T.path}`}))}},combineSchemas=(...o)=>o.filter(Boolean),ICON_PROPS={width:"1.8em",height:"1.8em",viewBox:"0 0 48 48",fill:"none",stroke:"#fff",strokeWidth:4.5,strokeLinecap:"round",strokeLinejoin:"round"};function TugOfWarIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("path",{d:"M16 23h16",stroke:"#a9682f",strokeWidth:2.5}),jsxRuntimeExports.jsx("circle",{cx:"9",cy:"16",r:"3.2",fill:"#fff"}),jsxRuntimeExports.jsx("path",{d:"M9 19.5v9M9 21l7 2M9 21l-3 5M9 28.5l-5 7M9 28.5l4 7"}),jsxRuntimeExports.jsx("circle",{cx:"39",cy:"16",r:"3.2",fill:"#fff"}),jsxRuntimeExports.jsx("path",{d:"M39 19.5v9M39 21l-7 2M39 21l3 5M39 28.5l5 7M39 28.5l-4 7"})]})}function FlipPuzzleIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("rect",{x:"6",y:"10",width:"36",height:"30",rx:"3",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("circle",{cx:"15",cy:"19",r:"3.5",fill:"#fbbf24",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M8 35l9-10 6 6 7-9 10 13z",fill:"#60a5fa",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"24",y:"10",width:"18",height:"15",rx:"2",fill:"#0009",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M24 10v30M6 25h36",strokeWidth:2,strokeOpacity:.6}),jsxRuntimeExports.jsx("g",{transform:"rotate(16 38 8)",children:jsxRuntimeExports.jsx("rect",{x:"29",y:"1.5",width:"18",height:"14",rx:"2",fill:"#60a5fa",stroke:"#fff",strokeWidth:3})})]})}function KnowledgeTrainIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("clipPath",{id:"train-car-1",children:jsxRuntimeExports.jsx("rect",{x:"4",y:"14",width:"16",height:"16",rx:"3"})}),jsxRuntimeExports.jsxs("g",{clipPath:"url(#train-car-1)",children:[jsxRuntimeExports.jsx("rect",{x:"4",y:"14",width:"16",height:"16",fill:"#d1d5db",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"4",y:"14",width:"4.8",height:"16",fill:"#ef4444",stroke:"none"})]}),jsxRuntimeExports.jsx("rect",{x:"4",y:"14",width:"16",height:"16",rx:"3",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("text",{x:"14.4",y:"25",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#ffe600",stroke:"none",children:"Q"}),jsxRuntimeExports.jsx("circle",{cx:"6.5",cy:"11",r:"1.2",fill:"#000",stroke:"none"}),jsxRuntimeExports.jsx("circle",{cx:"7.5",cy:"7.5",r:"1.6",fill:"#000",stroke:"none"}),jsxRuntimeExports.jsx("circle",{cx:"8.5",cy:"3.5",r:"2.1",fill:"#000",stroke:"none"}),jsxRuntimeExports.jsx("clipPath",{id:"train-car-2",children:jsxRuntimeExports.jsx("rect",{x:"28",y:"14",width:"16",height:"16",rx:"3"})}),jsxRuntimeExports.jsxs("g",{clipPath:"url(#train-car-2)",children:[jsxRuntimeExports.jsx("rect",{x:"28",y:"14",width:"16",height:"16",fill:"#d1d5db",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"39.2",y:"14",width:"4.8",height:"16",fill:"#e3d3b8",stroke:"none"})]}),jsxRuntimeExports.jsx("rect",{x:"28",y:"14",width:"16",height:"16",rx:"3",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("text",{x:"33.6",y:"25",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#ffe600",stroke:"none",children:"A"}),jsxRuntimeExports.jsx("path",{d:"M20 26.8h8M44 26.8h3",strokeWidth:2.5}),jsxRuntimeExports.jsx("path",{d:"M2 33.5h44",strokeWidth:2}),jsxRuntimeExports.jsx("path",{d:"M6 33.5v3M14 33.5v3M22 33.5v3M30 33.5v3M38 33.5v3M46 33.5v3",strokeWidth:1.5})]})}function QuizGameIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("rect",{x:"4",y:"6",width:"15",height:"10",rx:"2.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"4",y:"19",width:"15",height:"10",rx:"2.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"4",y:"32",width:"15",height:"10",rx:"2.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"29",y:"6",width:"15",height:"10",rx:"2.5",fill:"#fbbf24",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"29",y:"32",width:"15",height:"10",rx:"2.5",fill:"#60a5fa",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M19 37h10",strokeWidth:1.5,strokeOpacity:.7}),jsxRuntimeExports.jsx("path",{d:"M19 11c4 0 6 8 10 8",strokeWidth:1.5,strokeDasharray:"3 3"}),jsxRuntimeExports.jsx("g",{transform:"rotate(-12 38 19)",children:jsxRuntimeExports.jsx("rect",{x:"30.5",y:"14",width:"15",height:"10",rx:"2.5",fill:"#34d399",stroke:"#fff",strokeWidth:3})})]})}function HeadTiltQuizIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("circle",{cx:"24",cy:"24",r:"18"}),jsxRuntimeExports.jsx("text",{x:"24",y:"30",textAnchor:"middle",fontSize:"20",fill:"#000",stroke:"none",transform:"rotate(-16 24 24)",children:"ð"})]})}function HandSlashQuizIcon(){return jsxRuntimeExports.jsx("img",{src:"/images/icon-home/icon-hand-slash.webp",alt:"",style:{width:"1.8em",he
324ight:"1.8em",objectFit:"contain"}})}function starPoints(o,u,T){const S=[];for(let E=0;E<5;E++){const C=-Math.PI/2+E*2*Math.PI/5;S.push(`${o+T*Math.cos(C)},${u+T*Math.sin(C)}`);const _=C+Math.PI/5;S.push(`${o+T*.42*Math.cos(_)},${u+T*.42*Math.sin(_)}`)}return S.join(" ")}function StarBagGameIcon(){return jsxRuntimeExports.jsx("svg",{...ICON_PROPS,children:jsxRuntimeExports.jsxs("g",{transform:"translate(0, 3.5)",children:[jsxRuntimeExports.jsx("rect",{x:"3",y:"4",width:"18",height:"13",rx:"2",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"27",y:"4",width:"18",height:"13",rx:"2",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("polygon",{points:starPoints(14,3,6),fill:"#ffe600",stroke:"none"}),jsxRuntimeExports.jsx("polygon",{points:starPoints(34,3,6),fill:"#ffe600",stroke:"none"}),jsxRuntimeExports.jsx("polygon",{points:starPoints(24,19,5.5),fill:"#ffe600",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"6",y:"40",textAnchor:"middle",fontSize:"13",fontWeight:"bold",fill:"#ff3b30",stroke:"none",children:"A"}),jsxRuntimeExports.jsx("text",{x:"18",y:"40",textAnchor:"middle",fontSize:"13",fontWeight:"bold",fill:"#fff",stroke:"none",children:"B"}),jsxRuntimeExports.jsx("text",{x:"30",y:"40",textAnchor:"middle",fontSize:"13",fontWeight:"bold",fill:"#fff",stroke:"none",children:"A"}),jsxRuntimeExports.jsx("text",{x:"42",y:"40",textAnchor:"middle",fontSize:"13",fontWeight:"bold",fill:"#ff3b30",stroke:"none",children:"B"})]})})}function MinesweeperIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("circle",{cx:"24",cy:"29",r:"2.6",fill:"#fff"}),jsxRuntimeExports.jsx("path",{d:"M24 32v6M24 35l-4 3M24 35l4 3M24 38l-3 4M24 38l3 4",strokeWidth:3}),jsxRuntimeExports.jsx("circle",{cx:"12",cy:"15",r:"6.5",strokeWidth:2}),jsxRuntimeExports.jsx("text",{x:"12",y:"18.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#fff",stroke:"none",children:"A"}),jsxRuntimeExports.jsx("circle",{cx:"24",cy:"8",r:"6.5",strokeWidth:2}),jsxRuntimeExports.jsx("text",{x:"24",y:"11.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#fff",stroke:"none",children:"B"}),jsxRuntimeExports.jsx("text",{x:"36",y:"20",textAnchor:"middle",fontSize:"14",fill:"#000",stroke:"none",children:"ð¥"})]})}function PoseQuizIcon(){const o=[{x:8,emoji:"ð",letter:"A"},{x:24,emoji:"ð",letter:"B"},{x:40,emoji:"ð",letter:"C"}];return jsxRuntimeExports.jsx("svg",{...ICON_PROPS,children:o.map(({x:u,emoji:T,letter:S})=>jsxRuntimeExports.jsxs("g",{children:[jsxRuntimeExports.jsx("text",{x:u,y:"18",textAnchor:"middle",fontSize:"13",fill:"#000",stroke:"none",children:T}),jsxRuntimeExports.jsx("rect",{x:u-6.5,y:"26",width:"13",height:"13",rx:"2",stroke:"#2563eb",strokeWidth:2}),jsxRuntimeExports.jsx("text",{x:u,y:"35.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#2563eb",stroke:"none",children:S})]},S))})}function WheelQuizIcon(){const o=[{color:"#f87171",from:-90,to:-18},{color:"#fbbf24",from:-18,to:54},{color:"#34d399",from:54,to:126},{color:"#60a5fa",from:126,to:198},{color:"#c084fc",from:198,to:270}],u=16,T=16,S=14,E=C=>{const _=C*Math.PI/180;return[u+S*Math.cos(_),T+S*Math.sin(_)]};return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("path",{d:"M0 36q6-3 12 0t12 0 12 0 12 0v12h-48z",fill:"#1d8fd1",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M2 38.5q5-2.5 10 0t10 0 10 0 10 0",stroke:"#bfe6ff",strokeWidth:.8,strokeOpacity:.8}),jsxRuntimeExports.jsx("path",{d:"M2 43.5q5-2.5 10 0t10 0 10 0 10 0",stroke:"#bfe6ff",strokeWidth:.8,strokeOpacity:.6}),o.map(({color:C,from:_,to:P})=>{const[R,I]=E(_),[L,j]=E(P);return jsxRuntimeExports.jsx("path",{d:`M${u} ${T}L${R} ${I}A${S} ${S} 0 0 1 ${L} ${j}z`,fill:C,stroke:"none"},C)}),jsxRuntimeExports.jsx("circle",{cx:u,cy:T,r:S,fill:"none",strokeWidth:1.6}),jsxRuntimeExports.jsx("circle",{cx:u,cy:T,r:"3",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:`M${u} ${T-S+6}l-3-5h6z`,fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("image",{href:"/images/duck.svg",x:"23",y:"20",width:"24",height:"19",preserveAspectRatio:"xMidYMid meet"})]})}function FaceRandomIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("circle",{cx:"10",cy:"20",r:"7",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M3.5 19a6.5 6.5 0 0 1 13 0c-2-1.5-4.3-2.2-6.5-2.2s-4.5 0.7-6.5 2.2z",fill:"#4b3621",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"10",y:"23.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#667eea",stroke:"none",children:"?"}),jsxRuntimeExports.jsx("circle",{cx:"24",cy:"15",r:"7",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M17.5 14a6.5 6.5 0 0 1 13 0c-2-1.5-4.3-2.2-6.5-2.2s-4.5 0.7-6.5 2.2z",fill:"#4b3621",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"24",y:"18.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#667eea",stroke:"none",children:"?"}),jsxRuntimeExports.jsx("circle",{cx:"38",cy:"20",r:"7",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M31.5 19a6.5 6.5 0 0 1 13 0c-2-1.5-4.3-2.2-6.5-2.2s-4.5 0.7-6.5 2.2z",fill:"#4b3621",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"38",y:"23.5",textAnchor:"middle",fontSize:"9",fontWeight:"bold",fill:"#667eea",stroke:"none",children:"?"}),jsxRuntimeExports.jsx("text",{x:"24",y:"36",textAnchor:"middle",fontSize:"26",fill:"#000",stroke:"none",children:"ð·"})]})}function PacedQuizIcon(){const o=[{x:8.5,y:13,letter:"A",borderColor:"#fff"},{x:39.5,y:13,letter:"B",borderColor:"#22c55e"},{x:8.5,y:39,letter:"C",borderColor:"#fff"},{x:39.5,y:39,letter:"D",borderColor:"#fff"}];return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[o.map(({x:u,y:T,letter:S,borderColor:E})=>jsxRuntimeExports.jsxs("g",{children:[jsxRuntimeExports.jsx("rect",{x:u-6.5,y:T-6.5,width:"13",height:"13",rx:"2",stroke:E,strokeWidth:2}),jsxRuntimeExports.jsx("text",{x:u,y:T+3.7,textAnchor:"middle",fontSize:"11",fontWeight:"bold",fill:"#fff",stroke:"none",children:S})]},S)),jsxRuntimeExports.jsx("text",{x:"24",y:"32",textAnchor:"middle",fontSize:"22",fill:"#000",stroke:"none",children:"â±ï¸"})]})}function CrosswordPuzzleIcon(){const o=new Set(["0-2","1-1","1-2","1-3","2-2","2-3","3-3","3-4"]);return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("g",{children:[0,1,2,3].map(u=>[0,1,2,3,4].map(T=>{const S=4+T*8,E=6+u*8,C=T===2,_=o.has(`${u}-${T}`),P=C?"#ef4444":_?"#60a5fa":"#fff";return jsxRuntimeExports.jsx("rect",{x:S,y:E,width:"7.4",height:"7.4",fill:P,stroke:"none"},`${u}-${T}`)}))}),jsxRuntimeExports.jsx("path",{d:"M4 6h36.6M4 14h36.6M4 22h36.6M4 30h36.6M4 38h36.6M4 6v32M12 6v32M20 6v32M28 6v32M36 6v32M40.6 6v32",strokeWidth:1,strokeOpacity:.5})]})}function FlashcardIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("clipPath",{id:"flashcard-deck",children:jsxRuntimeExports.jsx("rect",{x:"13",y:"7",width:"20",height:"28",rx:"3"})}),jsxRuntimeExports.jsxs("g",{clipPath:"url(#flashcard-deck)",children:[jsxRuntimeExports.jsx("rect",{x:"13",y:"7",width:"20",height:"28",fill:"#7c4a2d",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M13 11h20M13 15.5h20M13 20h20M13 24.5h20M13 29h20M17.5 7v28M22 7v28M26.5 7v28",stroke:"#a9682f",strokeWidth:1.4,strokeOpacity:.9})]}),jsxRuntimeExports.jsx("rect",{x:"13",y:"7",width:"20",height:"28",rx:"3",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("rect",{x:"9",y:"11",width:"20",height:"28",rx:"3",fill:"#7c4a2d",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("rect",{x:"5",y:"15",width:"20",height:"28",rx:"3",fill:"#fff",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("text",{x:"15",y:"34",textAnchor:"middle",fontSize:"17",fontWeight:"bold",fill:"#1976d2",stroke:"none",children:"A"})]})}function MindMapIcon(){const o=[{path:"M16 18c-4-3-9-4-13-3",cx:4,cy:14,color:"#fbbf24"},{path:"M18 14c-2-5-6-8-10-9",cx:8,cy:4,color:"#f87171"},{path:"M30 14c2-5 6-8 10-9",cx:40,cy:4,color:"#60a5fa"}
324,{path:"M32 18c4-3 9-4 13-3",cx:44,cy:14,color:"#34d399"},{path:"M18 27c-3 4-8 6-12 6",cx:5,cy:35,color:"#38bdf8"},{path:"M30 27c3 4 8 6 12 6",cx:43,cy:35,color:"#fb923c"},{path:"M24 30v9",cx:24,cy:42,color:"#c084fc"}];return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[o.map(({path:u,cx:T,cy:S,color:E})=>jsxRuntimeExports.jsxs("g",{children:[jsxRuntimeExports.jsx("path",{d:u,stroke:E,strokeWidth:1.5}),jsxRuntimeExports.jsx("circle",{cx:T,cy:S,r:"3.6",fill:E,stroke:"none"})]},T+"-"+S)),jsxRuntimeExports.jsx("ellipse",{cx:"24",cy:"22",rx:"10",ry:"7",fill:"#fff",stroke:"none"})]})}function PanoramaMuseumIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("path",{d:"M2 4h44l-14 8h-16z",fill:"#fff",fillOpacity:.55,stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M2 44h44l-14-16h-16z",fill:"#fff",fillOpacity:.25,stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M2 4v40l14-16v-16z",fill:"#fff",fillOpacity:.45,stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M46 4v40l-14-16v-16z",fill:"#fff",fillOpacity:.65,stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"16",y:"12",width:"16",height:"16",fill:"#fff",fillOpacity:.8,stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M5 12.5l7 2v11l-7 2.5z",fill:"#60a5fa",stroke:"#fff",strokeWidth:1.2}),jsxRuntimeExports.jsx("path",{d:"M43 12.5l-7 2v11l7 2.5z",fill:"#fbbf24",stroke:"#fff",strokeWidth:1.2}),jsxRuntimeExports.jsx("rect",{x:"20",y:"16",width:"8",height:"8",rx:"0.6",fill:"#f87171",stroke:"#fff",strokeWidth:1.2}),jsxRuntimeExports.jsx("path",{d:"M2 4l14 8M46 4l-14 8M2 44l14-8M46 44l-14-8M16 12h16v16h-16z",strokeWidth:1.3,strokeOpacity:.7}),jsxRuntimeExports.jsx("text",{x:"24",y:"40",textAnchor:"middle",fontSize:"6.5",fontWeight:"bold",fill:"#fff",stroke:"none",children:"3D"})]})}function InteractiveVideoIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("rect",{x:"3",y:"7",width:"38",height:"24",rx:"3",fill:"#fff",fillOpacity:.9,stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M18.5 13.5v11l10-5.5z",fill:"#667eea",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"20",y:"22",width:"25",height:"20",rx:"3",fill:"#f87171",stroke:"#fff",strokeWidth:3}),jsxRuntimeExports.jsx("rect",{x:"23",y:"32",width:"8.5",height:"7",rx:"1.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("rect",{x:"33.5",y:"32",width:"8.5",height:"7",rx:"1.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"27.3",y:"37.7",textAnchor:"middle",fontSize:"6.5",fontWeight:"bold",fill:"#f87171",stroke:"none",children:"A"}),jsxRuntimeExports.jsx("text",{x:"37.8",y:"37.7",textAnchor:"middle",fontSize:"6.5",fontWeight:"bold",fill:"#f87171",stroke:"none",children:"B"}),jsxRuntimeExports.jsx("text",{x:"32.5",y:"28.5",textAnchor:"middle",fontSize:"7",fontWeight:"bold",fill:"#fff",stroke:"none",children:"?"})]})}function InteractiveImageIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("rect",{x:"4",y:"8",width:"40",height:"30",rx:"3",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("circle",{cx:"14",cy:"17",r:"3.5",fill:"#fbbf24",stroke:"none"}),jsxRuntimeExports.jsx("path",{d:"M6 33l9-10 6 6 8-10 12 14z",fill:"#60a5fa",stroke:"none"}),jsxRuntimeExports.jsx("circle",{cx:"14",cy:"17",r:"3",fill:"#667eea",stroke:"#fff",strokeWidth:2}),jsxRuntimeExports.jsx("circle",{cx:"33",cy:"28",r:"3",fill:"#667eea",stroke:"#fff",strokeWidth:2}),jsxRuntimeExports.jsx("circle",{cx:"24",cy:"24",r:"5.5",fill:"none",stroke:"#f87171",strokeWidth:1.5,strokeOpacity:.6}),jsxRuntimeExports.jsx("circle",{cx:"24",cy:"24",r:"3",fill:"#f87171",stroke:"#fff",strokeWidth:2}),jsxRuntimeExports.jsx("rect",{x:"18",y:"4",width:"12",height:"7",rx:"2",fill:"#f87171",stroke:"#fff",strokeWidth:1.5}),jsxRuntimeExports.jsx("text",{x:"24",y:"9.7",textAnchor:"middle",fontSize:"6",fontWeight:"bold",fill:"#fff",stroke:"none",children:"?"}),jsxRuntimeExports.jsx("path",{d:"M22 11l2 3 2-3z",fill:"#f87171",stroke:"none"})]})}function FlyingWordsIcon(){return jsxRuntimeExports.jsxs("svg",{...ICON_PROPS,children:[jsxRuntimeExports.jsx("path",{d:"M9 13l3 3",strokeWidth:2.5,strokeOpacity:.45}),jsxRuntimeExports.jsx("rect",{x:"3",y:"5",width:"13",height:"9",rx:"2.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"9.5",y:"11.8",textAnchor:"middle",fontSize:"7",fontWeight:"bold",fill:"#667eea",stroke:"none",children:"AB"}),jsxRuntimeExports.jsx("path",{d:"M39 33l-3 -3",strokeWidth:2.5,strokeOpacity:.45}),jsxRuntimeExports.jsx("rect",{x:"32",y:"34",width:"13",height:"9",rx:"2.5",fill:"#fff",stroke:"none"}),jsxRuntimeExports.jsx("text",{x:"38.5",y:"40.8",textAnchor:"middle",fontSize:"7",fontWeight:"bold",fill:"#667eea",stroke:"none",children:"CD"}),jsxRuntimeExports.jsx("rect",{x:"17",y:"19",width:"15",height:"10",rx:"2.5",fill:"#fbbf24",stroke:"#fff",strokeWidth:2.5}),jsxRuntimeExports.jsx("text",{x:"24.5",y:"26.3",textAnchor:"middle",fontSize:"7.5",fontWeight:"bold",fill:"#fff",stroke:"none",children:"GO"}),jsxRuntimeExports.jsx("path",{d:"M9 41c0-4 2-7 5-7s4 2 4 5",strokeWidth:3}),jsxRuntimeExports.jsx("circle",{cx:"13",cy:"33",r:"1.6",fill:"#fff"})]})}function ScavengerHuntIcon(){return jsxRuntimeExports.jsxs("span",{style:{position:"relative",display:"inline-block",lineHeight:1},children:["ð",jsxRuntimeExports.jsx("span",{style:{position:"absolute",top:"-0.15em",left:"-0.15em",fontSize:"0.45em"},children:"â¨"}),jsxRuntimeExports.jsx("span",{style:{position:"absolute",top:"-0.1em",right:"-0.2em",fontSize:"0.35em"},children:"â¨"}),jsxRuntimeExports.jsx("span",{style:{position:"absolute",bottom:"-0.05em",right:"-0.05em",fontSize:"0.4em"},children:"â¨"})]})}const MODULE_ICON_MAP={"tug-of-war-game":jsxRuntimeExports.jsx(TugOfWarIcon,{}),"flip-puzzle-game":jsxRuntimeExports.jsx(FlipPuzzleIcon,{}),"knowledge-train-game":jsxRuntimeExports.jsx(KnowledgeTrainIcon,{}),"quiz-game":jsxRuntimeExports.jsx(QuizGameIcon,{}),"head-tilt-quiz":jsxRuntimeExports.jsx(HeadTiltQuizIcon,{}),"hand-slash-quiz":jsxRuntimeExports.jsx(HandSlashQuizIcon,{}),"star-bag-game":jsxRuntimeExports.jsx(StarBagGameIcon,{}),minesweeper:jsxRuntimeExports.jsx(MinesweeperIcon,{}),"pose-quiz":jsxRuntimeExports.jsx(PoseQuizIcon,{}),"wheel-quiz":jsxRuntimeExports.jsx(WheelQuizIcon,{}),"face-random":jsxRuntimeExports.jsx(FaceRandomIcon,{}),"paced-quiz":jsxRuntimeExports.jsx(PacedQuizIcon,{}),"crossword-puzzle":jsxRuntimeExports.jsx(CrosswordPuzzleIcon,{}),"flying-words-game":jsxRuntimeExports.jsx(FlyingWordsIcon,{}),flashcard:jsxRuntimeExports.jsx(FlashcardIcon,{}),"mind-map":jsxRuntimeExports.jsx(MindMapIcon,{}),"panorama-museum":jsxRuntimeExports.jsx(PanoramaMuseumIcon,{}),"interactive-video":jsxRuntimeExports.jsx(InteractiveVideoIcon,{}),"interactive-image":jsxRuntimeExports.jsx(InteractiveImageIcon,{}),"scavenger-hunt":jsxRuntimeExports.jsx(ScavengerHuntIcon,{})};function splitCombinedTitle(o){const u=o.split(/\s+[-/]\s+/);return u.length===2?u:[o]}function generateDefaultLessonTitle(){const o=new Date,u=E=>String(E).padStart(2,"0"),T=`${u(o.getMonth()+1)}${u(o.getDate())}`,S=`${u(o.getHours())}${u(o.getMinutes())}`;return`Bà i há»c ${T}-${S}`}const QrScanButton=reactExports.lazy(()=>__vitePreload(()=>import("./QrScanButton-B3H0Mbxd.js"),__vite__mapDeps([29,3,2,1,4,5]))),LandingPage=()=>{const o=useNavigate(),{currentUser:u}=useAuth(),{t:T}=useTranslation("landing"),{t:S}=useTranslation("home"),[E,C]=reactExports.useState(!1),_="earn_sticker_dismissed_at",[P,R]=reactExports.useState(()=>{const B=localStorage.getItem(_);return B?Date.now()-Number(B)>7*24*60*60*1e3:!0}),[I,L]=reactExports.useState(!1),j="hot_feature_dismissed_at",[M,D]=reactExports.useState(null);reactExports.useEffect(()=>{getDoc(doc(db,"appConfig","hotFeature")).then(B=>
324{if(B.exists()){const H=B.data();if(H.name&&H.url){const O=localStorage.getItem(j);O&&Date.now()-Number(O)<24*60*60*1e3||D({name:H.name,url:H.url})}}})},[]);const F={"knowledge-train-game":{title:T("features.tools.knowledgeTrainGame.title",{defaultValue:"Äoà n tà u tri thức"}),description:T("features.tools.knowledgeTrainGame.description",{defaultValue:"Kéo thả xếp các toa thà nh Äoà n tà u Äúng thứ tá»± â ná»i Äáp án câu trưá»c vá»i câu há»i tiếp theo."})},"paper-mode":{description:T("paperModeBeta"),icon:jsxRuntimeExports.jsx("img",{src:"/images/qr.png",style:{width:"2rem",height:"2rem",objectFit:"contain",filter:"drop-shadow(0 0 2px rgba(255,255,255,0.3))"},alt:"Quét mã QR chấm Äiá»m bà i giấy - Paper Mode"})}},N=MODULE_CATALOG.map(B=>{const H=F[B.id],O=B.landingUsesHomeNamespace?S:T,V=B.landingUsesHomeNamespace?`modules.${B.landingI18nKey}`:`features.tools.${B.landingI18nKey}`;return{...B,title:(H==null?void 0:H.title)??O(`${V}.title`),description:(H==null?void 0:H.description)??O(`${V}.description`),icon:(H==null?void 0:H.icon)??B.icon}}),G=B=>{o(u?B.path:"/login")};return jsxRuntimeExports.jsxs("div",{className:"landing-page",children:[jsxRuntimeExports.jsx(SeoHelmet,{title:seoConfig.landing.title,description:seoConfig.landing.description,keywords:seoConfig.landing.keywords,canonicalUrl:"https://giaoviendoimoi.com/",ogImage:seoConfig.landing.ogImage,structuredData:getStructuredData("landing")}),jsxRuntimeExports.jsx(LandingHeader,{}),jsxRuntimeExports.jsx(motion.section,{className:"landing-hero",initial:{opacity:0}
324,animate:{opacity:1},transition:{duration:.8},children:jsxRuntimeExports.jsxs("div",{className:"hero-content",children:[jsxRuntimeExports.jsx(motion.h1,{className:"hero-title",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.1,duration:.5},children:T("hero.title")}),jsxRuntimeExports.jsx(motion.p,{className:"hero-subtitle",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.2,duration:.5},children:T("hero.subtitle")}),jsxRuntimeExports.jsx(motion.p,{className:"hero-description",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.3,duration:.5},children:T("hero.description")}),jsxRuntimeExports.jsxs("div",{className:"hero-cta-group",children:[jsxRuntimeExports.jsx(motion.a,{href:"/login",className:"hero-cta-btn",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.4,duration:.5},whileHover:{scale:1.05},whileTap:{scale:.95},onClick:B=>{B.preventDefault(),o("/login")},children:T("hero.loginCta")}),jsxRuntimeExports.jsx(motion.a,{href:"/join",className:"hero-join-btn",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.5,duration:.5},whileHover:{scale:1.05},whileTap:{scale:.95},onClick:B=>{B.preventDefault(),o("/join")},children:T("hero.joinCta")}),jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:null,children:jsxRuntimeExports.jsx(QrScanButton,{label:T("hero.qrScanCta",{defaultValue:"Quét mã QR"})})})]})]})}),jsxRuntimeExports.jsx(motion.section,{className:"landing-features",initial:{opacity:0}
324,whileInView:{opacity:1},transition:{duration:.8},viewport:{once:!0},children:jsxRuntimeExports.jsxs("div",{className:"features-container",children:[jsxRuntimeExports.jsx(motion.h2,{className:"features-title",initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0},children:T("features.sectionTitle")}),jsxRuntimeExports.jsx("p",{className:"features-subtitle",children:T("features.sectionSubtitle")}),jsxRuntimeExports.jsx("div",{className:"features-grid",children:N.map((B,H)=>jsxRuntimeExports.jsxs(motion.a,{className:"feature-card",href:B.available===!1?void 0:B.path,onClick:O=>{O.preventDefault(),B.available!==!1&&G(B)},initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{delay:Math.min(H*.03,.3),duration:.4},viewport:{once:!0},whileHover:B.available===!1?{}:{y:-5,scale:1.02},style:{cursor:B.available===!1?"not-allowed":"pointer",position:"relative",opacity:B.available===!1?.7:1,textDecoration:"none",color:"inherit"},children:[B.isBeta&&jsxRuntimeExports.jsx("span",{style:{position:"absolute",bottom:8,left:8,background:"rgba(0,0,0,0.65)",color:"#ffd700",fontSize:"0.6rem",fontWeight:700,padding:"2px 8px",borderRadius:6,letterSpacing:"0.03em",zIndex:2,backdropFilter:"blur(4px)"},children:T("betaBadge")}),jsxRuntimeExports.jsx("h3",{className:"feature-title",children:splitCombinedTitle(B.title).map((O,V)=>jsxRuntimeExports.jsx("span",{children:O},V))}),jsxRuntimeExports.jsxs("div",{className:"feature-card-body",children:[jsxRuntimeExports.jsxs("div",{className:"feature-card-left",children:[jsxRuntimeExports.jsx("div",{className:"feature-icon-wrapper",style:{background:B.color},children:jsxRuntimeExports.jsx("span",{className:"feature-icon",style:B.iconStyle,children:MODULE_ICON_MAP[B.id]??B.icon})}),B.available!==!1&&jsxRuntimeExports.jsx(motion.span,{className:"feature-start-btn",whileHover:{scale:1.05},whileTap:{scale:.95},children:S("startBtn")})]}),jsxRuntimeExports.jsx("div",{className:"feature-content",children:jsxRuntimeExports.jsx("p",{className:"feature-description",children:B.description})})]})]},B.id))})]})}),jsxRuntimeExports.jsx("footer",{className:"landing-footer",children:jsxRuntimeExports.jsxs("div",{className:"footer-content",children:[jsxRuntimeExports.jsx("div",{style:{marginBottom:"28px",display:"flex",flexDirection:"column",gap:"10px"},children:jsxRuntimeExports.jsx(ExternalToolsSection,{containerClassName:"landing-tools",showTitle:!0,collapsible:!0})}),jsxRuntimeExports.jsxs("div",{className:"footer-links-grid footer-links-grid--2col",style:{marginBottom:"20px",textAlign:"left"},children:[jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontSize:"0.72rem",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:"rgba(255,255,255,0.6)"},children:T("footer.connectLabel")}),jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[[{href:"https://www.facebook.com/thaygiaotin90",label:T("footer.facebook")},{href:"https://www.tiktok.com/@thaygiao.tin",label:T("footer.tiktok")},{href:"https://www.youtube.com/channel/UC66UEWfsar0kRJZmTMAg97A",label:T("footer.youtube")},{href:"https://zalo.me/0363357745",label:T("footer.zalo")},{href:"https://zalo.me/g/vpilgszizuofkrefetq3",label:T("footer.zaloCommunity")}].map(B=>jsxRuntimeExports.jsx("a",{href:B.href,target:"_blank",rel:"noopener noreferrer",style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:H=>H.currentTarget.style.color="#fff",onMouseLeave:H=>H.currentTarget.style.color="rgba(255,255,255,0.85)",children:B.label},B.href)),jsxRuntimeExports.jsx("button",{type:"button",onClick:()=>C(!0),style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none",background:"none",border:"none",padding:0,cursor:"pointer",textAlign:"left",font:"inherit"},onMouseEnter:B=>B.currentTarget.style.color="#fff",onMouseLeave:B=>B.currentTarget.style.color="rgba(255,255,255,0.85)",children:T("footer.email")})]})]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontSize:"0.72rem",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:"rgba(255,255,255,0.6)"},children:T("footer.legalLabel")}),jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntimeExports.jsx("a",{href:"/blog/",style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:B=>B.currentTarget.style.color="#fff",onMouseLeave:B=>B.currentTarget.style.color="rgba(255,255,255,0.85)",children:"Blog"}),[{to:"/bang-gia",label:T("footer.policy1")},{to:"/chinh-sach-bao-mat",label:T("footer.policy2")},{to:"/dieu-khoan-su-dung",label:T("footer.policy3")},{to:"/chinh-sach-giao-nhan",label:T("footer.policy4")},{to:"/gioi-thieu",label:T("footer.policy5")}].map(B=>jsxRuntimeExports.jsx(Link$1,{to:B.to,style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:H=>H.currentTarget.style.color="#fff",onMouseLeave:H=>H.currentTarget.style.color="rgba(255,255,255,0.85)",children:B.label},B.to))]})]}),jsxRuntimeExports.jsx("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",ga
324p:"10px"},children:jsxRuntimeExports.jsxs(motion.button,{onClick:()=>window.open("https://www.youtube.com/playlist?list=PLxgUnJXYXs7Lr3c_2gr4EmIMcRcGRFq1o","_blank","noopener,noreferrer"),style:{padding:"7px 14px",fontSize:"0.83rem",background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.18)",borderRadius:"6px",color:"rgba(255,255,255,0.85)",cursor:"pointer",fontWeight:500,display:"flex",alignItems:"center",gap:"6px",width:"fit-content"},title:T("footer.guideTooltip"),whileHover:{scale:1.03},whileTap:{scale:.97},children:[jsxRuntimeExports.jsx("span",{children:"â"}),jsxRuntimeExports.jsx("span",{children:T("footer.guide")})]})})]}),jsxRuntimeExports.jsxs("div",{style:{borderTop:"1px solid rgba(255,255,255,0.1)",paddingTop:"14px",display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"8px"},children:[jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"0.82rem",color:"rgba(255,255,255,0.7)"},children:T("footer.copyright")}),jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"0.75rem",color:"rgba(255,255,255,0.4)"},children:(()=>{const B="2026-09-18T01:16:01.286Z",H=new Date(B);if(isNaN(H.getTime()))return null;const O=V=>String(V).padStart(2,"0");return T("footer.buildTime",{time:`${O(H.getHours())}:${O(H.getMinutes())}`,date:`${O(H.getDate())}/${O(H.getMonth()+1)}/${H.getFullYear()}`})})()})]})]})}),E&&jsxRuntimeExports.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"},onClick:()=>C(!1),children:jsxRuntimeExports.jsxs("div",{style:{background:"#fff",borderRadius:12,padding:"24px 32px",maxWidth:400,textAlign:"center",boxShadow:"0 8px 30px rgba(0,0,0,0.2)"},onClick:B=>B.stopPropagation(),children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontWeight:600,fontSize:"1rem"},children:T("emailModal.title")}),jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"1.1rem",color:"#1976d2",wordBreak:"break-all"},children:"[email protected]"}),jsxRuntimeExports.jsx("button",{onClick:()=>C(!1),style:{marginTop:16,padding:"6px 20px",border:"1px solid #ccc",borderRadius:6,background:"#f5f5f5",cursor:"pointer"},children:T("emailModal.btnClose")})]})}),jsxRuntimeExports.jsx(UpdateNotification,{}),reactDomExports.createPortal(jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[P&&jsxRuntimeExports.jsxs("div",{className:"earn-sticker",style:{position:"fixed",zIndex:9e3,width:80,height:80,borderRadius:16,background:"linear-gradient(135deg, #f59e0b, #ef4444)",boxShadow:"0 4px 16px rgba(239,68,68,0.45)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:"6px 4px",textAlign:"center",userSelect:"none"},onClick:()=>L(!0),children:[jsxRuntimeExports.jsx("button",{onClick:B=>{B.stopPropagation(),localStorage.setItem(_,String(Date.now())),R(!1)},style:{position:"absolute",top:-6,left:-6,width:20,height:20,borderRadius:"50%",background:"rgba(0,0,0,0.55)",border:"none",color:"#fff",fontSize:"0.65rem",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},children:"â"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"1.3rem",lineHeight:1},children:"ð°"}),jsxRuntimeExports.jsxs("span",{style:{fontSize:"0.55rem",fontWeight:800,color:"#fff",lineHeight:1.3,marginTop:4},children:["Kiếm tiá»n",` 325`,"từ GVÄM"]})]}),I&&jsxRuntimeExports.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.55)",padding:16},onClick:()=>L(!1),children:jsxRuntimeExports.jsxs("div",{style:{background:"#fff",borderRadius:20,maxWidth:480,width:"100%",boxShadow:"0 12px 40px rgba(0,0,0,0.25)",overflow:"hidden"},onClick:B=>B.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{style:{background:"linear-gradient(135deg, #f59e0b, #ef4444)",padding:"18px 24px",color:"#fff",position:"relative"},children:[jsxRuntimeExports.jsx("button",{onClick:()=>L(!1),style:{position:"absolute",top:12,right:14,background:"rgba(255,255,255,0.2)",border:"none",color:"#fff",fontSize:"1rem",width:28,height:28,borderRadius:"50%",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:"â"}),jsxRuntimeExports.jsx("div",{style:{fontSize:"2rem",marginBottom:6},children:"ð°"}),jsxRuntimeExports.jsx("h2",{style:{margin:0,fontSize:"1.15rem",fontWeight:800},children:"Kiếm tiá»n từ Giáo viên Äá»i má»i"})]}),jsxRuntimeExports.jsxs("div",{style:{padding:"20px 24px",fontSize:"0.92rem",color:"#333",lineHeight:1.8},children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 12px",fontWeight:600}
325,children:"Chà o mừng bạn Äến vá»i Giáo viên Äá»i má»i!"}),jsxRuntimeExports.jsx("p",{style:{margin:"0 0 14px"},children:"Bạn có thá» kiếm thêm thu nháºp từ viá»c ÄÄng ký là m cá»ng tác viên á» trang chúng tôi theo những cách sau:"}),jsxRuntimeExports.jsx("div",{style:{background:"#fff8f0",borderRadius:12,padding:"12px 16px",marginBottom:10,borderLeft:"4px solid #f59e0b"},children:jsxRuntimeExports.jsxs("p",{style:{margin:0},children:[jsxRuntimeExports.jsx("strong",{children:"1."})," ÄÄng ký ",jsxRuntimeExports.jsx("strong",{children:"mã giảm giá"})," và giá»i thiá»u tá»i bạn bè, ngưá»i quen cá»§a mình. Chiết khấu ",jsxRuntimeExports.jsx("strong",{style:{color:"#ef4444"},children:"30%"})]})}),jsxRuntimeExports.jsx("div",{style:{textAlign:"center",margin:"6px 0",fontWeight:700,color:"#888"},children:"HOẶC"}),jsxRuntimeExports.jsx("div",{style:{background:"#f0f4ff",borderRadius:12,padding:"12px 16px",marginBottom:16,borderLeft:"4px solid #6366f1"},children:jsxRuntimeExports.jsxs("p",{style:{margin:0},children:[jsxRuntimeExports.jsx("strong",{children:"2."})," ÄÄng ký ",jsxRuntimeExports.jsx("strong",{children:"xây dá»±ng các mini app, phần má»m AI"})," hữu Ãch. Chiết khấu ",jsxRuntimeExports.jsx("strong",{style:{color:"#6366f1"},children:"70%"})]})}),jsxRuntimeExports.jsxs("p",{style:{margin:0,textAlign:"center",fontWeight:600,color:"#ef4444"},children:["Liên há» admin theo SÄT: ",jsxRuntimeExports.jsx("a",{href:"https://zalo.me/0363357745",target:"_blank",rel:"noopener noreferrer",style:{color:"#ef4444"},children:"0363.357.745"})," Äá» biết thêm chi tiết!"]})]})]})}),jsxRuntimeExports.jsx(AnimatePresence,{children:M&&jsxRuntimeExports.jsxs(motion.div,{className:"hot-feature-sticker",initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:"spring",stiffness:280,damping:20,delay:.7},onClick:()=>{M.url.startsWith("http")?window.open(M.url,"_blank","noopener,noreferrer"):o(M.url)},whileHover:{scale:1.08},whileTap:{scale:.94},style:{position:"fixed",top:210,left:60,zIndex:998,cursor:"pointer",userSelect:"none",width:150,height:150},children:[jsxRuntimeExports.jsx("button",{onClick:B=>{B.stopPropagation(),localStorage.setItem(j,String(Date.now())),D(null)},style:{position:"absolute",top:2,right:2,zIndex:1,width:22,height:22,borderRadius:"50%",background:"rgba(0,0,0,0.55)",border:"none",color:"#fff",fontSize:"0.7rem",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},children:"â"}),jsxRuntimeExports.jsx(motion.div,{animate:{scale:[1,1.22,1],opacity:[.6,.15,.6]},transition:{duration:2,repeat:1/0,ease:"easeInOut"},style:{position:"absolute",inset:-10,borderRadius:"50%",background:"radial-gradient(circle, rgba(251,191,36,0.55) 0%, transparent 70%)",pointerEvents:"none"}}),jsxRuntimeExports.jsxs(motion.div,{animate:{rotate:[0,4,-4,0]},transition:{duration:4,repeat:1/0,ease:"easeInOut"},style:{width:150,height:150,borderRadius:"50%",background:"linear-gradient(145deg, #fde047 0%, #f59e0b 45%, #ef4444 100%)",boxShadow:"0 8px 36px rgba(245,158,11,0.7), 0 3px 14px rgba(0,0,0,0.35)",border:"4px solid rgba(255,255,255,0.4)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:3,textAlign:"center",padding:"0 14px",boxSizing:"border-box"},children:[jsxRuntimeExports.jsx(motion.span,{animate:{scale:[1,1.35,1]},transition:{duration:1.1,repeat:1/0,ease:"easeInOut"},style:{fontSize:"1.9rem",lineHeight:1},children:"ð¥"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"0.65rem",fontWeight:900,color:"#fff",letterSpacing:"0.12em",textTransform:"uppercase",textShadow:"0 1px 4px rgba(0,0,0,0.4)",lineHeight:1},children:"ÄANG HOT"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"0.88rem",fontWeight:800,color:"#fff",lineHeight:1.3,textShadow:"0 1px 4px rgba(0,0,0,0.5)",wordBreak:"break-word"},children:M.name})]})]},"hot-feature-sticker")})]}),document.body)]})},LANGUAGES=[{code:"vi",label:"Tiếng Viá»t",flag:viFlag},{code:"en",label:"English",flag:enFlag},{code:"pl",label:"Polski",flag:null}],HIGHLIGHTS=[{key:"highlightTools",icon:"ð§°",fallback:"Kho công cụ dạy há»c tương tác"},{key:"highlightAI",icon:"â¨",fallback:"Trợ lý AI soạn bà i, tÃch hợp, viết SKKN, ..."},{key:"highlightSimulation",icon:"ð¬",fallback:"Mô phá»ng trá»±c quan (3D, 2D, chuyá»n Äá»ng, ...) các bà i dạy"},{key:"highlightClassroom",icon:"ð",fallback:"Quản lý lá»p chá»§ nhiá»m"},{key:"highlightFree",icon:"ð",fallback:"Dùng ngay, không cần cà i Äặt"}],TERMS_CONSENT_VERSION="2.0";async function logTermsConsent(o,u){try{await setDoc(doc(db,"termsConsentLogs",`${o}_${TERMS_CONSENT_VERSION}`),{uid:o,email:u,version:TERMS_CONSENT_VERSION,consentedAt:new Date().toISOString()},{merge:!0})}catch(T){console.warn("[LoginPage] logTermsConsent failed:",T)}}function LoginPage(){const[o,u]=reactExports.useState(""),[T,S]=reactExports.useState(!1),[E,C]=reactExports.useState(!1),[_,P]=reactExports.useState(!1),[R,I]=reactExports.useState(!1),L=reactExports.useRef(null),{loginWithGoogle:j,currentUser:M,authError:D,loading:F}=useAuth(),N=useNavigate(),{t:G,i18n:B}=useTranslation("login");reactExports.useEffect(()=>{function U(W){L.current&&!L.current.contains(W.target)&&C(!1)}
325return document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[]),reactExports.useEffect(()=>{if(!R)return;const U=K=>{K.key==="Escape"&&I(!1)};document.addEventListener("keydown",U);const W=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",U),document.body.style.overflow=W}},[R]);const H=T||F;reactExports.useEffect(()=>{M&&N("/dashboard")},[M,N]);const O=async()=>{if(!_){u(G("consentRequired"));return}try{u(""),S(!0);const U=await j();U&&(await logTermsConsent(U.uid,U.email),N("/dashboard"))}catch(U){console.error("[LoginPage] Login error:",U==null?void 0:U.code,U==null?void 0:U.message,U),u(mapAuthError(U,G)),S(!1)}},V=LANGUAGES.find(U=>U.code===B.language)??LANGUAGES[0];return jsxRuntimeExports.jsxs("div",{className:"login-page",children:[jsxRuntimeExports.jsx(SeoHelmet,{title:seoConfig.login.title,description:seoConfig.login.description,keywords:seoConfig.login.keywords,canonicalUrl:"https://giaoviendoimoi.com/login",structuredData:getStructuredData("landing")}),jsxRuntimeExports.jsxs("div",{className:"login-lang-switcher",ref:L,children:[jsxRuntimeExports.jsxs("button",{className:"login-lang-btn",onClick:()=>C(U=>!U),children:[V.flag?jsxRuntimeExports.jsx("img",{src:V.flag,alt:V.label,className:"login-lang-flag"}):jsxRuntimeExports.jsx("span",{className:"login-lang-emoji",children:"ðµð±"}),jsxRuntimeExports.jsx("span",{children:V.label}),jsxRuntimeExports.jsx("span",{className:"login-lang-arrow",children:E?"â²":"â¼"})]}),E&&jsxRuntimeExports.jsx("div",{className:"login-lang-menu",children:LANGUAGES.map(U=>jsxRuntimeExports.jsxs("button",{className:`login-lang-item${B.language===U.code?" active":""}`,onClick:()=>{B.changeLanguage(U.code),C(!1)},children:[U.flag?jsxRuntimeExports.jsx("img",{src:U.flag,alt:U.label,className:"login-lang-flag"}):jsxRuntimeExports.jsx("span",{className:"login-lang-emoji",children:"ðµð±"}),jsxRuntimeExports.jsx("span",{children:U.label})]},U.code))})]}),jsxRuntimeExports.jsxs("div",{className:"login-container",children:[jsxRuntimeExports.jsxs("div",{className:"login-brand",children:[jsxRuntimeExports.jsxs("div",{className:"login-logo",children:[jsxRuntimeExports.jsx("div",{className:"login-logo-badge",children:jsxRuntimeExports.jsx("img",{src:"/logo-176.png",srcSet:"/logo-176.png 1x, /logo-264.png 2x",alt:G("logoText"),className:"login-logo-img",width:176,height:172,decoding:"async"})}),jsxRuntimeExports.jsx("h1",{className:"logo-text",children:G("logoText")}),jsxRuntimeExports.jsx("p",{className:"logo-subtitle",children:G("logoSubtitle")})]}),jsxRuntimeExports.jsx("ul",{className:"login-highlights",children:HIGHLIGHTS.map(U=>jsxRuntimeExports.jsxs("li",{className:"login-highlight-item",children:[jsxRuntimeExports.jsx("span",{className:"login-highlight-icon","aria-hidden":"true",children:U.icon}),jsxRuntimeExports.jsx("span",{className:"login-highlight-text",children:G(U.key,U.fallback)})]},U.key))})]}),jsxRuntimeExports.jsxs("div",{className:"login-card",children:[jsxRuntimeExports.jsx("h2",{className:"login-title",children:G("loginTitle")}),jsxRuntimeExports.jsx("p",{className:"login-description",children:G("loginDescription")}),(o||D)&&jsxRuntimeExports.jsxs("div",{className:"error-message",children:[jsxRuntimeExports.jsx("strong",{children:o||D}),jsxRuntimeExports.jsx("button",{type:"button",className:"login-cookie-help-btn",onClick:()=>I(!0),children:G("cookieHelpBtn")})]}),jsxRuntimeExports.jsxs("div",{className:"login-disclaimer",children:[jsxRuntimeExports.jsx("p",{children:G("disclaimerCopyright")}),jsxRuntimeExports.jsx("p",{children:G("disclaimerStudentPhoto")}),jsxRuntimeExports.jsx("p",{children:G("disclaimerConsent")})]}),jsxRuntimeExports.jsxs("label",{className:"login-consent-checkbox",children:[jsxRuntimeExports.jsx("input",{type:"checkbox",checked:_,onChange:U=>{P(U.target.checked),U.target.checked&&u("")}}),jsxRuntimeExports.jsx("span",{children:G("consentCheckboxLabel")})]}),jsxRuntimeExports.jsxs("button",{className:"google-login-btn",onClick:O,disabled:H||!_,children:[jsxRuntimeExports.jsxs("svg",{className:"google-icon",viewBox:"0 0 24 24",children:[jsxRuntimeExports.jsx("path",{fill:"#4285F4",d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"}),jsxRuntimeExports.jsx("path",{fill:"#34A853",d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"}),jsxRuntimeExports.jsx("path",{fill:"#FBBC05",d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"}),jsxRuntimeExports.jsx("path",{fill:"#EA4335",d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"})]}),G(H?"loggingInBtn":"loginGoogleBtn")]}),H&&jsxRuntimeExports.jsxs("p",{className:"login-popup-hint",children:[jsxRuntimeExports.jsx("span",{children:G("popupHint","Nếu chưa thấy cá»a sá» ÄÄng nháºp, hãy tìm á» thanh tác vụ phÃa dưá»i mà n hình")}),jsxRuntimeExports.jsx("span",{className:"login-popup-hint-arrow","aria-hidden":"true",children:"â"})]}),jsxRuntimeExports.jsxs("p",{className:"login-note",children:[G("loginNotePrefix")," ",jsxRuntimeExports.jsx(Link$1,{to:"/dieu-khoan-su-dung",children:G("loginNoteTerms")})," ",G("loginNoteAnd")," ",jsxRuntimeExports.jsx(Link$1,{to:"/chinh-sach-bao-mat",children:G("loginNotePrivacy")}),G("loginNoteSuffix")]})]}),jsxRuntimeExports.jsx("div",{className:"login-footer",children:jsxRuntimeExports.jsx("p",{children:G("loginFooterText")})})]}),R&&jsxRuntimeExports.jsx("div",{className:"login-cookie-modal-overlay",onClick:()=>I(!1),role:"presentation",children:jsxRuntimeExports.jsxs("div",{className:"login-cookie-modal",onClick:U=>U.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":"
325cookie-help-title",children:[jsxRuntimeExports.jsx("button",{type:"button",className:"login-cookie-modal-close",onClick:()=>I(!1),"aria-label":G("cookieHelpClose"),children:"Ã"}),jsxRuntimeExports.jsx("h3",{className:"login-cookie-modal-title",id:"cookie-help-title",children:G("cookieHelpTitle")}),jsxRuntimeExports.jsx("ol",{className:"login-cookie-steps",children:["cookieHelpStep1","cookieHelpStep2","cookieHelpStep3","cookieHelpStep4","cookieHelpStep5"].map(U=>jsxRuntimeExports.jsx("li",{dangerouslySetInnerHTML:{__html:G(U)}},U))}),jsxRuntimeExports.jsx("img",{src:"/images/delete-cookies.png",alt:G("cookieHelpImgAlt"),className:"login-cookie-modal-img",loading:"lazy"}),jsxRuntimeExports.jsx("button",{type:"button",className:"login-cookie-modal-ok",onClick:()=>I(!1),children:G("cookieHelpClose")})]})})]})}function HelpVideoModal({isOpen:o,onClose:u,videoId:T,title:S="Hưá»ng Dẫn",description:E=""}){return o?jsxRuntimeExports.jsx(motion.div,{className:"help-video-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:u,children:jsxRuntimeExports.jsxs(motion.div,{className:"help-video-modal-content",initial:{scale:.9,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.9,opacity:0},transition:{duration:.3},onClick:C=>C.stopPropagation(),children:[jsxRuntimeExports.jsx("button",{className:"help-video-modal-close",onClick:u,"aria-label":"Äóng modal",children:"â"}),jsxRuntimeExports.jsxs("div",{className:"help-video-modal-header",children:[jsxRuntimeExports.jsx("h2",{children:S}),E&&jsxRuntimeExports.jsx("p",{className:"help-video-modal-description",children:E})]}),T?jsxRuntimeExports.jsx("div",{className:"help-video-modal-video-container",children:jsxRuntimeExports.jsx("iframe",{width:"100%",height:"100%",src:`https://www.youtube.com/embed/${T}
325?autoplay=1`,title:S,frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}):jsxRuntimeExports.jsxs("div",{className:"help-video-modal-coming-soon",children:[jsxRuntimeExports.jsx("span",{className:"help-video-modal-coming-soon-icon",children:"ð¬"}),jsxRuntimeExports.jsx("p",{children:"Video hưá»ng dẫn sắp ÄÆ°á»£c cáºp nháºt"})]})]})}):null}const PLATFORM_CATALOG=` 326## TÃNH NÄNG 327 328Má»i hoạt Äá»ng dưá»i Äây Äá»u dùng trá»±c tiếp trên lá»p Và giao bà i vá» nhÃ ÄÆ°á»£c. 329 330**Nhóm A â GV trình chiếu, há»c sinh KHÃNG cần thiết bá» riêng:** 331- 𪢠Kéo Co - Äua thuyá»n kiến thức (/tug-of-war-game) â 2 Äá»i thi Äấu kéo co theo sá» câu trả lá»i Äúng. Không khà cạnh tranh cao, hợp ôn táºp/cá»§ng cá» cuá»i bà i. 332- ð¡ Vòng Quay - Äua Vá»t (/wheel-quiz) â quay vòng hoặc Äua vá»t Äá» chá»n ngẫu nhiên há»c sinh/câu há»i, kết hợp trả lá»i trắc nghiá»m. Hợp khá»i Äá»ng, kiá»m tra bà i cÅ©, gá»i HS lên bảng. 333- ð§© Láºt Mảnh Ghép (/flip-puzzle-game) â trả lá»i Äúng Äá» láºt từng mảnh, lá» dần ảnh ẩn phÃa sau, HS Äoán tên bức ảnh. Hợp dẫn dắt và o bà i má»i (Äặt ảnh ẩn là chá»§ Äá» bà i há»c). 334- ð Äoà n Tà u Tri Thức (/knowledge-train-game) â kéo thả xếp các toa tà u thà nh Äúng thứ tá»±, Äáp án toa trưá»c ná»i và o câu há»i toa sau. Hợp ná»i dung Cà TRÃNH Tá»°: quy trình, các bưá»c, má»c thá»i gian, chuá»i sá»± kiá»n, chuá»i phản ứng. 335- ð¤ à Chữ - Khóa Bà Máºt (/crossword-puzzle) â 2 chế Äá»: (1) ô chữ Äiá»n hà ng ngang rá»i ghép ra từ khóa; (2) tìm từ ẩn trong bảng chữ cái (word search). Cả 2 Äá»u hợp từ vá»±ng, thuáºt ngữ, tên riêng, khái niá»m ngắn â ná»i dung là TỪ/CỤM TỪ chứ không phải câu dà i. 336- 𧨠Dò Mìn (/minesweeper) â chá»n ô chứa Äáp án Äúng Äá» Äi qua bãi mìn, chá»n nhầm là ná», có 3 mạng. Kết hợp kiến thức vá»i tư duy logic và yếu tá» há»i há»p. 337- ð² Game Theo Lượt (/turn-based-game) â tung xúc xắc, di chuyá»n nhân váºt, vượt chưá»ng ngại váºt bằng câu há»i. Hợp nhóm 2â4 HS chÆ¡i chung Má»T thiết bá» (góc há»c táºp, lá»p Ãt máy). 338- ð¤ Kéo Thả - Ná»i à (/quiz-game) â 3 dạng bà i kéo thả: (1) kéo nhãn thả Äúng vá» trà TRÃN ẢNH â hợp chú thÃch sÆ¡ Äá», bản Äá», cấu tạo, hình vẽ; (2) ná»i ý hai cá»t tương ứng â hợp cặp khái niá»mâÄá»nh nghÄ©a, sá»± kiá»nânÄm, từânghÄ©a; (3) sắp xếp thứ tá»±. Äây là feature hợp nhất khi ná»i dung có QUAN Há» TÆ¯Æ NG ỨNG hoặc cần chá» vá» trà trên hình. 339- ð¼ï¸ Ảnh Tương Tác (/interactive-image) â Äặt Äiá»m chạm lên ảnh, HS click và o Äiá»m Äá» trả lá»i quiz hoặc là m phiếu há»c táºp. Hợp bản Äá», sÆ¡ Äá», cấu tạo máy móc, cÆ¡ thá» ngưá»i, tranh minh há»a. 340- ð¬ Video Tương Tác (/interactive-video) â chèn câu há»i trắc nghiá»m và o các má»c thá»i gian giữa video YouTube. Hợp giao bà i vá» nhà và lá»p há»c Äảo ngược. 341- ð§ Bảo Tà ng Panorama (/panorama-museum) â 2 chế Äá». (1) Ảnh 360°: hợp giá»i thiá»u di tÃch, Äá»a danh, hiá»n tượng tá»± nhiên, không gian khó Äến táºn nÆ¡i. (2) Phòng triá»n lãm 3D Äi bá» (tá»i Äa 45 khung tranh): GV treo ảnh tư liá»u, hoặc phát mã 4 sá» cho HS tá»± ná»p sản phẩm lên tưá»ng, má»i khung có tên tác phẩm + mô tả + tên tác giả, có chế Äá» tá»± Äá»ng tham quan. RẤT HỢP Lá»ch sá», Äá»a lÃ, Giáo dục Äá»a phương: trưng bà y ảnh tư liá»u lá»ch sá», bản Äá», di sản - là ng nghá» - nhân váºt Äá»a phương, báo cáo dá»± án/sản phẩm há»c táºp cá»§a HS. 342- ð SÆ¡ Äá» Tư Duy (/mind-map) â GV dá»±ng sẵn các nhánh, trong giá» cả lá»p cùng chá»n phương án, cuá»i giá» tá»± sinh sÆ¡ Äá» hoà n chá»nh và xuất ảnh. Hợp tá»ng kết bà i/c
342hương, há» thá»ng hóa kiến thức. 343- ð Thẻ Láºt - Flashcard (/flashcard) â thẻ ghi nhá» 2 mặt kèm hình ảnh và âm thanh, có tá»± Äánh giá "Äã hiá»u / Chưa chắc". Hợp ôn từ vá»±ng, công thức, Äá»nh nghÄ©a; Äặc biá»t hợp HS tá»± há»c lại á» nhà . 344- ð¦ Từ Ngữ Biết Bay (/flying-words-game) â các từ bay ngẫu nhiên, HS bắt từ (bằng tay qua camera HOẶC bằng chuá»t â không bắt buá»c camera) rá»i ghép thà nh câu Äúng. Hợp luyá»n Äặt câu, tráºt tá»± từ, ngoại ngữ. 345- ð Truy Tìm Kho Báu (/scavenger-hunt) â gá»p NHIá»U bà i há»c Äã tạo thà nh má»t cuá»c sÄn nhiá»u trạm, giải xong trạm nà y má»i má» trạm sau, HS thu chữ cái Äá» giải từ khóa cuá»i. Hợp hoạt Äá»ng trải nghiá»m, ngoại khóa, ôn táºp cả chá»§ Äá» lá»n. â ï¸ Cần có sẵn và i bà i há»c khác trưá»c má»i tạo ÄÆ°á»£c. 346- ðºï¸ Hà nh Trình Há»c Táºp (/journey) â lá» trình nhiá»u chặng, má»i chặng má»t bá» Äá», HS Äi hết hà nh trình, theo dõi kết quả từng em. Hợp ôn táºp cả chương hoặc giao bà i dà i ngà y. Nháºn 4 dạng câu: ABCD, nhiá»u Äáp án, Äúng/sai, Äiá»n từ. [Cần gói FullGame] 347 348**Nhóm B â Bắt buá»c có camera (webcam cá»§a GV):** 349- â Chém Hoa Quả / Bắt Bong Bóng (/hand-slash-quiz) â vung tay chém hoa quả hoặc chụm ngón tay bắt bong bóng Äá» chá»n Äáp án. Sôi Äá»ng, hợp khá»i Äá»ng và Äá»i không khà giữa giá». 350- ð¤ Quiz Nghiêng Äầu (/head-tilt-quiz) â nghiêng Äầu sang trái/phải Äá» chá»n A hoặc B. â ï¸ CHá» nháºn câu há»i có ÄÃNG 2 Äáp án â hợp câu Äúng/sai, có/không, so sánh 2 phương án. Câu 4 Äáp án KHÃNG dùng ÄÆ°á»£c. 351- â Cuá»c Äua Ngôi Sao (/star-bag-game) â 2 HS lên bảng giÆ¡ sá» ngón tay tương ứng 4 Äáp án, ai Äúng thì già nh sao. Hợp thi Äấu tay Äôi trưá»c lá»p. 352- 𤸠Thá» Dục ABC (/pose-quiz) â là m tư thế thá» dục tương ứng Äáp án theo hình minh há»a. Hợp giải lao giữa giá», lá»p nhá» tuá»i, kết hợp váºn Äá»ng. 353- ð· á»ng KÃnh May Mắn (/face-random) â camera quét lá»p và chá»n ngẫu nhiên má»t HS Äá» gá»i trả lá»i (cÅ©ng gá»i ÄÆ°á»£c bằng danh sách ảnh), kết hợp kèm câu há»i. 354 355**Nhóm C â Há»c sinh có thiết bá» riêng (Äiá»n thoại/máy tÃnh):** 356- â±ï¸ Trắc Nghiá»m Theo Nhá»p Äá» (/paced-quiz) â GV Äiá»u khiá»n nhá»p từng câu trên mà n chiếu, HS trả lá»i trên máy mình, có bảng xếp hạng. Nháºn ÄÆ°á»£c cả câu Sắp xếp và Ná»i ý (dạng "rich"), nên Äây là nÆ¡i dùng bá» câu há»i phong phú nhất khi nháºp từ JSON. 357- âï¸ Game Äá»i Kháng (/versus-game) â Äấu 1v1 realtime trên thiết bá» riêng, trả lá»i Äúng Äẩy Äá»i thá»§ lùi, GV má» phòng và theo dõi trá»±c tiếp. [Cần gói FullGame] 358- ð¹ï¸ Game Tá»± Tạo (/html-embed-game) â dán code HTML game tá»± là m hoặc do AI sinh, HS chÆ¡i ngay trên há» thá»ng; há» trợ SCORM/iSpring/Articulate. [Cần gói FullGame] 359 360**Nhóm D â Lá»p KHÃNG có thiết bá» nà o:** 361- ð Chế Äá» Giấy - Quét Thẻ (/paper-mode) â kiá»u Plickers: má»i HS cầm má»t thẻ giấy in sẵn có 4 mặt A/B/C/D, xoay thẻ Äá» chá»n Äáp án, GV quét cả lá»p bằng camera Äiá»n thoại và chấm xong trong và i giây. Có bảng xếp hạng và phân tÃch từng câu. Thẻ in má»t lần dùng cả nÄm. Äây là lá»±a chá»n Tá»T NHẤT khi lá»p cấm Äiá»n thoại hoặc HS không có máy. 362 363**Công cụ há» trợ:** 364- ð Rá»ng Ngá»§ - Quản Lý Lá»p (/noise-tracker) â rá»ng ngá»§ khi lá»p yên tÄ©nh, thức giấc khi á»n; giám sát tiếng á»n bằng micro. Dùng Äá» giữ tráºt tá»±, không phải hoạt Äá»ng kiến thức. 365- ð Thư viá»n cá»ng Äá»ng (/community-library) â tải bà i cá»§a giáo viên khác vá» dùng, miá» n phÃ. 366- ðï¸ Ngân hà ng câu há»i (/question-bank) â lưu, tái sá» dụng và nháºp câu há»i từ JSON/Excel/Word. 367- ð¤ Công cụ AI (/ai-tools) â AI viết SKKN, biá»n pháp GVG, tÃch hợp ná»i dung liên môn... (cần ÄÄng nháºp). 368 369## â ï¸ SOẠN Ná»I DUNG CHO TỪNG LOẠI â Äá»C KỸ TRƯá»C KHI GỢI à 370 371Äa sá» feature (Kéo Co, Nhá»p Äá», Vòng Quay, Dò Mìn, Äá»i Kháng, Theo Lượt, Kho Báu, 372Hà nh Trình, và toà n bá» nhóm camera) Än **trắc nghiá»m thưá»ng**: 4 dạng ABCD / nhiá»u Äáp 373án / Äúng-sai / Äiá»n từ ngắn. Vá»i các feature Äó cứ soạn câu há»i trắc nghiá»m bình 374thưá»ng là chạy ÄÆ°á»£c (nhá» kiá»m tra giá»i hạn Sá» ÄÃP ÃN á» phần JSON bên dưá»i). 375 376NHƯNG các feature dưá»i Äây **KHÃNG chạy bằng trắc nghiá»m thưá»ng**. Nếu chá» ÄÆ°a cho GV 377má»t xấp câu ABCD rá»i bảo "bá» và o game nà y" thì GV sẽ không tạo ÄÆ°á»£c bà i. Phải tư vấn 378Äúng dạng dữ liá»u cá»§a nó: 379 380**ð¤ à Chữ (/crossword-puzzle) â chế Äá» Ã chữ + khóa bà máºt.** Äây là feature khó nhất 381và dá» tư vấn sai nhất. GV KHÃNG gõ câu há»i trưá»c, mà **vẽ lưá»i chữ trưá»c**: 382- Má»i HÃNG ngang là Má»T TỪ (Äáp án), gõ sẵn từng chữ cái và o ô. Má»i hà ng gắn Äúng 1 383 câu há»i, và Äáp án Äúng cá»§a câu Äó CHÃNH Là từ cá»§a hà ng â Äúng từng chữ cái. 384- Má»t Cá»T dá»c ÄÆ°á»£c chá»n là m **từ khóa**: má»i hà ng góp Äúng 1 chữ cái tại cá»t Äó, Äá»c 385 dá»c từ trên xuá»ng ra từ khóa. Sá» hà ng = sá» chữ cái cá»
385§a từ khóa. 386 387**QUY TRÃNH BẮT BUá»C â là m Äá»§ 2 bưá»c, Äừng dừng á» bưá»c 1:** 388 389*Bưá»c 1 â chá»t TỪ KHÃA (hà ng dá»c).* Thưá»ng là chá»§ Äá» bà i há»c, viết HOA không dấu. 390Và dụ từ khóa "SINHVAT" có 7 chữ â ô chữ sẽ có 7 hà ng ngang. 391 392*Bưá»c 2 â vá»i TỪNG chữ cái cá»§a từ khóa, tìm Má»T từ ngang CHỨA chữ cái Äó.* Äây má»i là 393phần khó và là phần hay bá» bá» sót. Không ÄÆ°á»£c chá» ÄÆ°a từ khóa rá»i bảo GV "tá»± nghÄ© các 394từ hà ng ngang" â phải gợi ý Äá»§ cả 7 từ. 395 396**BẮT BUá»C trả lá»i theo Äúng danh sách nà y â liá»t kê từ khóa rá»i ÄỦ từng hà ng, không 397ÄÆ°á»£c rút gá»n hay bá» lá»ng bằng "tương tá»±...", "v.v.":** 398 399Từ khóa: SINHVAT (7 chữ â 7 hà ng ngang) 400Hà ng 1: THUCVAT â chữ S (vá» trà 4) â Câu há»i: Nhóm sinh váºt tá»± tá»ng hợp chất hữu cÆ¡ nhỠánh sáng? 401Hà ng 2: VISINHVAT â chữ I (vá» trà 2) â Câu há»i: ... 402Hà ng 3: ... â chữ N (vá» trà ...) â Câu há»i: ... 403Hà ng 4: ... â chữ H ... 404Hà ng 5: ... â chữ V ... 405Hà ng 6: ... â chữ A ... 406Hà ng 7: ... â chữ T ... 407 408Má»i dòng gá»m Äá»§: từ hà ng ngang (Äáp án, viết liá»n không dấu) â chữ cái á» cá»t khóa + 409vá» trà cá»§a nó trong từ â câu há»i gợi ý. Sá» dòng "Hà ng N" phải bằng Äúng sá» chữ cái cá»§a 410từ khóa; thiếu má»t hà ng là GV không dá»±ng ÄÆ°á»£c ô chữ. 411 412**Cách cÄn chá»nh trong lưá»i (giải thÃch cho GV):** lưá»i cho phép Äặt từ bắt Äầu á» bất kỳ 413cá»t nà o, ô trá»ng Äá» trắng. GV Äẩy từ sang trái/phải sao cho chữ cái cần rÆ¡i trúng cá»t 414khóa. Quy tắc: *cá»t bắt Äầu cá»§a từ = cá»t khóa â (vá» trà chữ trong từ â 1)*. Nên nếu chữ 415cần nằm á» vá» trà thứ 4 cá»§a từ, cá»t khóa nên chá»n Äá»§ xa bên phải (⥠4) Äá» từ không bá» 416trà n ra ngoà i lưá»i. Khi gợi ý, ưu tiên các từ có chữ cần nằm á» vá» trà gần nhau giữa các 417hà ng â lưá»i sẽ gá»n và cân Äá»i hÆ¡n. 418 419**Rà ng buá»c khi chá»n từ ngang:** 420- Bắt buá»c chứa chữ cái tương ứng cá»§a từ khóa. Nếu không nghÄ© ra từ nà o chứa chữ Äó 421 trong phạm vi bà i há»c, hãy Äá»I TỪ KHÃA khác â Äừng ép má»t từ ngang lạc chá»§ Äá». 422- Là TỪ/CỤM TỪ ngắn (nên ⤠12 chữ cái Äá» lưá»i không quá rá»ng), KHÃNG dùng câu dà i, 423 KHÃNG dùng sá»/công thức. Vì váºy Ãt hợp vá»i môn cần tÃnh toán. 424- Chữ cái ÄÆ°á»£c gõ dạng HOA. Cụm từ nhiá»u tiếng vẫn dùng ÄÆ°á»£c, GV gõ liá»n các ô. 425- Câu há»i nháºn 4 dạng ABCD/Äúng-sai/nhiá»u Äáp án/Äiá»n từ, nhưng dù dạng nà o thì Äáp án 426 Äúng vẫn phải khá»p Äúng sỠô cá»§a hà ng. 427 428**ð¤ à Chữ â chế Äá» Tìm từ (word search).** Chá» cần DANH SÃCH TỪ cần tìm (há» thá»ng tá»± 429giấu và o bảng chữ cái và tá»± chèn chữ nhiá» u). Không cần câu há»i. Từ khóa tá»i Äa 30 ký tá»±. 430Äây là chế Äá» nhẹ hÆ¡n nhiá»u â hợp khi GV chá» muá»n ôn từ vá»±ng nhanh. 431 432**ð§© Láºt Mảnh Ghép (/flip-puzzle-game).** Sá» câu há»i phải **BẰNG ÄÃNG sỠô cá»§a lưá»i** â 433thiếu hay thừa Äá»u KHÃNG lưu ÄÆ°á»£c bà i (há» thá»ng chặn, báo lá»i). Vì váºy phải **chá»n kÃch 434thưá»c lưá»i TRƯá»C**, rá»i má»i sinh JSON Äúng bằng sỠô Äó. 435- Các lưá»i có sẵn (chá»n 1 trong các má»c nà y, không tá»± Äặt sá» khác): 436 2Ã2 = 4 câu · 2Ã3 = 6 · 3Ã3 = 9 · 3Ã4 = 12 · 4Ã4 = 16 · 4Ã5 = 20 · 4Ã6 = 24 · 437 5Ã5 = 25 · 5Ã6 = 30 · 6Ã6 = 36. 438- Gợi ý thá»±c dụng: 9 hoặc 12 câu là vừa má»t hoạt Äá»ng; từ 20 câu trá» lên khá dà i. 439- Khi tư vấn phải nói rõ: "chá»n lưá»i 3Ã3 â cần Äúng 9 câu", rá»i sinh Äúng 9 câu. 440 Äừng sinh má»t sá» lẻ như 7 hay 10 câu â GV sẽ kẹt á» bưá»c lưu. 441- Còn cần **má»t ẢNH** là m ná»n (ảnh bá» che, HS láºt dần Äá» Äoán) và **tên/Äáp án cá»§a ảnh**. 442 Không có ảnh thì không tạo ÄÆ°á»£c bà i. 443- Äá»i lưá»i sau khi Äã nháºp câu: câu thừa bá» cắt bá»t, nên chá»t lưá»i ngay từ Äầu. 444 445**ð Äoà n Tà u Tri Thức (/knowledge-train-game).** KHÃNG dùng Äáp án nhiá» u. Má»i toa là 446má»t cặp **Câu há»i â Äáp án Äúng** (nháºp câu ABCD và o thì há» thá»ng chá» giữ Äáp án Äúng, 447bá» hết phương án sai). Tá»i Äa 30 toa. Soạn theo dạng danh sách cặp há»iâÄáp ngắn, và 448ná»i dung nên có TRÃNH Tá»° tá»± nhiên Äá» viá»c xếp toa có ý nghÄ©a. 449
450**ð Thẻ Láºt (/flashcard).** KHÃNG phải quiz, không có Äáp án Äúng/sai. Má»i thẻ là 2 mặt 451**Mặt trưá»c / Mặt sau** (kèm ảnh, âm thanh tùy chá»n). Soạn theo dạng cặp: thuáºt ngữ â 452Äá»nh nghÄ©a, từ â nghÄ©a, ký hiá»u â tên gá»i. Äừng soạn câu há»i ABCD cho feature nà y. 453 454**ð¤ Kéo Thả - Ná»i à (/quiz-game).** Tùy dạng: (1) kéo nhãn lên ảnh â cần Má»T ẢNH + danh 455sách nhãn kèm vá» trà cần chú thÃch; (2) ná»i ý â cần các CẶP tương ứng tráiâphải; 456(3) sắp xếp â cần danh sách mục theo Äúng thứ tá»±. Không phải câu ABCD. 457 458**ð¼ï¸ Ảnh Tương Tác / ð¬ Video Tương Tác / ð§ Bảo Tà ng.** Cần TƯ LIá»U trưá»c (ảnh, link 459YouTube, ảnh 360°/ảnh trưng bà y), câu há»i chá» là phần gắn thêm. Không có tư liá»u thì 460không tạo ÄÆ°á»£c bà i â khi tư vấn phải nhắc GV chuẩn bỠảnh/video trưá»c. 461 462**ð¤ Quiz Nghiêng Äầu (/head-tilt-quiz).** Chá» ÄÃNG 2 Äáp án. Soạn dạng Äúng/sai, 463có/không, chá»n giữa 2 phương án. Câu 4 Äáp án phải viết lại má»i dùng ÄÆ°á»£c. 464 465**ð¹ï¸ Game Tá»± Tạo (/html-embed-game).** Không soạn câu há»i â cần Mà HTML cá»§a game.`,PLATFORM_ASSIGNMENT=` 466## GIAO BÃI & CÃNG CỤ 467 468**Giao bà i:** GV tạo bà i â há» thá»ng sinh mã 4 sá» â HS và o giaoviendoimoi.com/join â nháºp mã â là m trên Äiá»n thoại. Link mặc Äá»nh sá»ng 15 ngà y (bản miá» n phÃ); gói Extended Link kéo dà i 1â5 nÄm. 469**Thư viá»n cá»ng Äá»ng:** GV ÄÄng bà i â GV khác lá»c theo môn/lá»p/loại game â clone vá» tà i khoản mình. Xem miá» n phÃ, tá»n quota khi clone. 470**Ngân hà ng câu há»i:** Câu há»i tá»± lưu khi tạo bà i. Nháºp lại và o bà i má»i Äá» khá»i gõ lại. Nháºn JSON dán trá»±c tiếp (tá»i Äa 50 câu má»i lần).`,CHATBOT_PROXY_URL="https://chatbotproxy-6evfxw332a-uc.a.run.app";async function callGemini(o,u,T){var P;const S=[...u.map(R=>({role:R.role==="user"?"user":"model",parts:[{text:R.text}]})),{role:"user",parts:[{text:o}]}],E=await((P=getAuth().currentUser)==null?void 0:P.getIdToken());if(!E)throw new Error("Cần ÄÄng nháºp Äá» dùng trợ lý AI.");const C=await fetch(CHATBOT_PROXY_URL,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({contents:S,systemPrompt:T})});if(!C.ok){const R=await C.json().catch(()=>({}));throw new Error(R.error||"Tất cả model Äá»u báºn, vui lòng thá» lại sau.")}const _=await C.json();if(!_.text)throw new Error("Tất cả model Äá»u báºn, vui lòng thá» lại sau.");return _.text}const PROMPT_BASE=`Bạn là trợ lý cá»§a "Giáo viên Äá»i má»i" (giaoviendoimoi.com) â ná»n tảng tạo game dạy há»c tương tác. 471Trả lá»i thân thiá»n, ngắn gá»n, bằng tiếng Viá»t. 472Khi muá»n Äiá»u hưá»ng Äến tÃnh nÄng, thêm và o CUá»I message: %%ACTIONS:[{"label":"Tên nút","route":"/route"}]%% 473Không nhắc Äến ACTIONS trong lá»i nói.`,PROMPT_FEATURES=PLATFORM_CATALOG,PROMPT_ASSIGNMENT=PLATFORM_ASSIGNMENT,PROMPT_UPGRADE=` 474## GÃI NÃNG CẤP 475 476- **Miá» n phÃ:** Dùng ÄÆ°á»£c tất cả, có giá»i hạn sá» bà i 477- **PRO:** Không giá»i hạn, má» Game Äá»i Kháng + Game tá»± tạo + upload audio 478- Nâng cấp: /upgrade hoặc nút "Nâng cấp" trên dashboard`,PROMPT_TROUBLESHOOT=` 479## Lá»I THƯá»NG GẶP 480 481**Camera không hoạt Äá»ng:** 482- Cấp quyá»n camera cho trình duyá»t (biá»u tượng camera trên thanh Äá»a chá») 483- Chá» chạy trên HTTPS, dùng Chrome/Edge má»i nhất 484- Mà n hình Äen: tải lại trang, kiá»m tra app khác không chiếm camera 485- Hưá»ng dẫn chi tiết: https://docs.google.com/document/d/18pZYh3r19ndHbBSDMtZ5qa7ldQYGykc95pr0P2VCpu4/edit?tab=t.0 486 487**HS không và o ÄÆ°á»£c bà i:** Kiá»m tra link/mã chưa hết hạn (15 ngà y). Và o giaoviendoimoi.com/join nháºp mã 4 sá». 488 489**Trang trắng/ÄÆ¡:** Xóa cache (Ctrl+Shift+Delete) hoặc Ctrl+F5. 490 491**Hết quota:** Nâng cấp PRO hoặc xóa bà i cÅ©. 492 493**Công thức toán không hiá»n thá»:** Dùng LaTeX trong cặp $...$ â vd: $\\frac{3}{4}$ 494 495**Chế Äá» giấy - quét thẻ không nháºn / kết quả sai:** 496- Quy trình Äúng: /paper-mode â "In bá» thẻ" tải PDF â cắt, phát Äúng sá» thẻ cho Äúng HS theo thứ tá»± danh sách lá»p â tạo Bá» câu há»i â và o "Lá»p há»c" bấm "Quét" 497- Sá» thẻ phải khá»p thứ tá»± HS trong danh sách lá»p, nếu lá»ch thì Äiá»m gán nhầm ngưá»i 498- Quét không nháºn: Äảm bảo Äá»§ sáng, không chói/ngược sáng, thẻ phẳng không cong, giÆ¡ cao khá»i che nhau, ÄÆ°a camera bao quát cả lá»p và giữ và i giây 499- Tá» lá» Äúng thấp bất thưá»ng: kiá»m tra Äáp án Äúng trong Bá» câu há»i, và má» tên HS á» trang kết quả xem có nhiá»u câu "không quét ÄÆ°á»£c" không (nếu có thì lá»i khâu quét, không phải bà i là m)`,TOPIC_PATTERNS={troubleshoot:/camera|Äen|lá»i|không (chạy|hoạt Äá»ng|và o|má»|load|nháºn|quét)|trắng|ÄÆ¡|cháºm|há»ng|fix|sá»a|quota|hết lượt|công thức|katex|latex|in thẻ|
499in bá» thẻ|quét (thẻ|không|sai|lá»i)|sá» thẻ/i,upgrade:/pro|nâng cấp|mua|giá|gói|phÃ|trả phÃ|trial|miá»
n phÃ|bản trả phÃ|upgrade|thanh toán/i,assignment:/giao bà i|vá» nhà |mã|join|link bà i|thá»i hạn|kết quả|ná»p bà i|há»c sinh là m|assignment/i,features:/tÃnh nÄng|game|tool|công cụ|dùng gì|nên chá»n|phù hợp|ôn táºp|khá»i Äá»ng|cạnh tranh|giao bà i|trình chiếu|lá»p há»c|môn|lá»p \d|tiá»u há»c|thcs|thpt|flashcard|thẻ láºt|dò mìn|minesweeper|sÆ¡ Äá» tư duy|mind.?map|từ ngữ biết bay|flying.?words|sắp xếp câu|chế Äá» giấy|quét thẻ|thẻ giấy|plickers|không có (thiết bá»|Äiá»n thoại|máy)|không cần (thiết bá»|Äiá»n thoại|máy)|chấm trắc nghiá»m|kiá»m tra nhanh/i};function buildSystemPrompt(o,u){const T=[...u.slice(-2).map(C=>C.text),o].join(" "),S=[PROMPT_BASE];return(u.length===0||TOPIC_PATTERNS.features.test(T))&&S.push(PROMPT_FEATURES),TOPIC_PATTERNS.assignment.test(T)&&S.push(PROMPT_ASSIGNMENT),TOPIC_PATTERNS.upgrade.test(T)&&S.push(PROMPT_UPGRADE),TOPIC_PATTERNS.troubleshoot.test(T)&&S.push(PROMPT_TROU
499BLESHOOT),S.length===1&&(S.push(PROMPT_FEATURES),S.push(PROMPT_TROUBLESHOOT)),S.join(` 500`)}function parseActions(o){const u=o.match(/%%ACTIONS:(\[.*?\])%%/s);if(!u)return{text:o.trim()};try{const T=JSON.parse(u[1]);return{text:o.replace(/%%ACTIONS:\[.*?\]%%/s,"").trim(),actions:T}}catch{return{text:o.trim()}}}async function sendChatMessage(o,u){const S=u.map(R=>({role:R.role,text:R.text})).slice(-6),E=buildSystemPrompt(o,S),C=await callGemini(o,S,E),{text:_,actions:P}=parseActions(C);return{role:"assistant",text:_,actions:P}}function renderMarkdown(o){const u=o.split(` 501`),T=[];let S=[];function E(){S.length!==0&&(T.push(jsxRuntimeExports.jsx("ul",{className:"chatbot-md-list",children:S},`ul-${T.length}`)),S=[])}return u.forEach((C,_)=>{const P=C.match(/^#{1,3}\s+(.+)/);if(P){E(),T.push(jsxRuntimeExports.jsx("p",{className:"chatbot-md-heading",dangerouslySetInnerHTML:{__html:inlineMd(P[1])}},_));return}const R=C.match(/^[\*\-]\s+(.+)/);if(R){S.push(jsxRuntimeExports.jsx("li",{dangerouslySetInnerHTML:{__html:inlineMd(R[1])}},_));return}const I=C.match(/^\d+\.\s+(.+)/);if(I){S.push(jsxRuntimeExports.jsx("li",{dangerouslySetInnerHTML:{__html:inlineMd(I[1])}},_));return}if(C.trim()===""){E(),_<u.length-1&&T.push(jsxRuntimeExports.jsx("div",{className:"chatbot-line-gap"},_));return}E(),T.push(jsxRuntimeExports.jsx("p",{dangerouslySetInnerHTML:{__html:inlineMd(C)}},_))}),E(),T}function inlineMd(o){return o.replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/`(.+?)`/g,"<code>$1</code>")}const WELCOME={role:"assistant",text:`Xin chà o thầy/cô! ð 502Tôi có thá» giúp gợi ý tÃnh nÄng game phù hợp cho bà i há»c, hoặc giải Äáp thắc mắc vá» các công cụ trên ná»n tảng. 503 504Thầy/cô Äang cần tạo hoạt Äá»ng gì cho lá»p há»c hôm nay?`},SUGGESTIONS=["Gợi ý game ôn táºp cuá»i tiết há»c","Tôi muá»n khá»i Äá»ng Äầu giá» cho vui","Tôi muá»n dạy 1 kiến thức má»i","Giao bà i vá» nhà tương tác, không dùng giấy","HS không có Äiá»n thoại, dùng game gì?"];function ChatbotWidget(){const[o,u]=reactExports.useState(!1),[T,S]=reactExports.useState([WELCOME]),[E,C]=reactExports.useState(""),[_,P]=reactExports.useState(!1),[R,I]=reactExports.useState(null),L=reactExports.useRef(null),j=reactExports.useRef(null),M=useNavigate();reactExports.useEffect(()=>{var B;o&&((B=L.current)==null||B.scrollIntoView({behavior:"smooth"}),setTimeout(()=>{var H;return(H=j.current)==null?void 0:H.focus()},100))},[o,T]);function D(B){C(B.target.value);const H=B.target;H.style.height="auto",H.style.height=Math.min(H.scrollHeight,140)+"px"}async function F(B){const H=(B??E).trim();if(!H||_)return;C(""),j.current&&(j.current.style.height="auto"),I(null);const O={role:"user",text:H},V=[...T,O];S(V),P(!0);try{const U=await sendChatMessage(H,T);S([...V,U])}catch(U){I((U==null?void 0:U.message)??"Có lá»i xảy ra, vui lòng thá» lại.")}finally{P(!1)}}function N(B){B.key==="Enter"&&!B.shiftKey&&(B.preventDefault(),F())}function G(B){u(!1),M(B)}return reactDomExports.createPortal(jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("button",{className:`chatbot-fab${o?" chatbot-fab--open":""}`,onClick:()=>u(B=>!B),"aria-label":"Trợ lý tư vấn",title:"Trợ lý tư vấn tÃnh nÄng",children:o?jsxRuntimeExports.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}):jsxRuntimeExports.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:jsxRuntimeExports.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}),o&&jsxRuntimeExports.jsxs("div",{className:"chatbot-panel",children:[jsxRuntimeExports.jsxs("div",{className:"chatbot-header",children:[jsxRuntimeExports.jsx("span",{className:"chatbot-header__icon",children:"â¨"}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("div",{className:"chatbot-header__title",children:"Trợ lý Giáo viên Äá»i má»i"}),jsxRuntimeExports.jsx("div",{className:"chatbot-header__sub",children:"Tư vấn tÃnh nÄng game dạy há»c"})]}),jsxRuntimeExports.jsx("button",{className:"chatbot-header__close",onClick:()=>u(!1),children:"â"})]}),jsxRuntimeExports.jsxs("div",{className:"chatbot-messages",children:[T.map((B,H)=>jsxRuntimeExports.jsxs("div",{className:`chatbot-msg chatbot-msg--${B.role}`,children:[jsxRuntimeExports.jsx("div",{className:"chatbot-msg__bubble",children:B.role==="assistant"?renderMarkdown(B.text):B.text.split(` 505`).map((O,V)=>jsxRuntimeExports.jsxs("span",{children:[O,V<B.text.split(` 506`).length-1&&jsxRuntimeExports.jsx("br",{})]},V))}),B.actions&&B.actions.length>0&&jsxRuntimeExports.jsx("div",{className:"chatbot-msg__actions",children:B.actions.map((O,V)=>jsxRuntimeExports.jsxs("button",{className:"chatbot-action-btn",onClick:()=>G(O.route),children:[O.label," â"]},V))})]},H)),_&&jsxRuntimeExports.jsx("div",{className:"chatbot-msg chatbot-msg--assistant",children:jsxRuntimeExports.jsxs("div",{className:"chatbot-msg__bubble chatbot-msg__bubble--loading",children:[jsxRuntimeExports.jsx("span",{}),jsxRuntimeExports.jsx("span",{}),jsxRuntimeExports.jsx("span",{})]})}),R&&jsxRuntimeExports.jsx("div",{className:"chatbot-error",children:R}),T.length===1&&!_&&jsxRuntimeExports.jsx("div",{className:"chatbot-suggestions",children:SUGGESTIONS.map((B,H)=>jsxRuntimeExports.jsx("button",{className:"chatbot-suggestion-btn",onClick:()=>F(B),children:B},H))}),jsxRuntimeExports.jsx("div",{ref:L})]}),jsxRuntimeExports.jsxs("div",{className:"chatbot-input-row",children:[jsxRuntimeExports.jsx("textarea",{ref:j,className:"chatbot-input",placeholder:"Nháºp câu há»i... (Enter Äá» gá»i)",value:E,onChange:D,onKeyDown:N,rows:1,disabled:_}),jsxRuntimeExports.jsx("button",{className:"chatbot-send-btn",onClick:()=>F(),disabled:_||!E.trim(),"aria-label":"Gá»i",children:jsxRuntimeExports.jsx("svg",{viewBox:"0 0 24 24",fill:"
506currentColor",children:jsxRuntimeExports.jsx("path",{d:"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"})})})]})]})]}),document.body)}function HomePage(){const[o,u]=reactExports.useState(!1),[T,S]=reactExports.useState(!1),[E,C]=reactExports.useState(!1),[_]=reactExports.useState("journey"),P="earn_sticker_dismissed_at",[R,I]=reactExports.useState(()=>{const W=localStorage.getItem(P);return W?Date.now()-Number(W)>7*24*60*60*1e3:!0}),[L,j]=reactExports.useState(!1),M=useNavigate(),{t:D,i18n:F}=useTranslation("home"),{currentUser:N}=useAuth(),{subscription:G}=useSubscription(),B=reactExports.useMemo(()=>window.matchMedia("(max-width: 768px)").matches,[]),H={"paper-mode":{description:D("paperModeBeta"),icon:jsxRuntimeExports.jsx("img",{src:"/images/qr.png",style:{width:"2rem",height:"2rem",objectFit:"contain",filter:"drop-shadow(0 0 2px rgba(255,255,255,0.3))"},alt:"QR"})}},O=MODULE_CATALOG.map(W=>{const K=H[W.id];return{...W,title:(K==null?void 0:K.title)??D(`modules.${W.i18nKey}.title`),description:(K==null?void 0:K.description)??D(`modules.${W.i18nKey}.description`),icon:(K==null?void 0:K.icon)??W.icon}}),V=!!(G!=null&&G.nhanxetExtensionExpiresAt&&new Date(G.nhanxetExtensionExpiresAt)>new Date),U=W=>{if(W.isExtension){M("/tien-ich-giao-duc");return}W.available&&(W.path.startsWith("http")?window.open(W.path,"_blank","noopener,noreferrer"):M(W.path))};return jsxRuntimeExports.jsxs("div",{className:"home-page",children:[jsxRuntimeExports.jsx(Header,{}),jsxRuntimeExports.jsxs("div",{className:"home-content",children:[jsxRuntimeExports.jsx("div",{className:"home-hero",children:jsxRuntimeExports.jsx("h1",{className:"hero-title",children:D("heroTitle")})}),jsxRuntimeExports.jsx(HomeTabsNav,{active:"home"}),jsxRuntimeExports.jsx("div",{className:"modules-grid",children:O.map((W,K)=>jsxRuntimeExports.jsxs(motion.div,{className:`module-card ${W.available?"":"disabled"}`,initial:B?!1:{opacity:0,y:20},animate:B?!1:{opacity:1,y:0},transition:B?void 0:{delay:Math.min(K*.03,.3),duration:.35},whileHover:!B&&W.available?{y:-5,scale:1.02}:{},onClick:()=>U(W),style:{position:"relative",...W.isExtension?{background:"linear-gradient(135deg, #fef9c3, #fde68a)",outline:"2px solid #0ea5e9",boxShadow:"0 0 0 4px rgba(14,165,233,0.15)"}:{}},children:[W.isExtension&&jsxRuntimeExports.jsx("span",{style:{position:"absolute",top:6,left:6,background:"linear-gradient(135deg, #0ea5e9, #0369a1)",color:"#fff",fontSize:"0.6rem",fontWeight:800,padding:"2px 8px",borderRadius:6,letterSpacing:"0.08em",textTransform:"uppercase",zIndex:2,boxShadow:"0 2px 6px rgba(14,165,233,0.4)"},children:"EXT"}),W.isExtension&&!V&&jsxRuntimeExports.jsxs("span",{style:{position:"absolute",top:-6,right:-6,width:52,height:52,background:"linear-gradient(135deg, #0ea5e9, #0369a1)",clipPath:"polygon(50% 0%,61% 15%,79% 9%,73% 27%,93% 28%,81% 43%,97% 54%,81% 60%,88% 79%,69% 77%,65% 97%,50% 84%,35% 97%,31% 77%,12% 79%,19% 60%,3% 54%,19% 43%,7% 28%,27% 27%,21% 9%,39% 15%)",display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:"0.58rem",fontWeight:800,letterSpacing:"0.03em",textTransform:"uppercase",zIndex:2,boxShadow:"0 3px 10px rgba(14,165,233,0.5)",textAlign:"center",lineHeight:1.2},children:["MUA",jsxRuntimeExports.jsx("br",{}),"RIÃNG"]}),W.isBeta&&jsxRuntimeExports.jsx("span",{style:{position:"absolute",bottom:8,left:8,background:"rgba(0,0,0,0.65)",color:"#ffd700",fontSize:"0.6rem",fontWeight:700,padding:"2px 8px",borderRadius:6,letterSpacing:"0.03em",zIndex:2,backdropFilter:"blur(4px)"},children:D("betaBadge")}),jsxRuntimeExports.jsx("h3",{className:"module-title",children:splitCombinedTitle(W.title).map((Y,ee)=>jsxRuntimeExports.jsx("span",{children:Y},ee))}),jsxRuntimeExports.jsxs("div",{className:"module-card-body",children:[jsxRuntimeExports.jsxs("div",{className:"module-card-left",children:[jsxRuntimeExports.jsx("div",{className:"module-icon-wrapper",style:{background:W.color},children:jsxRuntimeExports.jsx("span",{className:"module-icon",style:W.iconStyle,children:MODULE_ICON_MAP[W.id]??W.icon})}),!W.available&&jsxRuntimeExports.jsx("span",{className:"coming-soon-badge",children:D("comingSoon")}),W.available&&jsxRuntimeExports.jsx(motion.button,{className:"module-button",whileHover:B?void 0:{scale:1.05},whileTap:B?void 0:{scale:.95},style:W.isExtension?{background:"linear-gradient(135deg, #0ea5e9, #0369a1)"}:void 0,children:W.isExtension?"â¬ï¸ Tải vá» sá» dụng":D("startBtn")})]}),jsxRuntimeExports.jsx("div",{className:"module-card-right",children:jsxRuntimeExports.jsx("p",{className:"module-description",children:W.description})})]})]},W.id))})]}),jsxRuntimeExports.jsxs("footer",{className:"home-footer",children:[jsxRuntimeExports.jsx("div",{style:{marginBottom:"28px",display:"flex",flexDirection:"column",gap:"10px"},children:jsxRuntimeExports.jsx(ExternalToolsSection,{showTitle:!0,collapsible:!0})}),jsxRuntimeExports.jsxs("div",{className:"footer-links-grid",style:{marginBottom:"20px",textAlign:"left"},children:[jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontSize:"0.72rem",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:"rgba(255,255,255,0.6)"},children:D("footer.connectLabel")}),jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[[{href:"https://www.facebook.com/thaygiaotin90",label:"Facebook"},{href:"https://www.tiktok.com/@thaygiao.tin",label:"TikTok"},{href:"https://www.youtube.com/channel/UC66UEWfsar0kRJZmTMAg97A",label:"YouTube"},{href:"https://zalo.me/0363357745",label:"Zalo"},{href:"https://zalo.me/g/e5deskioajurvq6hbzkp",label:"Cá»ng Äá»
506ng Zalo"}].map(W=>jsxRuntimeExports.jsx("a",{href:W.href,target:"_blank",rel:"noopener noreferrer",style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:K=>K.currentTarget.style.color="#fff",onMouseLeave:K=>K.currentTarget.style.color="rgba(255,255,255,0.85)",children:W.label},W.href)),jsxRuntimeExports.jsx("a",{href:"#",onClick:W=>{W.preventDefault(),S(!0)},style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:W=>W.currentTarget.style.color="#fff",onMouseLeave:W=>W.currentTarget.style.color="rgba(255,255,255,0.85)",children:"Email"})]})]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontSize:"0.72rem",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em",color:"rgba(255,255,255,0.6)"},children:D("footer.legalLabel")}),jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntimeExports.jsx("a",{href:"/blog/",style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:W=>W.currentTarget.style.color="#fff",onMouseLeave:W=>W.currentTarget.style.color="rgba(255,255,255,0.85)",children:"Blog"}),[{to:"/bang-gia",label:D("footer.policy1")},{to:"/chinh-sach-bao-mat",label:D("footer.policy2")},{to:"/dieu-khoan-su-dung",label:D("footer.policy3")},{to:"/chinh-sach-giao-nhan",label:D("footer.policy4")},{to:"/gioi-thieu",label:D("footer.policy5")}].map(W=>jsxRuntimeExports.jsx(Link$1,{to:W.to,style:{color:"rgba(255,255,255,0.85)",fontSize:"0.85rem",textDecoration:"none"},onMouseEnter:K=>K.currentTarget.style.color="#fff",onMouseLeave:K=>K.currentTarget.style.color="rgba(255,255,255,0.85)",children:W.label},W.to))]})]}),jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:jsxRuntimeExports.jsxs(motion.button,{onClick:()=>window.open("https://www.youtube.com/playlist?list=PLxgUnJXYXs7Lr3c_2gr4EmIMcRcGRFq1o","_blank","noopener,noreferrer"),style:{padding:"7px 14px",fontSize:"0.83rem",background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.18)",borderRadius:"6px",color:"rgba(255,255,255,0.85)",cursor:"pointer",fontWeight:500,display:"flex",alignItems:"center",gap:"6px",width:"fit-content"},title:D("footer.guideTooltip"),whileHover:{scale:1.03},whileTap:{scale:.97},children:[jsxRuntimeExports.jsx("span",{children:"â"}),jsxRuntimeExports.jsx("span",{children:D("footer.guide")})]})})})]}),jsxRuntimeExports.jsxs("div",{style:{borderTop:"1px solid rgba(255,255,255,0.2)",paddingTop:"14px",display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"8px"},children:[jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"0.82rem",color:"rgba(255,255,255,0.8)"},children:D("footer.copyright")}),jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"0.75rem",color:"rgba(255,255,255,0.5)"},children:(()=>{const W="2026-09-18T01:16:01.286Z",K=new Date(W);if(isNaN(K.getTime()))return null;const Y=ee=>String(ee).padStart(2,"0");return D("footer.buildTime",{time:`${Y(K.getHours())}:${Y(K.getMinutes())}`,date:`${Y(K.getDate())}/${Y(K.getMonth()+1)}/${K.getFullYear()}`})})()})]})]}),T&&jsxRuntimeExports.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"},onClick:()=>S(!1),children:jsxRuntimeExports.jsxs("div",{style:{background:"#fff",borderRadius:12,padding:"24px 32px",maxWidth:400,textAlign:"center",boxShadow:"0 8px 30px rgba(0,0,0,0.2)"},onClick:W=>W.stopPropagation(),children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 8px",fontWeight:600,fontSize:"1rem"},children:D("emailModal.title")}),jsxRuntimeExports.jsx("p",{style:{margin:0,fontSize:"1.1rem",color:"#1976d2",wordBreak:"break-all"},children:"[email protected]"}),jsxRuntimeExports.jsx("button",{onClick:()=>S(!1),style:{marginTop:16,padding:"6px 20px",border:"1px solid #ccc",borderRadius:6,background:"#f5f5f5",cursor:"pointer"},children:D("emailModal.btnClose")})]})}),jsxRuntimeExports.jsx(HelpVideoModal,{isOpen:o,onClose:()=>u(!1),videoId:"HgngfPh9esA",title:D("helpModal.title"),description:D("helpModal.description")}),jsxRuntimeExports.jsx(UpgradeModal,{feature:_,open:E,onClose:()=>C(!1)}
506),jsxRuntimeExports.jsx(UpdateNotification,{}),reactDomExports.createPortal(jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[R&&jsxRuntimeExports.jsxs("div",{className:"earn-sticker",style:{position:"fixed",zIndex:9e3,width:80,height:80,borderRadius:16,background:"linear-gradient(135deg, #f59e0b, #ef4444)",boxShadow:"0 4px 16px rgba(239,68,68,0.45)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:"6px 4px",textAlign:"center",userSelect:"none"},onClick:()=>j(!0),children:[jsxRuntimeExports.jsx("button",{onClick:W=>{W.stopPropagation(),localStorage.setItem(P,String(Date.now())),I(!1)},style:{position:"absolute",top:-6,left:-6,width:20,height:20,borderRadius:"50%",background:"rgba(0,0,0,0.55)",border:"none",color:"#fff",fontSize:"0.65rem",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},children:"â"}),jsxRuntimeExports.jsx("span",{style:{fontSize:"1.3rem",lineHeight:1},children:"ð°"}),jsxRuntimeExports.jsxs("span",{style:{fontSize:"0.55rem",fontWeight:800,color:"#fff",lineHeight:1.3,marginTop:4},children:["Kiếm tiá»n",` 507`,"từ GVÄM"]})]}),L&&jsxRuntimeExports.jsx("div",{style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.55)",padding:16},onClick:()=>j(!1),children:jsxRuntimeExports.jsxs("div",{style:{background:"#fff",borderRadius:20,maxWidth:480,width:"100%",boxShadow:"0 12px 40px rgba(0,0,0,0.25)",overflow:"hidden"},onClick:W=>W.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{style:{background:"linear-gradient(135deg, #f59e0b, #ef4444)",padding:"18px 24px",color:"#fff",position:"relative"},children:[jsxRuntimeExports.jsx("button",{onClick:()=>j(!1),style:{position:"absolute",top:12,right:14,background:"rgba(255,255,255,0.2)",border:"none",color:"#fff",fontSize:"1rem",width:28,height:28,borderRadius:"50%",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:"â"}),jsxRuntimeExports.jsx("div",{style:{fontSize:"2rem",marginBottom:6},children:"ð°"}),jsxRuntimeExports.jsx("h2",{style:{margin:0,fontSize:"1.15rem",fontWeight:800},children:"Kiếm tiá»n từ Giáo viên Äá»i má»i"})]}),jsxRuntimeExports.jsxs("div",{style:{padding:"20px 24px",fontSize:"0.92rem",color:"#333",lineHeight:1.8},children:[jsxRuntimeExports.jsx("p",{style:{margin:"0 0 12px",fontWeight:600},children:"Chà o mừng bạn Äến vá»i Giáo viên Äá»i má»i!"}),jsxRuntimeExports.jsx("p",{style:{margin:"0 0 14px"},children:"Bạn có thá» kiếm thêm thu nháºp từ viá»c ÄÄng ký là m cá»ng tác viên á» trang chúng tôi theo những cách sau:"}),jsxRuntimeExports.jsx("div",{style:{background:"#fff8f0",borderRadius:12,padding:"12px 16px",marginBottom:10,borderLeft:"4px solid #f59e0b"},children:jsxRuntimeExports.jsxs("p",{style:{margin:0},children:[jsxRuntimeExports.jsx("strong",{children:"1."})," ÄÄng ký ",jsxRuntimeExports.jsx("strong",{children:"mã giảm giá"})," và giá»i thiá»u tá»i bạn bè, ngưá»i quen cá»§a mình. Chiết khấu ",jsxRuntimeExports.jsx("strong",{style:{color:"#ef4444"},children:"30%"})]})}),jsxRuntimeExports.jsx("div",{style:{textAlign:"center",margin:"6px 0",fontWeight:700,color:"#888"},children:"HOẶC"}),jsxRuntimeExports.jsx("div",{style:{background:"#f0f4ff",borderRadius:12,padding:"12px 16px",marginBottom:16,borderLeft:"4px solid #6366f1"},children:jsxRuntimeExports.jsxs("p",{style:{margin:0},children:[jsxRuntimeExports.jsx("strong",{children:"2."})," ÄÄng ký ",jsxRuntimeExports.jsx("strong",{children:"xây dá»±ng các mini app, phần má»m AI"})," hữu Ãch. Chiết khấu ",jsxRuntimeExports.jsx("strong",{style:{color:"#6366f1"},children:"70%"})]})}),jsxRuntimeExports.jsxs("p",{style:{margin:0,textAlign:"center",fontWeight:600,color:"#ef4444"},children:["Liên há» admin theo SÄT: ",jsxRuntimeExports.jsx("a",{href:"https://zalo.me/0363357745",target:"_blank",rel:"noopener noreferrer",style:{color:"#ef4444"},children:"0363.357.745"}
507)," Äá» biết thêm chi tiết!"]})]})]})})]}),document.body),jsxRuntimeExports.jsx(ChatbotWidget,{})]})}const StudentPlayerPage=lazyRetry(()=>__vitePreload(()=>import("./StudentPlayerPage-d0XVZTtR.js"),__vite__mapDeps([30,2,31,32,33,4,5,34,35,27,1,3,36]))),AIToolsPage=lazyRetry(()=>__vitePreload(()=>import("./AIToolsPage-CaRdKCmu.js"),__vite__mapDeps([37,2,1,3,4,5,38]))),EdutechExtensionsPage=lazyRetry(()=>__vitePreload(()=>import("./EdutechExtensionsPage-DdhVz3WL.js"),__vite__mapDeps([39,2,3,1,4,5,40]))),PaymentHistoryPage=lazyRetry(()=>__vitePreload(()=>import("./PaymentHistoryPage-Bd6WbMDq.js"),__vite__mapDeps([41,2,1,42,43,3,4,5]))),TeachingMaterialsPage=lazyRetry(()=>__vitePreload(()=>import("./TeachingMaterialsPage-BxUzp-E9.js"),__vite__mapDeps([44,2,1,3,4,5,45]))),JoinPage=lazyRetry(()=>__vitePreload(()=>import("./JoinPage-DtxsIBmd.js"),__vite__mapDeps([46,3,2,47,1,48,4,5,49,16,50,51,52,53,54,55,56,57,58,59,60,61]))),PlayAssignmentPage=lazyRetry(()=>__vitePreload(()=>import("./PlayAssignmentPage-CXOeOaN8.js"),__vite__mapDeps([62,2,47,1,48,3,4,5,50,51,52,53,54,55,56,33,63,64,65,57,58,61,66]))),AssignmentHistoryPage=lazyRetry(()=>__vitePreload(()=>import("./AssignmentHistoryPage-Dc2vrjVg.js"),__vite__mapDeps([67,2,68,47,1,48,3,4,5,50,51,52,53,54,55,56,69,70,71,60,59,72,73,65,74,75,76,77,34,78,57,58,79,80,81]))),ImageAssignmentReportPage=lazyRetry(()=>__vitePreload(()=>import("./ImageAssignmentReportPage-eQR0ufIM.js"),__vite__mapDeps([82,2,47,1,48,3,4,5,57,58,61,83,78,64,71,84,54,55]))),QuizAssignmentReportPage=lazyRetry(()=>__vitePreload(()=>import("./QuizAssignmentReportPage-RRuzzM14.js"),__vite__mapDeps([85,2,47,1,48,3,4,5,86,57,58,61,52,53,83,87,88,55,54,71]))),PrivacyPolicyPage=lazyRetry(()=>__vitePreload(()=>import("./PrivacyPolicyPage-DGo7-MXi.js"),__vite__mapDeps([89,2,1,3,4,5]))),TermsOfServicePage=lazyRetry(()=>__vitePreload(()=>import("./TermsOfServicePage-BIUu_1pn.js"),__vite__mapDeps([90,2,1,3,4,5]))),AboutPage=lazyRetry(()=>__vitePreload(()=>import("./AboutPage-D1kbsdmP.js"),__vite__mapDeps([91,2,1,3,4,5]))),ShippingPolicyPage=lazyRetry(()=>__vitePreload(()=>import("./ShippingPolicyPage-Bt_Dsimp.js"),__vite__mapDeps([92,2,1,3,4,5]))),PricingPage=lazyRetry(()=>__vitePreload(()=>import("./PricingPage-BxjXoplB.js"),__vite__mapDeps([93,2,1,3,4,5]))),WheelQuizPage=lazyRetry(()=>__vitePreload(()=>import("./WheelQuizPage-K6AfDMNW.js"),__vite__mapDeps([94,2,1,95,96,97,98,99,71,100,81,101,102,103,104,15,7,16,105,106,107,108,64,109,110,111,20,4,5,34,112,3,70,113,114,115,52,53,116,117,118,119,120,121,79,122,123,63,124,125,80,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,74,142,143,51,144,78,145,146,147,148,149]))),ClassManagerPage=lazyRetry(()=>__vitePreload(()=>import("./ClassManagerPage-Dy0VQzJa.js"),__vite__mapDeps([150,2,151,152,71,153,128,52,53,103,104,97,98,99,100,81,101,15,7,1,16,120,105,154,61,155,79,156,3,4,5,157]))),InteractiveVideoPage=lazyRetry(()=>__vitePreload(()=>import("./InteractiveVideoPage-B5Pz3dYc.js"),__vite__mapDeps([158,2,27,1,3,4,5,135,129,34,133,16,71,81,128,134,122,123,63,124,125,80,111,103,20,112,70,113,114,115,52,53,64,116,117,31,32,33,35,159,69,47,48,50,51,54,55,56,160,161,59,72,162,131,132,109,110,143,104,97,98,99,100,101,106,96,95,163]))),PanoramaMuseum=lazyRetry(()=>__vitePreload(()=>import("./PanoramaMuseum-DIFKAPUo.js"),__vite__mapDeps([164,2,103,96,104,98,69,71,131,132,52,1,16,165,3,166,167,48,4,5,143,168]))),PanoramaViewer=lazyRetry(()=>__vitePreload(()=>import("./PanoramaViewer-CWMlWebd.js"),__vite__mapDeps([169,2,167,1,48,3,4,5,165,166,170,171]))),PanoramaEditor=lazyRetry(()=>__vitePreload(()=>import("./PanoramaEditor-lO_XMXn8.js"),__vite__mapDeps([172,2,103,167,1,48,3,4,5,173,16,170,174]))),WalkableGalleryEditor=lazyRetry(()=>__vitePreload(()=>import("./WalkableGalleryEditor-B28wEmqZ.js"),__vite__mapDeps([175,2,103,167,1,48,3,4,5,173,16,170,174,69,49,176,71,64,59,72,131,132,52,53,166,177]))),StudentGalleryUploadPage=lazyRetry(()=>__vitePreload(()=>import("./StudentGalleryUploadPage-DkQvqWud.js"),__vite__mapDeps([178,2,49,1,16,48,3,4,5]))),SharePanoramaViewer=lazyRetry(()=>__vitePreload(()=>import("./SharePanoramaViewer-DOW88Gmy.js"),__vite__mapDeps([179,2,167,1,48,3,4,5,165,166,170,171]))),ExhibitionViewer=lazyRetry(()=>__vitePreload(()=>import("./ExhibitionViewer-3Do72Ic-.js"),__vite__mapDeps([180,2,167,1,48,3,4,5,165,166,171]))),QuizGamePage=lazyRetry(()=>__vitePreload(()=>import("./QuizGamePage-AEHN4TiS.js"),__vite__mapDeps([181,2,96,1,95,72,100,84,120,140,34,4,5,81,182,183,86,126,127,128,129,71,130,103,16,122,123,63,124,125,80,133,3,134,119,121,79,131,132,52,53,153,184,58,22,7,141,74,142,110,51,115,104,97,98,99,101,106,107,108,64,159,69,47,48,50,54,55,56,160,
507161,59,162,109,143,113,70,105,185]))),QuizPreviewPage=lazyRetry(()=>__vitePreload(()=>import("./QuizPreviewPage-Ccg9_QpN.js"),__vite__mapDeps([186,2,51,52,53,61,187,188,56,127,126,81,128,129,4,5,34,71,130,189,152,151,22,1,7,190,183,64,33,86,19,121,3]))),HandSlashQuiz=lazyRetry(()=>__vitePreload(()=>import("./HandSlashQuiz-BPykzyxT.js"),__vite__mapDeps([191,2,51,52,53,192,193,4,5,34,146,194,195,196,64,148,3,1,8,7,197,198,152,101]))),HandSlashQuizPage=lazyRetry(()=>__vitePreload(()=>import("./HandSlashQuizPage-CpzoDyc8.js"),__vite__mapDeps([199,2,96,104,97,98,99,71,100,81,101,106,107,108,64,8,1,7,197,159,69,47,48,3,4,5,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,143,105,138,139,112,70,113,114,115,140,34,200,123,136,63,103,135,129,111,20,116,117,133,16,128,134,141,74,142,195,196,194,144,201]))),ShareHandSlashQuiz=lazyRetry(()=>__vitePreload(()=>import("./ShareHandSlashQuiz-T-INMuQD.js"),__vite__mapDeps([202,2,51,52,53,192,193,4,5,34,146,194,195,196,64,148,3,1,8,7,198,152,101]))),FlyingWordsGamePage=lazyRetry(()=>__vitePreload(()=>import("./FlyingWordsGamePage-0W_jU3LF.js"),__vite__mapDeps([203,2,96,115,104,97,98,99,71,100,81,101,106,21,1,3,4,5,204,159,69,47,48,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,143,113,70,105,135,129,34,103,122,123,63,124,125,80,141,74,142,144,205,121,120,206]))),PlayFlyingWordsPage=lazyRetry(()=>__vitePreload(()=>import("./PlayFlyingWordsPage-CGQau0Ru.js"),__vite__mapDeps([207,2,51,52,53,208,193,4,5,34,147,148,209,125,3,1,21,204,210,152,101]))),ShareFlyingWordsPage=lazyRetry(()=>__vitePreload(()=>import("./ShareFlyingWordsPage-DdxVJfat.js"),__vite__mapDeps([211,2,51,52,53,208,193,4,5,34,147,148,209,125,3,1,21,210,152,101]))),HeadTiltQuizPage=lazyRetry(()=>__vitePreload(()=>import("./HeadTiltQuizPage-Bnyos8AO.js"),__vite__mapDeps([212,2,103,104,97,98,99,71,100,81,101,106,107,108,64,6,1,7,213,159,69,47,48,3,4,5,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,143,105,111,20,34,112,70,113,114,115,116,117,118,119,120,121,79,122,123,63,124,125,80,126,127,128,129,130,16,133,134,135,136,137,138,139,140,200,195,196,194,141,74,142,153,95,96,214]))),HeadTiltQuiz=lazyRetry(()=>__vitePreload(()=>import("./HeadTiltQuiz-BpSRv1g5.js"),__vite__mapDeps([215,3,2,6,1,7,51,52,53,213,152,101,4,5]))),FlashcardPage=lazyRetry(()=>__vitePreload(()=>import("./FlashcardPage-C0jP2FXb.js"),__vite__mapDeps([216,2,96,1,95,104,97,98,99,71,100,81,101,106,107,108,64,25,7,43,3,4,5,159,69,47,48,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,143,70,16,133,128,134,122,123,63,124,125,80,135,129,34,141,74,142,103,217,194,146,218,219]))),MindMapPage=lazyRetry(()=>__vitePreload(()=>import("./MindMapPage-BA4qxQNT.js"),__vite__mapDeps([220,2,96,1,95,104,97,98,99,71,100,81,101,106,107,108,64,26,7,109,110,143,103,135,129,4,5,34,141,74,142,131,132,52,3,221]))),TurnBasedGamePage=lazyRetry(()=>__vitePreload(()=>import("./TurnBasedGamePage-DLKBzuwm.js"),__vite__mapDeps([222,2,115,103,104,97,98,99,71,100,81,101,106,107,108,64,14,1,7,143,159,69,47,48,3,4,5,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,113,70,105,141,74,142,111,20,34,112,114,116,117,118,119,120,121,79,122,123,63,124,125,80,126,127,128,129,130,16,133,134,135,136,137,138,139,140,200,153,223,147,148,95,96,224]))),VersusGamePage=lazyRetry(()=>__vitePreload(()=>import("./VersusGamePage-c3pGMFW-.js"),__vite__mapDeps([225,2,103,1,47,48,3,4,5,143,109,110,104,97,98,99,71,100,81,101,105,51,52,53,111,20,34,112,70,113,114,115,64,116,117,118,119,120,121,79,122,123,63,124,125,80,126,127,128,129,130,131,132,16,133,134,135,136,137,138,139,140,200,141,74,142,153,61,160,159,69,50,54,55,56,161,59,72,162,95,96,226]))),VersusLobbyPage=lazyRetry(()=>__vitePreload(()=>import("./VersusLobbyPage-B1PdT1ZK.js"),__vite__mapDeps([227,2,160,1,3,4,5]))),VersusMatchRoom=lazyRetry(()=>__vitePreload(()=>import("./VersusMatchRoom-CBFiXDss.js"),__vite__mapDeps([228,2,34,4,5,160,1,47,48,3,147,63]))),QuestionBankPage=lazyRetry(()=>__vitePreload(()=>import("./QuestionBankPage-UhIyA4gK.js"),__vite__mapDeps([229,3,2,103,68,20,1,4,5,34,53,52,81,112,70,113,114,115,64,124,57,58,116,71,78,75]))),FlipPuzzleGamePage=lazyRetry(()=>__vitePreload(()=>import("./FlipPuzzleGamePage-C15xlmzI.js"),__vite__mapDeps([230,2,103,96,1,95,139,112,3,70,113,114,115,52,53,64,16,195,196,194,111,20,4,5,34,116,81,118,119,120,121,79,122,71,123,63,124,125,80,126,127,128,129,130,131,132,133,134,135,136,11
5077,12,7,140,141,74,142,110,159,69,47,48,50,51,54,55,56,160,161,59,72,162,109,143,104,97,98,99,100,101,106,107,108,231,232,146,147,148,233]))),ShareFlipPuzzlePage=lazyRetry(()=>__vitePreload(()=>import("./ShareFlipPuzzlePage-Dr9PRrmb.js"),__vite__mapDeps([234,2,231,232,34,4,5,146,194,195,196,64,147,148,1,103,12,7,3,233]))),KnowledgeTrainGamePage=lazyRetry(()=>__vitePreload(()=>import("./KnowledgeTrainGamePage-XOOqX8Kj.js"),__vite__mapDeps([235,2,103,96,1,95,139,112,3,70,113,114,115,52,53,64,111,20,4,5,34,116,81,135,129,133,16,71,128,134,122,123,63,124,125,80,205,117,141,74,142,110,131,132,13,7,236,148,237,159,69,47,48,50,51,54,55,56,160,161,59,72,162,109,143,104,97,98,99,100,101,106,107,108,238]))),ShareKnowledgeTrainPage=lazyRetry(()=>__vitePreload(()=>import("./ShareKnowledgeTrainPage-DByuwsz8.js"),__vite__mapDeps([239,2,236,148,34,4,5,237,1,103,13,7,3]))),PacedQuizPage=lazyRetry(()=>__vitePreload(()=>import("./PacedQuizPage-C3rpMnBb.js"),__vite__mapDeps([240,2,96,1,95,17,18,19,20,7,77,111,103,4,5,34,112,3,70,113,114,115,52,53,64,116,81,117,118,119,120,121,79,122,71,123,63,124,125,80,126,127,128,129,130,131,132,16,133,134,135,136,138,139,140,141,74,142,110,104,97,98,99,100,101,106,107,108,143,241,48,159,69,47,50,51,54,55,56,160,161,59,72,162,109,57,58,242]))),TeacherControlScreen=lazyRetry(()=>__vitePreload(()=>import("./TeacherControlScreen-PMJdIVMc.js"),__vite__mapDeps([243,2,147,69,241,1,48,3,4,5,77,18,19,187,188,56,127,126,81,128,129,34,71,130,189,244,146,245,57,58,209,101,80,88,246,151,152,54]))),StudentAnswerPage=lazyRetry(()=>__vitePreload(()=>import("./StudentAnswerPage-HGOG3fl-.js"),__vite__mapDeps([247,2,147,241,1,48,3,4,5,77,18,19,248,187,188,56,127,126,81,128,129,34,71,130,189,146,245,194,57,58,74,209,80,101,63,124,54]))),TeamSelectionPage=lazyRetry(()=>__vitePreload(()=>import("./TeamSelectionPage-vmY0fYhr.js"),__vite__mapDeps([249,2,241,1,48,3,4,5,57,58]))),LeaderboardPage=lazyRetry(()=>__vitePreload(()=>import("./LeaderboardPage-CXw1E2r_.js"),__vite__mapDeps([250,2,241,1,48,3,4,5,76,77,34,78,54,73,71,148,57,58,56]))),CrosswordPuzzlePage=lazyRetry(()=>__vitePreload(()=>import("./CrosswordPuzzlePage-B_We3CDP.js"),__vite__mapDeps([251,2,1,95,103,96,139,112,3,70,113,114,115,52,53,64,154,252,24,118,119,120,121,79,122,71,123,63,124,125,81,80,126,127,128,129,4,5,34,130,131,132,16,133,134,135,20,136,111,116,117,23,7,141,74,142,110,104,97,98,99,100,101,106,107,108,159,69,47,48,50,51,54,55,56,160,161,59,72,162,109,143,253,146,194,61,254,195,196,147,148,188,255,256,65,152,151,257]))),ShareCrosswordPage=lazyRetry(()=>__vitePreload(()=>import("./ShareCrosswordPage-CfbU2o24.js"),__vite__mapDeps([258,2,1,103,253,146,194,61,254,127,124,80,252,24,34,4,5,195,196,64,147,148,23,7,3,257]))),TugOfWarGamePage=lazyRetry(()=>__vitePreload(()=>import("./TugOfWarGamePage-CUlAf2XM.js"),__vite__mapDeps([259,2,103,96,1,95,111,20,4,5,34,112,3,70,113,114,115,52,53,64,116,81,117,0,118,119,120,121,79,122,71,123,63,124,125,80,126,127,128,129,130,131,132,16,133,134,135,136,138,139,140,137,200,141,74,142,110,159,69,47,48,50,51,54,55,56,160,161,59,72,162,109,143,100,108,104,97,98,99,101,260,244,146,147,148,261,262]))),ShareTugOfWarPage=lazyRetry(()=>__vitePreload(()=>import("./ShareTugOfWarPage-BPAZfbZf.js"),__vite__mapDeps([263,2,0,1,3,4,5,260,34,244,146,147,148,261,103,262]))),StarBagGamePage=lazyRetry(()=>__vitePreload(()=>import("./StarBagGamePage-l8wVgVNh.js"),__vite__mapDeps([264,2,103,96,1,95,111,20,4,5,34,112,3,70,113,114,115,52,53,64,116,81,117,9,7,118,119,120,121,79,122,71,123,63,124,125,80,126,127,128,129,130,131,132,16,133,134,135,136,138,139,140,137,200,51,141,74,142,110,159,69,47,48,50,54,55,56,160,161,59,72,162,109,143,104,97,98,99,100,101,106,107,108,265,244,147,148,266,267]))),ShareStarBagPage=lazyRetry(()=>__vitePreload(()=>import("./ShareStarBagPage-DIn2kGpM.js"),__vite__mapDeps([268,2,9,1,7,265,51,52,53,34,4,5,244,147,148,266,103,3,267]))),MinesweeperPage=lazyRetry(()=>__vitePreload(()=>import("./MinesweeperPage-DLqk8gnO.js"),__vite__mapDeps([269,2,103,96,1,95,111,20,4,5,34,112,3,70,113,114,115,52,53,64,116,81,117,118,119,120,121,79,122,71,123,63,124,125,80,126,127,128,129,130,131,132,16,133,134,135,136,138,139,140,137,200,141,74,142,110,10,7,159,69,47,48,50,51,54,55,56,160,
507161,59,72,162,109,143,104,97,98,99,100,101,106,107,108,270,146,148,271,272,273]))),ShareMinesweeperPage=lazyRetry(()=>__vitePreload(()=>import("./ShareMinesweeperPage-D5QOLlCb.js"),__vite__mapDeps([274,2,10,1,7,270,4,5,34,146,148,271,272,103,3]))),ClaimSharedGamePage=lazyRetry(()=>__vitePreload(()=>import("./ClaimSharedGamePage-3zaDU92r.js"),__vite__mapDeps([275,2,276,110,1,50,3,51,52,53,54,55,56,4,5]))),InteractiveImagePage=lazyRetry(()=>__vitePreload(()=>import("./InteractiveImagePage-dkl1lDni.js"),__vite__mapDeps([277,2,1,95,103,96,28,7,111,20,4,5,34,112,3,70,113,114,115,52,53,64,116,81,135,129,122,71,123,63,124,125,80,133,16,128,134,278,279,141,74,142,110,131,132,159,69,47,48,50,51,54,55,56,160,161,59,72,162,109,143,104,97,98,99,100,101,106,107,108,280]))),ShareInteractiveImagePage=lazyRetry(()=>__vitePreload(()=>import("./ShareInteractiveImagePage-BdrohYVq.js"),__vite__mapDeps([281,2,28,1,7,278,4,5,34,279,3]))),NoiseTrackerPage=lazyRetry(()=>__vitePreload(()=>import("./NoiseTrackerPage-CrlrlnvS.js"),__vite__mapDeps([282,2,1,64,3,4,5,283]))),PoseQuizPage=lazyRetry(()=>__vitePreload(()=>import("./PoseQuizPage-DoHnm3-L.js"),__vite__mapDeps([284,2,103,96,1,95,11,7,143,104,97,98,99,71,100,81,101,106,107,108,64,159,69,47,48,3,4,5,50,51,52,53,54,55,56,160,161,59,72,162,131,132,109,110,184,58,195,196,194,138,139,112,70,113,114,115,140,34,137,200,123,136,63,111,20,116,117,118,119,120,121,79,122,124,125,80,126,127,128,129,130,16,133,134,135,141,74,142,146,285,147,61,209,286,151,152,287,148,233]))),JourneyDashboardPage=lazyRetry(()=>__vitePreload(()=>import("./JourneyDashboardPage-DdbltMRO.js"),__vite__mapDeps([288,2,69,103,104,289,1,100,81,276,290,3,4,5,291,148,116,292,254,74,63,71,135,129,34,111,20,112,70,113,114,115,52,53,64,117,154,176,120,132,57,58,80,72]))),JourneyCreatorPage=lazyRetry(()=>__vitePreload(()=>import("./JourneyCreatorPage-GAbD0MFa.js"),__vite__mapDeps([293,2,289,1,290,3,4,5,57,58,61,71,81,120,154]))),JourneyPlayerPage=lazyRetry(()=>__vitePreload(()=>import("./JourneyPlayerPage-Cr7IehJ8.js"),__vite__mapDeps([294,3,2,103,290,1,4,5,291,289,276,59,60,64,116,115,34,63,125,54,101]))),CommunityLibraryPage=lazyRetry(()=>__vitePreload(()=>import("./CommunityLibraryPage-DRyGqQc8.js"),__vite__mapDeps([295,2,296,68,142,1,110,131,132,52,99,71,114,105,3,4,5]))),AdminApp=lazyRetry(()=>__vitePreload(()=>import("./AdminApp-B8J0DjiI.js"),__vite__mapDeps([297,2,292,64,298,116,115,1,162,42,43,3,114,246,71,99,120,81,136,75,52,53,156,54,182,254,299,63,4,5]))),PaperModePage=lazyRetry(()=>__vitePreload(()=>import("./PaperModePage-C84AUVoC.js"),__vite__mapDeps([300,2,96,104,1,95,301,15,7,16,43,3,302,303,304,305,200,123,71,81,136,63,114,131,132,52,53,102,103,97,98,99,100,101,105,106,107,108,64,109,110,111,20,4,5,34,112,70,113,115,116,117,118,119,120,121,79,122,124,125,80,126,127,128,129,130,133,134,135,137,138,139,140,141,74,142,296,306]))),SessionControlPage=lazyRetry(()=>__vitePreload(()=>import("./SessionControlPage-AgxsmEc_.js"),__vite__mapDeps([307,2,308,1,15,7,16,301,43,3,302,303,304,309,310,146,69,4,5,34,57,58,311,71,123,127,255,87,88,80,151,152,63]))),ResultsPage=lazyRetry(()=>__vitePreload(()=>import("./ResultsPage-BIanAjg3.js"),__vite__mapDeps([312,2,304,1,303,309,148,63,61,73,189,71,3,4,5,313]))),ScanPage=lazyRetry(()=>__vitePreload(()=>import("./ScanPage-B2vEd0Qv.js"),__vite__mapDeps([314,3,2,302,309,308,1,310,146,303,315,4,5]))),FaceRandomPage=lazyRetry(()=>__vitePreload(()=>import("./FaceRandomPage-Cibh3n4d.js"),__vite__mapDeps([316,2,69,96,104,102,103,1,97,98,99,71,100,81,101,15,7,16,105,106,107,108,64,109,110,111,20,4,5,34,112,3,70,113,114,115,52,53,116,117,118,119,120,121,79,122,123,63,124,125,80,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,74,142,194,196,311,78,153,61,155,305,144,145,317,95,318]))),FaceRandomScanPage=lazyRetry(()=>__vitePreload(()=>import("./FaceRandomScanPage-BjFpgOGC.js"),__vite__mapDeps([319,2,317,1,310,3,4,5]))),ScavengerHuntPage=lazyRetry(()=>__vitePreload(()=>import("./ScavengerHuntPage-B_pUbEn3.js"),__vite__mapDeps([320,2,96,104,97,98,99,71,100,81,101,1,95,321,48,3,4,5,50,51,52,53,54,55,56,118,119,120,121,79,103,122,123,63,124,125,80,126,127,128,129,34,130,131,132,16,133,134,135,20,136,111,112,70,113,114,115,64,116,117,138,139,140,137,144,188,59,73,69,72,109,110,322,323]))),PlayHuntPage=lazyRetry(()=>__vitePreload(()=>import("./PlayHuntPage-9W2OYNL-.js"),__vite__mapDeps([324,2,1,321,48,3,4,5,50,51,52,53,54,55,56,271,71,103,34,123,322,114,59,60,57,58,325]))),HtmlEmbedGamePage=lazyRetry(()=>__vitePreload(()=>import("./HtmlEmbedGamePage-ZcPcnsLf.js"),__vite__mapDeps([326,2,154,79,124,298,103,96,1,95,115,101,143,104,97,98,99,71,100,81,159,69,47,48,3,4,5,50,51,52,53,54,55,56,160,
507161,59,72,162,131,132,109,110,233,262]))),PasteAiPage=lazyRetry(()=>__vitePreload(()=>import("./PasteAiPage-CBU4Y29n.js"),__vite__mapDeps([327,2,3,1,4,5,328]))),CtvMiniAppsPage=lazyRetry(()=>__vitePreload(()=>import("./CtvMiniAppsPage-DFz_9Awe.js"),__vite__mapDeps([329,2,330,1,299,133,3,16,71,81,128,134,4,5,331]))),MiniAppsBrowsePage=lazyRetry(()=>__vitePreload(()=>import("./MiniAppsBrowsePage-Bt4_hkl7.js"),__vite__mapDeps([332,2,1,330,299,3,4,5,333]))),ToolLoader=()=>jsxRuntimeExports.jsxs("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column",paddingTop:"80px",boxSizing:"border-box"},children:[jsxRuntimeExports.jsx(Header,{}),jsxRuntimeExports.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"1rem"},children:[jsxRuntimeExports.jsx("div",{style:{width:"50px",height:"50px",border:"4px solid #e5e7eb",borderTopColor:"#10b981",borderRadius:"50%",animation:"spin 1s linear infinite"}}),jsxRuntimeExports.jsx("p",{style:{fontSize:"1.125rem",color:"#4b5563"},children:"Äang tải công cụ..."})]})]}),theme=createTheme({typography:{fontFamily:"'Segoe UI', 'Noto Sans', 'Noto Sans JP', -apple-system, BlinkMacSystemFont, sans-serif"}});function App(){return reactExports.useEffect(()=>{audioManager.init()},[]),jsxRuntimeExports.jsx(ThemeProvider,{theme,children:jsxRuntimeExports.jsx(HelmetProvider,{children:jsxRuntimeExports.jsx(AuthProvider,{children:jsxRuntimeExports.jsx(SubscriptionProvider,{children:jsxRuntimeExports.jsx(AIProvider,{children:jsxRuntimeExports.jsx(ConsoleProvider,{children:jsxRuntimeExports.jsx(EffectProvider,{children:jsxRuntimeExports.jsx(MindMapSessionProvider,{children:jsxRuntimeExports.jsxs(BrowserRouter,{children:[jsxRuntimeExports.jsx(GlobalEffectOverlay,{}),jsxRuntimeExports.jsx(AdminCopyRefreshBanner,{}),jsxRuntimeExports.jsx(MindMapFloatingSticker,{}),jsxRuntimeExports.jsxs(Routes,{children:[jsxRuntimeExports.jsx(Route,{path:"/",element:jsxRuntimeExports.jsx(LandingPage,{})}),jsxRuntimeExports.jsx(Route,{path:"/login",element:jsxRuntimeExports.jsx(LoginPage,{})}),jsxRuntimeExports.jsx(Route,{path:"/dashboard",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(HomePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/interactive-video",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(InteractiveVideoPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/ai-tools",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(AIToolsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/tien-ich-giao-duc",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(EdutechExtensionsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/lich-su-thanh-toan",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PaymentHistoryPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/paste-ai",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PasteAiPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/question-bank",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(QuestionBankPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/panorama-museum",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PanoramaMuseum,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/panorama-museum/:roomId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PanoramaViewer,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/panorama-museum/:roomId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PanoramaEditor,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/panorama-museum/:roomId/walkable-edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(WalkableGalleryEditor,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/exhibition/:exId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ExhibitionViewer,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/gallery-upload/:sessionId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(StudentGalleryUploadPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/play/:lessonId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(StudentPlayerPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/join",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JoinPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/thamgia",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JoinPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/assignment/:assignmentId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PlayAssignmentPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/assignments",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(AssignmentHistoryPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/assignments/:assignmentId/image-report",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ImageAssignmentReportPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/assignments/:assignmentId/quiz-report",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(QuizAssignmentReportPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/teaching-materials",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TeachingMaterialsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/wheel-quiz",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(WheelQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/wheel-quiz/new/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(WheelQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/wheel-quiz/:setId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(WheelQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/wheel-quiz/my-games",element:jsxRuntimeExports.jsx(Navigate,{to:"/wheel-quiz",replace:!0})}
507),jsxRuntimeExports.jsx(Route,{path:"/lop-hoc",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ClassManagerPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/lop-hoc/:classId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ClassManagerPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/face-random",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FaceRandomPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/scavenger-hunt",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ScavengerHuntPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/html-embed-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HtmlEmbedGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/hunt/:sessionId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PlayHuntPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/hunt-preview/:huntId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PlayHuntPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/share/panorama/:roomId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(SharePanoramaViewer,{})})}),jsxRuntimeExports.jsx(Route,{path:"/share/exhibition/:exId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ExhibitionViewer,{shared:!0})})}),jsxRuntimeExports.jsx(Route,{path:"/quiz-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(QuizGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/quiz-game/:quizId/preview",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100vh",overflow:"hidden",paddingTop:"64px",boxSizing:"border-box"},children:[jsxRuntimeExports.jsx(Header,{}),jsxRuntimeExports.jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden"},children:jsxRuntimeExports.jsx(QuizPreviewPage,{})})]})})})}),jsxRuntimeExports.jsx(Route,{path:"/hand-slash-quiz",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HandSlashQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/hand-slash-quiz/:lessonId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HandSlashQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/hand-slash-quiz/play/:lessonId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HandSlashQuiz,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/hand-slash-quiz/:shareId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareHandSlashQuiz,{})})}),jsxRuntimeExports.jsx(Route,{path:"/flying-words-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FlyingWordsGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/flying-words-game/:lessonId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FlyingWordsGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/flying-words-game/play/:lessonId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PlayFlyingWordsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/flying-words/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareFlyingWordsPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/flashcard",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FlashcardPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/flashcard/:deckId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FlashcardPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/mind-map",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(MindMapPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/mind-map/:mapId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(MindMapPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/head-tilt-quiz",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HeadTiltQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/head-tilt-quiz/:lessonId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HeadTiltQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/head-tilt-quiz/play/:lessonId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(HeadTiltQuiz,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/turn-based-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TurnBasedGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/turn-based-game/:gameId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TurnBasedGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/turn-based-game/play/:gameId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TurnBasedGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/versus-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(VersusGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/versus-game/new/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(VersusGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/versus-game/:gameId/edit",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(VersusGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/versus/:assignmentId/lobby",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(VersusLobbyPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/versus/:assignmentId/match/:sessionId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(VersusMatchRoom,{})})}),jsxRuntimeExports.jsx(Route,{path:"/flip-puzzle-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FlipPuzzleGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/flip-puzzle/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareFlipPuzzlePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/knowledge-train-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(KnowledgeTrainGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/knowledge-train/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareKnowledgeTrainPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/paced-quiz",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PacedQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/paced-quiz/session/:sessionId/control",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TeacherControlScreen,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/paced-quiz/session/:sessionId/play",element:jsxRuntimeExports.jsx(StudentAnswerPage,{})}),jsxRuntimeExports.jsx(Route,{path:"/paced-quiz/session/:sessionId/teams",element:jsxRuntimeExports.jsx(TeamSelectionPage,{})}),jsxRuntimeExports.jsx(Route,{path:"/paced-quiz/session/:sessionId/leaderboard",element:jsxRuntimeExports.jsx(LeaderboardPage,{})}),jsxRuntimeExports.jsx(Route,{path:"/crossword-puzzle",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(CrosswordPuzzlePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/crossword/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareCrosswordPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/tug-of-war-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TugOfWarGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/tug-of-war/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareTugOfWarPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/star-bag-game",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(StarBagGamePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/star-bag/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareStarBagPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/minesweeper",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(MinesweeperPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/minesweeper/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareMinesweeperPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/teacher-share/:token",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ClaimSharedGamePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/interactive-image",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(InteractiveImagePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/share/interactive-image/:shareToken",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShareInteractiveImagePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/noise-tracker",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(NoiseTrackerPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/pose-quiz",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PoseQuizPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/community-library",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(CommunityLibraryPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/admin/*",element:jsxRuntimeExports.jsx(Adm
507inRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(AdminApp,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/journey",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JourneyDashboardPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/journey/create",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JourneyCreatorPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/journey/create/:journeyId",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JourneyCreatorPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/journey/:sessionId",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(JourneyPlayerPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/paper-mode",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PaperModePage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/paper-mode/session/:id/control",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(SessionControlPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/paper-mode/session/:id/results",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ResultsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/scan",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ScanPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/scan-face",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(FaceRandomScanPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/ctv/mini-apps",element:jsxRuntimeExports.jsx(ProtectedRoute,{children:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(CtvMiniAppsPage,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/mo-phong-bai-day",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(MiniAppsBrowsePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/chinh-sach-bao-mat",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PrivacyPolicyPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/dieu-khoan-su-dung",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(TermsOfServicePage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/gioi-thieu",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(AboutPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/chinh-sach-giao-nhan",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(ShippingPolicyPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/bang-gia",element:jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:jsxRuntimeExports.jsx(ToolLoader,{}),children:jsxRuntimeExports.jsx(PricingPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"*",element:jsxRuntimeExports.jsx(Navigate,{to:"/dashboard"})})]})]})})})})})})})})})}class ChunkErrorBoundary extends reactExports.Component{constructor(){super(...arguments),this.state={hasError:!1},this.handleReload=()=>{sessionStorage.removeItem("chunk_reload"),window.location.reload()}}static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?jsxRuntimeExports.jsxs("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"1rem",fontFamily:"system-ui, sans-serif",color:"#374151",padding:"2rem",textAlign:"center"},children:[jsxRuntimeExports.jsx("p",{style:{fontSize:"3rem",margin:0},children:"â ï¸"}),jsxRuntimeExports.jsx("h2",{style:{margin:0,fontSize:"1.25rem"},children:"Äã xảy ra lá»i"}),jsxRuntimeExports.jsx("p",{style:{margin:0,color:"#6b7280",maxWidth:400},children:"Trang web gặp sá»± cá» không mong muá»n. Äiá»u nà y có thá» do phiên bản má»i Äang ÄÆ°á»£c cáºp nháºt. Hãy nhấn tá» hợp Ctrl + Shift + R. Sau Äó bấm nút bên dưá»i nếu chưa ÄÆ°á»£c."}),jsxRuntimeExports.jsxs("div",{style:{display:"flex",gap:"1rem",marginTop:"1rem"},children:[jsxRuntimeExports.jsx("button",{onClick:()=>window.location.href="/",style:{padding:"0.75rem 1.5rem",fontSize:"1rem",fontWeight:600,color:"#374151",backgroundColor:"#f3f4f6",border:"none",borderRadius:"8px",cursor:"pointer"},children:"Vá» trang chá»§"}),jsxRuntimeExports.jsx("button",{onClick:this.handleReload,style:{padding:"0.75rem 1.5rem",fontSize:"1rem",fontWeight:600,color:"#fff",backgroundColor:"#4f46e5",border:"none",borderRadius:"8px",cursor:"pointer"},children:"Tải lại trang"})]})]}):this.props.children}}const cancel$7="Há»§y",save$2="Lưu",nav$5={home:"Trang chá»§",aiTools:"Bá» công cụ AI",questionBank:"Kho câu há»i",activities:"Hoạt Äá»ng",assignments:"Äã gi
507ao",community:"Cá»ng Äá»ng",join:"Tham gia",bugReport:"Sá»a lá»i",logout:"ÄÄng xuất",logoName:"Giáo viên Äá»i má»i",logoTitle:"ð Giáo viên Äá»i má»i",edutech:"Tiá»n Ãch GD",lessonSimulation:"Mô phá»ng bà i dạy",courses:"Khóa há»c",homeroom:"GV Chá»§ nhiá»m",paymentHistory:"Lá»ch sá» thanh toán",joinForStudents:"Tham gia (dà nh cho HS)"},header$2={upgradePro:"Mua FullGame",upgradePro_short:"FullGame",proAccount:"Gói FullGame",proAccount_short:"FullGame",forever:"FullGame VÄ©nh viá»
n",forever_short:"VÄ©nh viá»
n",daysPro:"Còn {{days}} ngà y FullGame",daysPro_short:"{{days}}d FullGame",logoutBtn:"ÄÄng xuất"},manualTransfer={toggle:"Không quét ÄÆ°á»£c mã QR? Chuyá»n khoản thá»§ công",amountLabel:"ð° Sá» tiá»n:",contentLabel:"Ná»i dung chuyá»n khoản â copy rá»i dán, Äừng gõ tay:"},proModal$2={title:"â NÃNG CẤP FullGame â",description:"Bạn không nhất thiết phải nâng cấp FullGame. Có thá» mua riêng từng công cụ AI chá» 30.000Ä/công cụ!",descriptionNote:"FullGame má» khóa toà n bá» tÃnh nÄng bà i giảng tương tác (không bao gá»m công cụ AI):",price:"ð° 200.000 VNÄ",bankLabel:"ð¦ Ngân hà ng:",accountLabel:"ð± Tà i khoản:",ownerLabel:"ð¤ Tên:",contentLabel:"ð Ná»i dung:",alertTitle:"â ï¸ Sau khi chuyá»n khoản, tải lại trang, nếu chưa ÄÆ°á»£c kÃch hoạt, hãy liên há» Admin:",contactInfo:"ð 0363.357.745 | ð¬",zaloLink:"Zalo",benefitsTitle:"â
Lợi Ãch khi mua FullGame:",offlineWarning:"Thanh toán nà y KHÃNG bao gá»m các bản tải vá» Offline và các công cụ AI (mua riêng 30.000Ä/công cụ tại trang Bá» công cụ AI).",benefit1:"Tạo không giá»i hạn bà i giảng, bà i há»c, video,... á» TẤT CẢ má»i công cụ tương tác",benefit2:"Má» khóa sá» dụng các công cụ có nhãn FullGame (nếu không má» sẽ không dùng ÄÆ°á»£c)",benefit3:"Có khả nÄng tải/thu âm và o câu há»i và láºp Báo cáo chi tiết khi sá» dụng các tÃnh nÄng Äánh giá há»c sinh",closeBtn:"Äóng",contactAdmin:"Liên há» Admin",unlockBenefits:"â
FullGame má» khóa:",unlimitedGames:"Tạo <strong>không giá»i hạn</strong> game giảng dạy, trò chÆ¡i, video,...",audioAndReport:"<strong>Có thá» tải/thu âm</strong> và o câu há»i/Äáp án. <strong>Nháºn Báo cáo chi tiết khi giao bà i cho há»c sinh</strong>",notIncluded:"KHÃNG bao gá»m",excludedServices:"<1>Các Công cụ AI, các Tiá»n Ãch GD</1> & <3>Mô phá»ng bà i dạy, Khóa há»c, Giáo viên chá»§ nhiá»m</3>",buyAiTools:"Mua Công cụ AI",buyEdutech:"Mua Tiá»n Ãch GD",compareProFree:"So sánh FullGame vá»i Miá»
n phÃ",mayPromo:"ð KHUYẾN MẠI THÃNG 5",promoBonusNote:"Mua ngay â ÄÆ°á»£c cá»ng thêm <strong>+{{bonus}} tháng</strong> miá»
n phÃ!",promoUntil:"Ãp dụng Äến hết {{date}}",groupPurchaseBtn:"ð¥ MUA CHUNG â GIẢM THÃM GIÃ",enterPromoCode:"Vui lòng nháºp mã",promoCodeInvalid:"Mã không tá»n tại hoặc sai",promoCodeSpamError:"Mã không tá»n tại hoặc sai! Äá» tránh Spam, xin vui lòng thá» lại sau.",promoDiscount:"mã -{{discount}}%",multiYearDiscount:"{{year}} nÄm -{{discount}}%",yearsUnit:"{{year}} nÄm",detailedReportRow:"Báo cáo chi tiết khi giao bà i",scoreOnlyReport:"Chá» báo cáo Äiá»m sá»",perQuestionReport:"Báo cáo từng câu",audioRecordRow:"Tải/thu âm câu há»i & Äáp án",noAudio:"Không có",hasAudio:"Có",cannotUse:"Không dùng ÄÆ°á»£c",unlimited:"Không giá»i hạn"},upgradeModal$2={qrAutoFillNote:"Quét mã là xong â ná»i dung chuyá»n khoản Äã tá»± Äiá»n sẵn, bạn không cần gõ gì thêm.",title:"Nâng cấp lên KHÃNG GIá»I HẠN",offlineTitle:"Tải vá» sá» dụng offline",freeLimit:"Bản miá»
n phà chá» cho phép lưu",differentClasses:"khác nhau",unlockRequired:"Má» khóa TOÃN Bá» CÃNG CỤ AI Äá» sá» dụng vÄ©nh viá»
n không giá»i hạn",upgradeHint:"ð¡ Äá» tiếp tục sá» dụng {{name}} không giá»i hạn, bạn có thá» nâng cấp:",aiUnlockHint:"ð¡ Má» khóa Äá» sá» dụng tất cả Công cụ AI mãi mãi:",transferLabel:"Ná»i dung chuyá»n khoản (Giữ nguyên):",waitingPayment:"Há» thá»ng Äang chá» thanh toán cá»
507§a bạn...",contactTitle:"â ï¸ Sau khi chuyá»n khoản, tải lại trang, nếu chưa ÄÆ°á»£c kÃch hoạt, hãy liên há» Admin:",closeBtn:"Äóng",contactBtn:"Liên há» Zalo",reloadBtn:"â
Äã thanh toán - Tải lại",internationalBtn:"For international users",offlineBenefitTitle:"Tải bản tá»± chạy Offline vÄ©nh viá»
n (không cần internet)",offlineGuide:"Xem hưá»ng dẫn sá» dụng bản offline",here:"tại Äây",offlineWarning:"Lưu ý: Bản offline nà y có thá» thiếu má»t sá» tÃnh nÄng so vá»i bản gá»c.",clickToView:"Bấm và o Äây Äá» xem",evaluationYear:"â³ Sá» dụng ÄÆ°á»£c {{selectedYears}} nÄm (Äến ngà y {{date}})",expiryDateInfo:"Gia hạn thêm: Bạn sẽ ÄÆ°á»£c sá» dụng không giá»i hạn Äến ngà y {{date}}",proPlanBenefit:"â¾ï¸ FullGame: {{price}}Ä/nÄm â chuyá»n {{price2x}}Ä = 2 nÄm",expiryWarning:"â ï¸ Sau khi hết hạn, chá» {{count}} bà i Äã ghim (ð) còn dùng ÄÆ°á»£c â các bà i khác sẽ bá» khóa.",expiryWarningNoAudio:"ð« Nâng cấp nà y KHÃNG bao gá»m khả nÄng Tải âm thanh, nháºn Báo cáo chi tiết và Tải vá» Offline",promoPlaceholder:"Nháºp mã giảm giá (nếu có)...",deleteBtn:"Xóa",applyBtn:"Ãp dụng",selectYears:"ð¡ Chá»n sá» nÄm gia hạn:",selectYearsLabel:"Thầy cô mua bao nhiêu nÄm:",scanQrPrompt:"Hãy quét mã QR Äá» thanh toán",years:"nÄm",tempAccess:{aiTitle:"ð¤ Nâng cấp AI",offlineTitle:"ð¾ Tải bản Offline",aiContact:"Äá» ÄÄng ký Công cụ AI, vui lòng liên há»:",offlineContact:"Äá» tải bản Offline, vui lòng liên há»:",zaloLabel:"ð Zalo: 0363.357.745",zaloName:"(Thá»nh Tin Há»c)",openZalo:"Má» Zalo ngay",close:"Äóng"},offlineWarningDialog:{title:"â ï¸ CẢNH BÃO QUAN TRá»NG Vá» Dá»® LIá»U & HẠN CHẾ BẢN OFFLINE",pptWarning:"Bản tải xuá»ng nà y không phải là Powerpoint, chá» có thá» chèn link chứ không dán trá»±c tiếp và o Slide ÄÆ°á»£c",usageNote:"* Bản Offline tuy có thá» sá» dụng khi KHÃNG Cà MẠNG INTERNET nhưng có má»t sá» vấn Äá» sau",dataNoteTitle:"LƯU à Cá»°C KỲ QUAN TRá»NG:",dataNote1:"Dữ liá»u KHÃNG ÄÆ°á»£c Äá»ng bá» giữa các thiết bá» khác nhau.",dataNote2:"Nếu bạn xóa dữ liá»u trình duyá»t, dữ liá»u bà i há»c có thá» bá» mất.",dataNote3:'Nếu bạn sao chép thư mục sản phẩm sang máy tÃnh (hoặc thư mục) khác, dữ liá»u sẽ KHÃNG Äi theo. Bạn cần sá» dụng "Xuất dữ liá»u (.json)" Äá» sao lưu và "Nháºp tá»p (.json)" Äá» khôi phục bà i há»c á» vá» trà má»i.',dataNote4:"Vui lòng Äặt thư mục sản phẩm á» má»t vá» trà cá» Äá»nh trên máy tÃnh cá»§a bạn.",limitationsTitle:"CÃC HẠN CHẾ SO Vá»I BẢN ONLINE Mà BẠN ÄANG XEM:",limitationsDesc:"Sản phẩm offline nà y bá» hạn chế má»t sá» tÃnh nÄng so vá»i bản gá»c tại {{url}}:",limit1:"Không thá» chia sẻ link chÆ¡i online cho há»c sinh.",limit2:"Không có tÃnh nÄng Äá»ng bá» hóa Äám mây.",limit3:"Không thá» giao bà i táºp và nháºn báo cáo kết quả trá»±c tuyến từ há»c sinh.",limit4:"Phải gõ tay từng công thức toán theo mã Katex, không ada há» trợ nháºp.",limit5:"Không Äá»nh dạng ÄÆ°á»£c vÄn bản: mà u chữ, in Äáºm, in nghiêng,...",gotIt:"Äã hiá»u"},keepTransferNote:"GIá»® NGUYÃN Ná»I DUNG CHUYá»N KHOẢN NHƯ TRÃN (TUYá»T Äá»I KHÃNG SỬA)",singleAiToolHint:"Chá»n sá» nÄm bên dưá»i, thanh toán 1 lần và dùng ngay!",aiToolsGroupHint:"Thanh toán 1 lần duy nhất, má» khóa trá»n bá» tiá»n Ãch trong Nhóm!",journeyHint:"TÃnh nÄng nà y chá» dà nh cho ngưá»i dùng Äã nâng cấp. Nâng cấp Äá» tạo hà nh trình há»c táºp không giá»i hạn.",versus1v1Hint:"TÃnh nÄng nà y chá» dà nh cho ngưá»i dùng Äã nâng cấp. Nâng cấp Äá» há»c sinh thi Äấu 1v1 trên thiết bá» riêng â không giá»i hạn sá» bà i và sá» tráºn.",assignment15DaysHint:"Bản miá»
n phà chá» cho phép giao bà i tá»i Äa 15 ngà y.",genericUnlockRequired:"TÃnh nÄng nà y cần má» khóa má»i sá» dụng ÄÆ°á»£c!",extCommentsDesc:"Tiá»n Ãch tá»± Äá»ng Äiá»n nháºn xét há»c sinh và o phần má»m â 30.000Ä/nÄm. Sau khi thanh toán, ÄÄng nháºp Google trong extension bằng tà i khoản GVÄM là dùng ÄÆ°á»£c ngay â không cần nháºp key.",extWordAddinDesc:"Add-in cà i và o Microsoft Word â tÃch hợp AI Gemini há» trợ soạn thảo và cÄn chá»nh tà i liá»u. ÄÄng nháºp Google bằng tà i khoản GVÄM là kÃch hoạt ngay â 50.000Ä/nÄm.",extMathAddinDesc:"Add-in cà i và o Microsoft Word â há» trợ giáo viên Toán vẽ hình, dùng kho hình mẫu và tùy chá»nh hình vẽ Toán há»c. Sau khi thanh toán, bạn nháºn ÄÆ°á»£c má»t mã kÃch hoạt (key) Äá» nháºp và o add-in â 50.000Ä/nÄm.",extAlignDocxDesc:"Tá»± Äá»ng cÄn chá»nh font, lá», giãn dòng file Word .docx theo Nghá» Äá»nh 30. Dùng thá» miá»
n phà 3 lần, sau Äó 30.000Ä/nÄm.",extAiToDocxDesc:"Dán vÄn bản từ AI chatbot (ChatGPT, Gemini, Claudeâ¦) â nháºn file Word có bảng và công thức toán. Dùng thá» miá»
n phà 3 lần, sau Äó 30.000Ä/nÄm.",extTeacherStandardDesc:"Tiá»n Ãch tá»± Äá»ng Äiá»n phiếu Äánh giá chuẩn nghá» nghiá»p và xuất phiếu tá»± Äánh giá (.docx) â 30.000Ä/nÄm. Sau khi thanh toán, ÄÄng nháºp Google trong extension bằng tà i khoản GVÄM là dùng ÄÆ°á»£c ngay â không cần nháºp key.",aiBundleDesc:"Má» khóa TẤT CẢ công cụ AI trả phà hiá»n có â Và CẢ các công cụ AI má»i ra mắt trong tương lai, không cần mua thêm! Chá» {{price}}Ä/nÄm.",edutechBundleDesc:"Má» khóa TẤT CẢ tiá»n Ãch Edutech Extensions (tá
507»ng giá trá» 140.000Ä/nÄm) â chá» vá»i {{price}}Ä/nÄm.",aiBundleHeader:"ð Má» khóa TOÃN Bá» Công cụ AI trả phà â Ká» CẢ TOOL TÆ¯Æ NG LAI!",aiBundleFeatures:"⢠Toà n bá» công cụ AI trả phà hiá»n có + má»i tool má»i ra mắt sau nà y<br />⢠Hiá»u lá»±c theo nÄm, có thá» gia hạn cá»ng dá»n",aiBundleExcludes:"ð« KHÃNG bao gá»m: FullGame (game/video tương tác), Tiá»n Ãch Edutech, bản Offline",edutechBundleHeader:"ð Má» khóa TOÃN Bá» Tiá»n Ãch Edutech Extensions!",edutechBundleFeatures:"⢠Nháºn xét CSDL, Chuẩn nghá» nghiá»p, Chuyá»n AIâDOCX (30.000Ä/nÄm má»i tiá»n Ãch)<br />⢠Add-in Word GVDM (50.000Ä/nÄm) · Hiá»u lá»±c theo nÄm, gia hạn cá»ng dá»n",edutechBundleExcludes:"ð« KHÃNG bao gá»m: FullGame (game/video tương tác), Công cụ AI, bản Offline",extendedLinkBenefit:"â° Gói nà y cho phép tạo link bà i táºp có thá»i hạn tá»i Äa {{tier}} nÄm. Dùng cho TOÃN Bá» các game có chức nÄng Giao bà i.",downloadOfflineBenefit:'â¬ï¸ Äá»ng thá»i má» khóa nút "Tải xuá»ng" â xuất bà i há»c ra file chÆ¡i offline không cần Internet hoặc nhúng và o Elearning.',legacyAiUnlockHeader:"â ï¸ Khi má» khóa, bạn sá» hữu <u>VĨNH VIá»N TẤT CẢ</u> các công cụ sau:",aiGroup4Features:"⢠Tạo bảng tÃch hợp NL AI và o KHGD<br />⢠Soạn Giáo án TÃch hợp AI<br />⢠Soạn Giáo án Chuyên Äá» AI<br />⢠Tà i liá»u táºp huấn NÄng lá»±c AI (miá»
n phÃ)",aiGroup3Features:"⢠Viết báo cáo kỹ thuáºt (NCKH)<br />⢠Tạo sản phẩm phần má»m (AI App)",aiGroup1Features:"⢠Viết sáng kiến kinh nghiá»m<br />⢠Biá»n pháp giáo viên giá»i<br />⢠Giáo án tÃch hợp NLS<br />⢠Phân tÃch há»c bạ (Sá» theo dõi)",aiGroup2Features:"⢠Tạo Äá» thi theo CV 7991<br />⢠Tạo Äá» thi CV 7991 Tiếng Anh<br />⢠Tạo Äá» thi chuẩn Ngữ vÄn<br />⢠Công cụ Phân tÃch Äá» thi",interactiveVideoDownload:"Ngoà i ra, bạn cÅ©ng có thá» TẢI XUá»NG các video tương tác",postExpiryWarning:"Sau khi hết hạn, bạn sẽ tạm thá»i không dùng ÄÆ°á»£c tÃnh nÄng cho tá»i khi má» khóa",compareAiBundle:"So sánh Gói công cụ AI vá»i Miá»
n phÃ",compareFeature:"So sánh {{name}} vá»i Miá»
n phÃ",compareUpgradeFeature:"So sánh Nâng cấp {{name}} vá»i Miá»
n phÃ",paidColumnLabel:"Äã mua",qrAlt:"Mã QR Thanh Toán",promoMayTitle:"ð KHUYẾN MẠI THÃNG 5",promoBonusDesc:"Mua ngay â ÄÆ°á»£c cá»ng thêm <strong>+{{bonus}} tháng</strong> miá»
n phÃ!",promoValidUntil:"Ãp dụng Äến hết {{date}}",promoCodeFormat:"mã -{{discount}}%",multiYearDiscountFormat:"{{years}} nÄm -{{discount}}%",groupBuyBtn:"ð¥ MUA CHUNG â GIẢM THÃM GIÃ",promoCodeRequired:"Vui lòng nháºp mã",promoCodeInvalidToast:"Mã không tá»n tại hoặc sai! Äá» tránh Spam, xin vui lòng thá» lại sau.",promoCodeInvalid:"Mã không tá»n tại hoặc sai",forever:"/ vÄ©nh viá»
n",perExtendedLink:"/ má»i link tá»n tại tá»i Äa {{tier}} nÄm",perYears:"/ {{years}} nÄm",paymentSuccess:"Thanh toán thà nh công! TÃnh nÄng Äã ÄÆ°á»£c má» khóa.",bundleSelectedCount:"Gói {{count}} công cụ Äã chá»n:",bundleSelectedHint:"Chá»n sá» nÄm bên dưá»i, thanh toán 1 lần, má» khóa tất cả công cụ Äã chá»n!",notUnlocked:"Chưa má» khóa",unlockForever:"Má» khóa vÄ©nh viá»
n",assignment15DaysComparison:"Link giao bà i duy trì tá»i Äa 15 ngà y",assignmentMaxTierComparison:"Link giao bà i duy trì tá»i Äa {{tier}} nÄm",unlimitedDuration:"Không giá»i hạn â {{duration}}",unlockDuration:"Má» khóa â {{duration}}",maxYearsDuration:"tá»i Äa {{tier}} nÄm",yearsDuration:"{{years}} nÄm",foreverDuration:"vÄ©nh viá»
n"},internationalModal$2={title:"⨠FullGame - $12/NÄm",description:"Má» khóa toà n bá» công cụ dạy há»c tương tác dà nh cho giáo viên quá»c tế.",pricingTitle:"Quyá»n lợi bao gá»m:",features:["Tạo không giá»i hạn bà i há»c vá»i TẤT CẢ công cụ tương tác","Tải lên & thu âm và o ná»i dung bà i giảng","Báo cáo chi tiết quá trình há»c cá»§a há»c sinh","AI Tools Nhóm 1 vÄ©nh viá»
n (Soạn giáo án, Biá»n pháp GVG, Sáng kiến KN, AI trợ giảng)","Lưu trữ bà i há»c mãi mãi trên Äám mây"],howToTitle:"Cách ÄÄng ký:",step1:"Bấm và o nút thanh toán bên dưá»i.",step2:"Chá»n sá» tiá»n $12.",step3:'â ï¸ BẮT BUá»C: Trong ô "Say something nice..." (BMAC), ghi rõ email Äã ÄÄng ký trên website.',note:"Tà i khoản sẽ ÄÆ°á»£c nâng cấp thá»§ công trong vòng 24 giá» sau khi thanh toán.",payBtn:"Thanh toán qua Buy Me a Coffee â",closeBtn:"Äóng",hasVnAccount:"Bạn có tà i khoản ngân hà ng Viá»t Nam?"},language$2={switchTo:"EN",current:"VI",dateLocale:"vi-VN"},externalTools$2={title:"Liên kết tá»i các công cụ ngoà i website",warning:"Äây chá» là liên kết Äá» truy cáºp nhanh các trang khác, viá»c thanh toán trên Giáo viên Äá»i má»i sẽ KHÃNG ÄÆ°á»£c áp dụng á» các trang nà y",accessTooltip:"Truy cáºp {{name}}",categories:{teaching:"Phần má»m giảng dạy/quản lý",ai:"Phần má»m AI",aiGeneral:"AI tá»ng hợp",aiImage:"AI tạo ảnh",aiVideo:"AI tạo video",aiAudio:"AI tạo nhạc/âm thanh",education:"Trang thông tin giáo dục"}},usage$2={unlimited:"â
Không giá»i hạn",used:"Äã sá» dụng {{current}}/{{limit}} bà i há»c",expired:"â ï¸ Gói Äã hết hạn",noiseTrackerTrial:"Dùng thá»: tá»i Äa 10 phút/tiết",proForever:"Ko giá»i hạn vÄ©nh viá»
n",proDaysRemaining:"Còn {{days}} ngà y FullGame"},sidebar$f={upgradeBtn:"Nâng Cấp Lẻ",upgradeTooltip:"Nâng cấp Äá» má» khóa giá»i hạn",helpBtn:"Hưá»ng dẫn sá» dụng",helpTooltip:"Xem hưá»ng dẫn sá» dụng",n
507oticeTitle:"Lưu ý:",poseQuizNotice:"Trò chÆ¡i nà y chá» có mục ÄÃch là trình chiếu Äá» há»c sinh cả lá»p <strong>THá»°C HIá»N Äá»NG TÃC</strong>, chứ <strong>KHÃNG PHẢI</strong> là sá» dụng camera Äá» kiá»m tra Äáp án. Viá»c trình chiếu do giáo viên bấm hoặc tá»± Äá»ng Äặt thá»i gian.",upgradeLabel:"Nâng cấp",helpLabel:"Hưá»ng dẫn",bugReportLabel:"Báo lá»i"},offline$2={downloadBtn:"Tải bản Offline",linkBtn:"Link Bản Offline",buyTooltip:"Mua bản Offline vÄ©nh viá»
n",viewLinkTooltip:"Bấm Äá» xem link tải bản Offline"},pin$2={note:"ð Hãy ghim {{item}} yêu thÃch â bạn sẽ luôn ÄÆ°á»£c dùng miá»
n phà những bà i Äó dù hết hạn nâng cấp",room:"phòng",wheel:"vòng quay",lesson:"bà i",image:"ảnh",crossword:"ô chữ",robot:"robot",pinned:"ð Äã ghim!",unpinned:"ð Äã bá» ghim",limitReached:"ð Chá» ÄÆ°á»£c ghim tá»i Äa {{limit}} {{item}}",pinnedLabel:"Äã ghim"},form$y={answer:"Äáp án",question:"Câu há»i",questionContent:"Ná»i dung câu há»i",timeLimit:"Thá»i gian má»i câu (giây)",timeLimitHelper:"Tá»i thiá»u 7 giây. Gợi ý: 15-25 giây.",errorMinTimeLimit:"Thá»i gian má»i câu tá»i thiá»u phải là 7 giây."},library$4={errorMetadataRequired:"Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng."},status$2={notEntered:"Trá»ng",notFound:"Không tìm thấy"},error$a={occurred:"Có lá»i xảy ra"},tts$1={listenBtn:"Nghe",stopBtn:"Dừng",notSupportedTooltip:"Trình duyá»t cá»§a bạn không há» trợ Äá»c tiếng Viá»t. Hãy thá» dùng Chrome hoặc Edge.",deviceNote:"TÃnh nÄng Äá»c câu há»i phụ thuá»c và o trình duyá»t và thiết bá» cá»§a bạn",notAvailable:"Thiết bá» cá»§a bạn chưa há» trợ giá»ng Äá»c tiếng Viá»t. Äây là do trình duyá»t, không phải do website. Hãy thá» dùng Google Chrome."},actions$8={assign:"Giao bà i",teacherShare:"Chia sẻ GV",renew:"Gia hạn",prevPage:"â Trang trưá»c",nextPage:"Trang sau â",pageInfo:"Trang {{page}}",edit:"Sá»a",delete:"Xóa",play:"ChÆ¡i",view:"Xem",share:"Chia sẻ"},listTools$2={searchPlaceholder:"Tìm bà i...",clear:"Xóa tìm kiếm",sortLabel:"Sắp xếp",sortNewest:"Má»i nhất",sortOldest:"CÅ© nhất",sortNameAsc:"Tên AâZ",sortNameDesc:"Tên ZâA",sortMostQuestions:"Nhiá»u câu há»i nhất",noResults:"Không tìm thấy bà i nà o khá»p"},shuffleQuestions$2={label:"Xáo trá»n thứ tá»± câu há»i",desc:"Má»i lần chÆ¡i, các câu hiá»n theo thứ tá»± khác nhau"},groups$4={createButton:"+ Tạo nhóm bà i",createTitle:"Tạo nhóm bà i má»i",renameTitle:"Äá»i tên nhóm",namePlaceholder:"Tên nhóm (và dụ: Môn Tin 6)",save:"Lưu",cancel:"Há»§y",createSuccess:"Äã tạo nhóm",createError:"Không tạo ÄÆ°á»£c nhóm",renameSuccess:"Äã Äá»i tên nhóm",deleteConfirm:"Xóa nhóm nà y? Các bà i bên trong sẽ ÄÆ°á»£c ÄÆ°a ra ngoà i, không bá» xóa.",deleteSuccess:"Äã xóa nhóm",deleteError:"Không xóa ÄÆ°á»£c nhóm",countLabel:"{{count}} bà i",back:"â Quay lại",moveToGroup:"Chuyá»n và o nhóm",moveSuccess:"Äã chuyá»n bà i",moveError:"Không chuyá»n ÄÆ°á»£c bà i",removeFromGroup:"ÄÆ°a ra ngoà i",noGroup:"Ngoà i nhóm",rename:"Äá»i tên",delete:"Xóa nhóm",emptyGroup:"Nhóm nà y chưa có bà i nà o. Chuyá»n bà i và o từ menu trên má»i thẻ bà i.",inGroupLabel:"ð {{name}}"},search$2={tab:"Tìm bà i",title:"Tìm bà i há»c cá»§a bạn",placeholder:"Gõ tên bà i (má»i công cụ)...",loading:"Äang tải danh sách bà i...",noResults:"Không tìm thấy kết quả nà o khá»p",empty:"Bạn chưa có bà i há»c nà o",untitled:"(Chưa Äặt tên)",groupFeatures:"TÃnh nÄng",groupLessons:"Bà i há»c cá»§a tôi",labelFeature:"Má»"},ttsModal$2={title:"⨠Yêu cầu Äá» dùng tÃnh nÄng AI Äá»c bà i",langModeTitle:"AI sẽ Äá»c ná»i dung bằng ngôn ngữ nà o?",langVi:"AI Äá»c tiếng Viá»t",langViDesc:"Câu há»i chứa tiếng Viá»t có dấu",langEn:"AI Äá»c tiếng Anh",langEnDesc:"Câu há»i bằng tiếng Anh (môn Anh vÄn...)",skipForEn:"â
Bá» qua khi Äá»c tiếng Anh",step1SkippedDesc:"Không cần giá»ng tiếng Viá»t khi AI Äá»c tiếng Anh.",checking:"Äang kiá»m tra...",step1Title:"1. Gói giá»ng nói tiếng Viá»t trong há» thá»ng",step1TitleEn:"1. Gói giá»ng nói tiếng Anh trong há» thá»ng",step1Success:"â
Há» thá»ng Äã có giá»ng tiếng Viá»t",step1SuccessEn:"â
Há» thá»ng Äã có giá»ng tiếng Anh",step1Needed:"Bạn cần cà i gói tiếng Viá»t trong Windows Äá» trình duyá»t có thá» Äá»c.",step1NeededEn:"Trình duyá»t cá»§a bạn chưa có giá»ng tiếng Anh. Hãy thá» dùng Microsoft Edge.",step1GuideBtn:"Thêm giá»ng AI (Hưá»ng dẫn video)",step2Title:"2. Trình duyá»t Microsoft Edge",recommended:"Khuyến nghá»",step2Using:"â
Bạn Äang dùng {{name}}",step2Warning:"Bạn Äang dùng {{name}}",step2EdgeOk:"Edge có giá»ng Äá»c AI tá»± nhiên nhất, không tá»n bÄng thông.",step2EdgeHint:"Nếu giá»ng Äá»c bá» robot hoặc thiếu tá»± nhiên, hãy thá»
507chuyá»n sang Microsoft Edge â giá»ng AI trên Edge tá»t hÆ¡n nhiá»u và không tá»n bÄng thông.",step3Title:"3. Gói FullGame",step3Success:"Bạn Äang dùng FullGame",step3Needed:"TÃnh nÄng nà y yêu cầu gói FullGame.",step3UpgradeBtn:"Mua FullGame ngay",toolTitle:"Hoặc dùng công cụ tạo giá»ng AI cá»§a chúng tôi",toolDesc:"Bạn cÅ©ng có thá» tạo giá»ng Äá»c bằng công cụ AI, tải file .mp3 vá» và tải lên thá»§ công cho từng câu há»i.",toolBtn:"Công cụ chuyá»n vÄn bản thà nh giá»ng nói AI",proRequired:"Yêu cầu gói FullGame",closeBtn:"Äóng",gotItBtn:"Äã hiá»u, báºt AI Äá»c bà i"},classManager$2={title:"Quản lý lá»p há»c",subtitle:"Danh sách lá»p dùng chung cho má»i tÃnh nÄng cần lá»p há»c. Bấm và o má»t lá»p Äá» sá»a chi tiết, gắn ảnh há»c sinh.",detailTitle:"Chi tiết lá»p",emptyDesc:'Bạn chưa có lá»p nà o. Bấm "Tạo lá»p" Äá» thêm lá»p Äầu tiên â lá»p tạo á» Äây dùng ÄÆ°á»£c cho má»i tÃnh nÄng cần lá»p há»c.',btnCreateClass:"Tạo lá»p",btnCreateFirstClass:"Tạo lá»p Äầu tiên",createTitle:"Tạo lá»p má»i",createStudentsLabel:"Danh sách há»c sinh (má»i dòng má»t em)",createStudentsPlaceholder:`Nguyá» n VÄn An 508Trần Thá» Bình 509Lê Minh Cưá»ng`,createStudentsHint:"Dán thẳng cá»t tên từ Excel cÅ©ng ÄÆ°á»£c. Tá»i Äa {{max}} há»c sinh má»i lá»p.",createCountHint:"Äã nháºp {{count}} há»c sinh.",btnCreate:"Tạo lá»p",btnCreating:"Äang tạo...",errorClassName:"Vui lòng nháºp tên lá»p",errorNoStudent:"Vui lòng nháºp Ãt nhất má»t há»c sinh",errorOverLimit:"Vượt quá {{max}} há»c sinh má»i lá»p",successCreateClass:"Äã tạo lá»p",errorCreateClass:"Không tạo ÄÆ°á»£c lá»p. Vui lòng thá» lại.",studentCount:"{{count}} há»c sinh",labelClassName:"Tên lá»p",labelClassPhoto:"Ảnh táºp thá» lá»p",labelStudents:"Danh sách há»c sinh",hintShared:"Sá»a á» Äây thì má»i tÃnh nÄng dùng lá»p nà y Äá»u thấy ngay.",warnTooManyClasses:"Bạn Äang có trên {{max}} lá»p há»c, Äiá»u nà y có thá» khiến viá»c sá» dụng các tÃnh nÄng bá» hạn chế, hãy cân nhắc xoá bá»t lá»p không dùng Äến nữa.",hintUnsaved:"Có thay Äá»i chưa lưu. Rá»i trang bây giá» sẽ mất các thay Äá»i nà y (ká» cả ảnh vừa chá»n).",placeholderName:"Há» và tên",emptyRows:'Chưa có há»c sinh nà o. Bấm "Thêm há»c sinh" hoặc "Dán từ Excel".',btnSave:"Lưu",btnSaving:"Äang lưu...",btnCancel:"Huá»·",btnOpen:"Má» lá»p",btnPlayGame:"Tá» chức trò chÆ¡i",playGameHint:"Chá»n tÃnh nÄng Äá» má», rá»i chá»n lại lá»p nà y á» Äó",playGameWheel:"Vòng quay / Äua vá»t",playGameFaceRandom:"Gá»i tên bằng ảnh",playGamePaperMode:"Chấm bà i trên giấy",btnDeleteClass:"Xoá lá»p",confirmDeleteTitle:"Xoá lá»p nà y?",confirmDeleteMsg:'Lá»p "{{name}}" sẽ bá» xoá vÄ©nh viá» n, cùng toà n bá» danh sách há»c sinh và ảnh Äã gắn. Không khôi phục lại ÄÆ°á»£c.',successDeleteClass:"Äã xoá lá»p",errorDeleteClass:"Không xoá ÄÆ°á»£c lá»p. Vui lòng thá» lại.",btnAddStudent:"Thêm há»c sinh",btnAdd:"Thêm",btnClose:"Äóng",addTitle:"Thêm há»c sinh",addHint:"Äã có {{current}}/{{max}} há»c sinh. Nhấn Enter Äá» thêm liên tiếp.",labelStudentName:"Há» và tên há»c sinh",tooltipMoveUp:"Di chuyá»n lên",tooltipMoveDown:"Di chuyá»n xuá»ng",btnShowPhotos:"Hiá»n ảnh",btnHidePhotos:"Ẩn ảnh",chipHasPhoto:"Äã có ảnh",chipPhotoPending:"Ảnh chá» lưu",notePhotoOptional:"Ảnh há»c sinh chá» cần thiết vá»i má»t sá» tÃnh nÄng Äặc trưng, thầy/cô không bắt buá»c phải có ảnh.",btnSplitPhoto:"Lấy ảnh từng HS từ ảnh táºp thá»",splitTitle:"Lấy ảnh từng há»c sinh từ ảnh táºp thá»",splitHint:"Kéo thanh trượt Äá» chá»nh cỡ vòng chá»n, rá»i bấm và o mặt từng em Äá» chá»n tên. Ảnh nhá» khó nhìn thì lÄn chuá»t trên ảnh Äá» phóng to, rá»i giữ chuá»t kéo Äá» xem chá» khác. Ảnh cắt xong sẽ chá» bạn bấm Lưu.",splitSize:"Cỡ vòng chá»n",splitZoomIn:"Phóng to (hoặc lÄn chuá»t lên)",splitZoomOut:"Thu nhá» (hoặc lÄn chuá»t xuá»ng)",
509splitZoomReset:"Vá» cỡ vừa khung",splitPxHint:"Cỡ tháºt cá»§a vùng cắt. Từ {{out}}px trá» lên là nét; thấp hÆ¡n thì ảnh phải phóng to nên sẽ hÆ¡i má».",splitBigExtra:"Ảnh vừa thêm khá nặng nên máy có thá» hÆ¡i cháºm khi kéo/phóng to. Äây là chuyá»n bình thưá»ng â ảnh cà ng gá»c thì mặt cắt ra cà ng nét.",infoBigPhoto:"Ảnh {{mb}}MB khá lá»n, máy cần xá» lý má»t lát. Thầy/cô chá» chút nhé â ảnh gá»c lá»n sẽ cho ảnh cắt nét hÆ¡n.",splitLowRes:'Vùng chá»n chá» có {{px}}px nên ảnh cắt ra sẽ hÆ¡i má». Cách khắc phục: kéo thanh trượt cho vòng to hÆ¡n, hoặc bấm "Thêm ảnh Äá» cắt" rá»i chá»n file ảnh Gá»C từ máy â ảnh gá»c còn nguyên Äá» nét, cắt ra Äẹp hÆ¡n hẳn ảnh lá»p Äã lưu.',splitNoStudent:"Lá»p chưa có há»c sinh nà o",splitErrorLoad:"Không Äá»c ÄÆ°á»£c ảnh táºp thá» Äá» cắt. Thầy/cô thá» tải lại ảnh lá»p rá»i cắt ngay sau Äó.",btnFullscreen:"Toà n mà n hình",btnExitFullscreen:"Thoát toà n mà n hình",splitAddSource:"Thêm ảnh Äá» cắt",splitSourceMain:"Ảnh lá»p",splitSourceExtra:"Ảnh thêm",splitExtraNote:"Ảnh thêm chá» dùng Äá» cắt, không ÄÆ°á»£c lưu lại.",splitDoneHint:"Äã cắt {{n}} ảnh â nhá» bấm Lưu á» ngoà i trang Äá» giữ lại.",btnDone:"Xong",tooltipPhotoPending:"Ảnh má»i chá»n â bấm Lưu Äá» tải lên",confirmLeave:"Bạn có thay Äá»i chưa lưu (ká» cả ảnh vừa chá»n). Rá»i trang thì các thay Äá»i nà y sẽ mất. Vẫn rá»i trang?",errorEmptyName:"Vui lòng nháºp tên há»c sinh",btnPaste:"Dán từ Excel",btnApplyPaste:"Ãp dụng",btnAddClassPhoto:"Thêm ảnh lá»p",btnPrune:"Dá»n {{count}} ảnh thừa",tooltipPrune:"Có {{count}} ảnh cá»§a há»c sinh Äã bá» xoá khá»i danh sách. Bấm Äá» xoá hẳn các ảnh Äó.",tooltipPhoto:"Bấm Äá» chá»n ảnh cho há»c sinh nà y",tooltipRemovePhoto:"Xoá ảnh há»c sinh",tooltipRevealPhoto:"Bấm Äá» xem ảnh cá»§a riêng em nà y",tooltipHidePhoto:"Bấm Äá» thu ảnh lại",tooltipRemoveRow:"Xoá há»c sinh khá»i lá»p",uploading:"Äang tải...",pasteTitle:"Dán danh sách từ Excel",pasteWarning:"Danh sách dán và o sẽ THAY THẾ toà n bá» danh sách hiá»n tại. Há»c sinh trùng tên ÄÆ°á»£c giữ nguyên ảnh.",pastePlaceholder:"Dán cá»t há» tên và o Äây, má»i há»c sinh má»t dòng...",successSave:"Äã lưu lá»p",successPrune:"Äã dá»n {{count}} ảnh thừa",prunedNone:"Không có ảnh thừa nà o",errorLoad:"Không tải ÄÆ°á»£c danh sách lá»p",errorNotFound:"Không tìm thấy lá»p nà y",errorSave:"Lưu lá»p thất bại",errorName:"Vui lòng nháºp tên lá»p",errorMinStudent:"Lá»p phải có Ãt nhất 1 há»c sinh",errorPhoto:"Thao tác vá»i ảnh thất bại",errorPasteEmpty:"Chưa có tên nà o trong ná»i dung dán",errorConsent:"Không lưu ÄÆ°á»£c cam kết. Vui lòng thá» lại.",btnPurge:"Xoá toà n bỠảnh",tooltipPurge:"Xoá sạch ảnh chân dung và ảnh táºp thá» cá»§a lá»p nà y",confirmPurgeTitle:"Xoá toà n bỠảnh cá»§a lá»p?",confirmPurgeMsg:"Toà n bỠảnh chân dung há»c sinh và ảnh táºp thá» cá»§a lá»p nà y sẽ bá» xoá vÄ©nh viá»
n khá»i há» thá»ng. Danh sách há»c sinh và tên lá»p vẫn giữ nguyên. Không thá» hoà n tác.",successPurge:"Äã xoá toà n bỠảnh cá»§a lá»p."},photoConsent$2={title:"Cam kết khi sá» dụng ảnh há»c sinh",forClass:"Lá»p: {{name}}",warning:"Ảnh chân dung há»c sinh là dữ liá»u cá nhân nhạy cảm. Vá»i há»c sinh dưá»i 16 tuá»i, pháp luáºt yêu cầu phải có sá»± Äá»ng ý cá»§a cha, mẹ hoặc ngưá»i giám há» hợp pháp.",intro:"Khi tiếp tục, bạn xác nháºn:",item1:"Bạn Äã ÄÆ°á»£c cha, mẹ hoặc ngưá»i giám há» cá»§a há»c sinh Äá»ng ý cho sá» dụng ảnh trong hoạt Äá»ng dạy há»c.",item2:"Ảnh chá» dùng cho hoạt Äá»ng dạy há»c cá»§a chÃnh lá»p nà y, không ÄÄng công khai, không dùng cho mục ÄÃch thương mại.",item3:"Bạn sẽ xoá ảnh khi phụ huynh rút lại sá»± Äá»ng ý, hoặc khi không còn cần cho viá»c dạy há»c.",item4:"Ảnh chá» tà i khoản cá»§a bạn xem ÄÆ°á»£c â ná»n tảng không chia sẻ cho ngưá»i dùng khác.",checkbox:"Tôi xác nháºn Äã ÄÆ°á»£c phụ huynh/ngưá»i giám há» Äá»ng ý và chá»u trách nhiá»m vá» ná»i dung cam kết trên.",btnCancel:"Huá»·",btnAgree:"Tôi cam kết & tiếp tục",btnSaving:"Äang lưu..."},mathKeyboard$1={title:"Chèn công thức",tabs:{symbols:"Ký hiá»u",expression:"ð§© Biá»u thức",latex:"LaTeX"},groups:{basic:"CÆ¡ bản",geometry:"Hình há»c",sets:"Táºp hợp",logic:"MÅ©i tên & Logic",greek:"Hy Lạp"},symbols:{plusMinus:"Cá»ng trừ",times:"Nhân",divide:"Chia",notEqual:"Khác",approx:"Xấp xá»",lessEqual:"Nhá» hÆ¡n hoặc bằng",greaterEqual:"Lá»n hÆ¡n hoặc bằng",infinity:"Vô cá»±c",pi:"Pi",degree:"Äá»",angle:"Góc",triangle:"Tam giác",perp:"Vuông góc",parallel:"Song song",circle:"ÄÆ°á»ng tròn",vector:"VectÆ¡",in:"Thuá»c",notIn:"Không thuá»c",subset:"Táºp con",cup:"Hợp",cap:"Giao",emptySet:"Táºp rá»ng",reals:"Táºp sá» thá»±c",integers:"Táºp sá» nguyên",naturals:"Táºp sá» tá»± nhiên",implies:"Suy ra",leadsTo:"Kéo theo",equiv:"Tương ÄÆ°Æ¡ng",forAll:"Vá»i má»i",exists:"Tá»n tại"},templates:{frac:{name:"Phân sá»",num:"Tá»",den:"Mẫu"},pow:{name:"LÅ©y thừa",base:"CÆ¡ sá»",exp:"MÅ©"}
509,sub:{name:"Chá» sá» dưá»i",base:"Biá»u thức",sub:"Chá» sá»"},subsup:{name:"Chá» sá» trên+dưá»i",base:"Biá»u thức",sub:"Chá» sá» dưá»i",sup:"Chá» sá» trên"},sqrt:{name:"CÄn báºc hai",inner:"Biá»u thức"},nrt:{name:"CÄn báºc n",n:"Báºc",inner:"Biá»u thức"},lim:{name:"Giá»i hạn",var:"Biếnâgiá trá»",expr:"Biá»u thức"},sum:{name:"Tá»ng",from:"Từ",to:"Äến",expr:"BT"},int:{name:"TÃch phân",from:"Dưá»i",to:"Trên",expr:"BT"}},textSegment:"VÄn bản",textPlaceholder:"VD: + , = , ...",emptyPreview:"Bấm nút bên dưá»i Äá» bắt Äầu xây biá»u thức...",quickInsert:"Chèn nhanh:",selectElementToAdd:"Chá»n loại phần tá» Äá» thêm:",addElement:"ï¼ Thêm phần tá»",hint:"Tab Äá» chuyá»n ô · Ctrl+Enter Äá» chèn · Há» trợ LaTeX trong ô (và dụ: x+1, \\alpha)",clearAll:"Xóa hết",insertFormula:"Chèn công thức",latexPlaceholder:"Nháºp LaTeX trá»±c tiếp, và dụ: \\frac{a}{b} + \\sqrt{c}",ctrlEnterHint:"Ctrl+Enter Äá» chèn",deleteTitle:"Xóa",addTitle:"Thêm phần tá»",cancel:"Há»§y"},groupPurchaseModal$1={title:"Mua Chung â Giảm Thêm Giá",stepEmail:"Nháºp email",stepConfirm:"Xác nháºn",stepPayment:"Thanh toán",infoAlert:"Mua <strong>{{featureName}}</strong> cho nhiá»u ngưá»i â email cá»§a bạn tá»± Äá»ng thêm và o.",buyerLabel:"{{email}} (bạn)",memberCount:"+ {{count}} email khác = <strong>{{total}} ngưá»i</strong>",placeholder:`Nháºp email Äá»ng nghiá»p, cách nhau bá»i dấu phẩy hoặc xuá»ng dòng... 510Và dụ: 511[email protected] 512[email protected], [email protected]`,uploadBtn:"ð Upload Excel/CSV",exportTemplateBtn:"ð¥ Xuất mẫu",invalidEmail
512s:"Bá» qua {{count}} email không hợp lá»: {{emails}}",overLimit:"Tá»i Äa {{max}} ngưá»i (chưa tÃnh bạn). Vui lòng bá»t email.",promoPlaceholder:"Mã giảm giá (nếu có)...",promoDelete:"Xóa",promoApply:"Ãp dụng",promoRequired:"Vui lòng nháºp mã",promoInvalid:"Mã không tá»n tại hoặc sai!",promoApplied:"â
Mã {{code}}: -{{discount}}%",summaryTitle:"ð° Tá»ng kết giảm giá",originalPrice:"Giá gá»c: {{price}}Ä",promoDiscount:"Mã giảm giá: -{{discount}}%",multiYearDiscount:"{{years}} nÄm: -{{discount}}%",groupDiscount:"Nhóm {{count}} ngưá»i: -{{discount}}%",bonusMonths:"ð Khuyến mãi tháng {{month}}: +{{count}} tháng/ngưá»i",totalDiscount:"Tá»ng giảm: <strong>-{{discount}}%</strong> â Má»i ngưá»i: <strong>{{price}}Ä/{{period}}{{bonus}}</strong>",totalDiscountPct:"Tá»ng giảm: -{{discount}}%",yearPeriod:"nÄm",multiYearPeriod:"{{years}} nÄm",bonusSuffix:" +{{count}}th",totalPayment:"Tá»ng thanh toán: {{price}}Ä",yearsTitle:"Sá» nÄm ÄÄng ký",yearsButton:"{{years}} nÄm",yearsDiscountBadge:"-{{discount}}%",groupTableTitle:"Giảm thêm theo nhóm",groupPeople:"{{count}} ngưá»i",confirmListTitle:"Danh sách {{total}} ngưá»i sẽ ÄÆ°á»£c má» khóa <strong>{{featureName}}</strong> ({{years}} nÄm):",youSuffix:" (bạn)",confirmTotal:"ð³ Tá»ng: {{price}}Ä",perPersonSummary:"Má»i ngưá»i: {{price}}Ä / {{years}} nÄm{{bonus}}",bonusMonthsSuffix:" +{{count}} tháng",unregisteredHint:"Email chưa ÄÄng ký sẽ ÄÆ°á»£c tá»± Äá»ng má» khóa khi há» ÄÄng nháºp lần Äầu.",transferLabel:"â ï¸ Ná»i dung chuyá»n khoản (KHÃNG ÄÆ°á»£c sá»a):",paymentSummary:"{{count}} ngưá»i à {{years}} nÄm â giảm tá»ng {{discount}}%",bankLabel:"Ngân hà ng:",accountNoLabel:"Sá» TK:",accountNameLabel:"Chá»§ TK:",waitingText:"Äang chá» thanh toán â há» thá»ng tá»± Äá»ng xá» lý...",successTitle:"Äã má» khóa cho {{processed}}/{{total}} ngưá»i!",failedEmails:"{{count}} email thất bại: {{emails}}",reloadHint:"Trang sẽ tá»± tải lại sau 2 giây...",close:"Äóng",previewNext:"Xem trưá»c & Xác nháºn â",back:"â Quay lại",confirmCreating:"Äang tạo...",confirmCreateQR:"Xác nháºn â Tạo QR thanh toán",paidReload:"Äà THANH TOÃN (TẢI LẠI)",errorPrefix:"Lá»i: {{message}}",unlockSuccessToast:"Äã má» khóa cho {{processed}}/{{total}} ngưá»i!",templateFileName:"danh-sach-email-mua-chung.xlsx",sheetName:"Danh sách email"},btn$1={cancel:"Há»§y",upgrade:"Nâng cấp",backToList:"Quay lại danh sách"},confirmDeleteAll$4="Bạn có chắc muá»n xóa tất cả câu há»i?",expiredBanner$1={title:"â ï¸ Gói Äã hết hạn!",upgrade:"Gia hạn"},questionPicker$1={title:"Chá»n câu há»i cho {{feature}}"},viCommon={cancel:cancel$7,save:save$2,nav:nav$5,header:header$2,manualTransfer,proModal:proModal$2,upgradeModal:upgradeModal$2,internationalModal:internationalModal$2,language:language$2,externalTools:externalTools$2,usage:usage$2,sidebar:sidebar$f,offline:offline$2,pin:pin$2,form:form$y,library:library$4,status:status$2,error:error$a,tts:tts$1,actions:actions$8,listTools:listTools$2,shuffleQuestions:shuffleQuestions$2,groups:groups$4,search:search$2,ttsModal:ttsModal$2,classManager:classManager$2,photoConsent:photoConsent$2,mathKeyboard:mathKeyboard$1,groupPurchaseModal:groupPurchaseModal$1,btn:btn$1,confirmDeleteAll:confirmDeleteAll$4,expiredBanner:expiredBanner$1,questionPicker:questionPicker$1},nav$4={logo:"Giáo viên Äá»i má»i",aiTools:"Công cụ AI",joinBtn:"ð® Tham gia (dà nh cho há»c sinh)",loginBtn:"ÄÄng nháºp",bugReportBtn:"Sá»a lá»i"},hero$8={title:"Giáo viên Äá»i má»i",subtitle:"Trò chÆ¡i dạy há»c, công cụ AI và hÆ¡n thế nữa",description:"Ná»n tảng dà nh cho giáo viên các cấp, cung cấp các công cụ dạy há»c thông minh Äá» tá»i ưu hóa viá»c giảng dạy",loginCta:"ÄÄng nháºp ngay - Không cần ÄÄng ký!",joinCta:"ð® Tham gia (dà nh cho há»c sinh)",qrScanCta:"Quét mã QR"},features$5={sectionTitle:"Các Công Cụ Dạy Há»c",sectionSubtitle:"Khám phá các công cụ giáo dục hiá»n Äại Äá» nâng cao chất lượng giảng dạy",tools:{aiTools:{title:"Công cụ AI",description:"Công cụ AI viết SKKN, Biá»n pháp GVG, tÃch hợp NLS,...và nhiá»u AI khác"},aiSpecialist:{title:"AI Chuyên Dụng",description:"AI dà nh cho công viá»c nâng cao"}
512,interactiveVideo:{title:"Video Tương Tác",description:"Tạo video há»c táºp vá»i câu há»i trắc nghiá»m sẽ xuất hiá»n á» các thá»i Äiá»m quy Äá»nh trưá»c"},interactiveImage:{title:"Ảnh Tương Tác",description:"Äặt Äiá»m chạm lên ảnh vá»i câu há»i Quiz hoặc phiếu há»c táºp â há»c sinh tương tác ngay trên ảnh"},panoramaMuseum:{title:"Bảo Tà ng Panorama - Phòng tranh 3D",description:"Xem trưng bà y 3D vá»i ảnh panorama 360 Äá» tương tác"},quizGame:{title:"Kéo Thả - Ná»i Ã",description:"Tạo bà i trắc nghiá»m kéo thả nhãn lên ảnh hoặc kéo thả Äá» ná»i các ý tương ứng"},companionRobot:{title:"Robot Äá»ng Hà nh",description:"Robot AI thông minh Äá»ng hà nh cùng há»c sinh trong tiết há»c"},wheelQuiz:{title:"Vòng Quay - Äua Vá»t",description:"Quay vòng quay hoặc Äua vá»t Äá» chá»n há»c sinh ngẫu nhiên, kết hợp trả lá»i trắc nghiá»m vui nhá»n"},handSlashQuiz:{title:"Chém Hoa Quả / Bắt Bong Bóng",description:"Trắc nghiá»m tương tác bằng cá» chá» tay â chém hoa quả bay hoặc chá»c bóng ná» Äá» chá»n Äáp án Äúng"},flipPuzzleGame:{title:"Trò ChÆ¡i Láºt Mảnh Ghép",description:"Há»c sinh trả lá»i câu há»i Äá» má» từng mảnh ghép, Äoán tên bức ảnh Äá» chiến thắng"},turnBasedGame:{title:"Game Theo Lượt",description:"Tung xúc xắc, di chuyá»n nhân váºt, vượt chưá»ng ngại váºt bằng câu há»i. Phù hợp chÆ¡i nhóm 2â4 ngưá»i trên cùng má»t thiết bá»."},versusGame:{title:"Game Äá»i Kháng",description:"Há»c sinh thi Äấu 1v1 trên thiết bá» riêng â trả lá»i Äúng Äá» Äẩy Äá»i thá»§ vá» phÃa sau. Giáo viên má» phòng và theo dõi trá»±c tiếp."},tugOfWarGame:{title:"Kéo Co - Äua thuyá»n kiến thức",description:"Hai Äá»i thi Äấu trả lá»i câu há»i Äá» già nh chiến thắng trong trò chÆ¡i dân gian Äầy sôi Äá»ng"},pacedQuiz:{title:"Trắc nghiá»m theo nhá»p Äá»",description:"GV tạo quiz trắc nghiá»m, Äiá»u khiá»n nhá»p Äá» trên mà n chiếu"},crosswordPuzzle:{title:"à Chữ - Khóa Bà Máºt",description:"Tạo ô chữ hoặc trò chÆ¡i tìm từ khóa ẩn trong bảng chữ cái â há»c sinh tương tác trá»±c tiếp Äá» giải mã"},flyingWordsGame:{title:"Từ Ngữ Biết Bay",description:"Bắt các từ Äang bay (tay hoặc chuá»t) Äá» sắp xếp/tìm Äúng từ ghép thà nh câu hoà n chá»nh"},headTiltQuiz:{title:"Quiz Nghiêng Äầu",description:"Há»c sinh nghiêng Äầu sang trái hoặc phải Äá» chá»n Äáp án, nháºn diá»n qua camera"},starBagGame:{title:"Cuá»c Äua ngôi sao",description:"Hai há»c sinh giÆ¡ ngón tay lần lượt tương ứng vá»i 4 Äáp án â trả lá»i Äúng Äá» lấy các ngôi sao và già nh chiến thắng"},poseQuiz:{title:"Thá» dục ABC",description:"Há»c sinh thá»±c hiá»n Äá»ng tác thá» dục theo hình ảnh minh há»a kết hợp trả lá»i câu há»i trắc nghiá»m"},noiseTracker:{title:"Rá»ng Ngá»§ - Quản Lý Lá»p",description:"Con rá»ng ngá»§ trong lá»p yên tÄ©nh, thức giấc khi á»n à o â trò chÆ¡i quản lý lá»p há»c thú vá» bằng microphone"},journey:{title:"Hà nh Trình Há»c Táºp",description:"Tạo hà nh trình há»c táºp vá»i các chặng, bá» Äá» trắc nghiá»m â há»c sinh thi Äấu theo lá» trình"},paperMode:{title:"Chế Äá» giấy",description:"Quét thẻ giấy Äá» Äiá»m danh, kiá»m tra nhanh â phong cách Plickers"},faceRandom:{title:"á»ng KÃnh May Mắn",description:"Gá»i tên há»c sinh bằng ảnh hoặc bằng camera, có thá» kết hợp vá»i câu há»i"},htmlEmbedGame:{title:"Game tá»± tạo",description:"Dán code HTML game, giao cho há»c sinh chÆ¡i ngay â không cần láºp trình"},"scavenger-hunt":{title:"SÄn Kho Báu",description:"Gá»p nhiá»u bà i há»c thà nh 1 cuá»c sÄn tìm â há»c sinh thu chữ cái và giải từ khóa bà máºt"}}},paperModeBeta$5="Quét thẻ giấy A/B/C/D bằng camera â chấm trắc nghiá»m cả lá»p trong và i giây, không cần thiết bá» cho há»c sinh",betaBadge$5="𧪠Chế Äá» thá» nghiá»m",footer$8={ownerLabel:"Chá»§ sá» hữu",ownerName:"Bà n VÄn Thá»nh",ownerAddress:"Xã VÄ©nh Tuy, tá»nh Tuyên Quang",ownerTax:"MST: 002090004198",connectLabel:"Kết ná»i",legalLabel:"Pháp lý",policy1:"ð° Bảng giá",policy2:"ð ChÃnh sách bảo máºt",policy3:"ð Äiá»u khoản sá» dụng",policy4:"ð ChÃnh sách giao nháºn",policy5:"ð¤ Thông tin ngưá»i sá» hữu",copyright:"© 2025 Phát triá»n bá»i Thầy Giáo Tin.",buildTime:"Cáºp nháºt lúc {{time}} ngà y {{date}}",facebook:"Facebook",tiktok:"TikTok",youtube:"Youtube",zalo:"Zalo",zaloCommunity:"Cá»ng Äá»
512ng Zalo",email:"Email",guide:"Hưá»ng dẫn",guideTooltip:"Xem hưá»ng dẫn sá» dụng"},webviewModal$2={title:"â ï¸ Không thá» ÄÄng nháºp trong ứng dụng nà y",intro:"Bạn Äang má» trang qua Zalo / Messenger. Äá» ÄÄng nháºp ÄÆ°á»£c, hãy má» bằng trình duyá»t theo hưá»ng dẫn bên dưá»i:",step1:"Bưá»c 1: Nhấn menu â® góc trên phải",step2:'Bưá»c 2: Chá»n "Má» bằng trình duyá»t"',btnClose:"Äóng"},emailModal$5={title:"Äá»a chá» email",btnClose:"Äóng"},loading$2="Äang tải công cụ...",viLanding={nav:nav$4,hero:hero$8,features:features$5,paperModeBeta:paperModeBeta$5,betaBadge:betaBadge$5,footer:footer$8,webviewModal:webviewModal$2,emailModal:emailModal$5,loading:loading$2},heroTitle$6="Cùng Äá»i má»i phương pháp giảng dạy và là m viá»c",modules$2={"ai-tools":{title:"Công cụ AI",description:"Công cụ AI viết SKKN, Biá»n pháp GVG, tÃch hợp NLS,...và nhiá»u AI khác"},"ai-specialist":{title:"AI Chuyên Dụng",description:"AI viết báo cáo nghiên cứu KHKT, mô tả sản phẩm AI và há» trợ tạo ra các sản phẩm trong giáo dục"},"interactive-video":{title:"Video Tương Tác",description:"Tạo video há»c táºp vá»i câu há»i trắc nghiá»m sẽ xuất hiá»n á» các thá»i Äiá»m quy Äá»nh trưá»c"},"interactive-image":{title:"Ảnh Tương Tác",description:"Äặt Äiá»m chạm lên ảnh vá»i câu há»i Quiz hoặc phiếu há»c táºp â há»c sinh tương tác ngay trên ảnh"},"panorama-museum":{title:"Bảo Tà ng Panorama - Phòng tranh 3D",description:"Xem trưng bà y 3D vá»i ảnh panorama 360 Äá» tương tác"},"quiz-game":{title:"Kéo Thả - Ná»i Ã",description:"Tạo bà i trắc nghiá»m kéo thả nhãn lên ảnh hoặc kéo thả Äá» ná»i các ý tương ứng"},"wheel-quiz":{title:"Vòng Quay - Äua Vá»t",description:"Quay vòng quay hoặc Äua vá»t Äá» chá»n há»c sinh ngẫu nhiên, kết hợp trả lá»i trắc nghiá»m vui nhá»n"},"hand-slash-quiz":{title:"Chém Hoa Quả / Bắt Bong Bóng",description:"Trắc nghiá»m tương tác bằng cá» chá» tay â chém hoa quả bay hoặc chá»c bóng ná» Äá» chá»n Äáp án Äúng"},"flip-puzzle-game":{title:"Trò ChÆ¡i Láºt Mảnh Ghép",description:"Há»c sinh trả lá»i câu há»i Äá» má» từng mảnh ghép, Äoán tên bức ảnh Äá» chiến thắng"},"knowledge-train-game":{title:"Äoà n Tà u Tri Thức",description:"Kéo thả xếp các toa thà nh Äoà n tà u Äúng thứ tá»± â ná»i Äáp án câu trưá»c vá»i câu há»i tiếp theo"},"turn-based-game":{title:"Game Theo Lượt",description:"Tung xúc xắc, di chuyá»n nhân váºt, vượt chưá»ng ngại váºt bằng câu há»i. Phù hợp chÆ¡i nhóm 2â4 ngưá»i trên cùng má»t thiết bá»."},"versus-game":{title:"Game Äá»i Kháng",description:"Há»c sinh thi Äấu 1v1 trên thiết bá» riêng â trả lá»i Äúng Äá» Äẩy Äá»i thá»§ vá» phÃa sau. Giáo viên má» phòng và theo dõi trá»±c tiếp."},"tug-of-war-game":{title:"Kéo Co - Äua thuyá»n kiến thức",description:"Hai Äá»i thi Äấu trả lá»i câu há»i Äá» già nh chiến thắng trong trò chÆ¡i dân gian Äầy sôi Äá»ng"},"paced-quiz":{title:"Trắc nghiá»m theo nhá»p Äá»",description:"GV tạo quiz trắc nghiá»m, Äiá»u khiá»n nhá»p Äá» trên mà n chiếu"},"crossword-puzzle":{title:"à Chữ - Khóa Bà Máºt",description:"Tạo ô chữ hoặc trò chÆ¡i tìm từ khóa ẩn trong bảng chữ cái â há»c sinh tương tác trá»±c tiếp Äá» giải mã"},"head-tilt-quiz":{title:"Quiz Nghiêng Äầu",description:"Há»c sinh nghiêng Äầu sang trái hoặc phải Äá» chá»n Äáp án, nháºn diá»n qua camera"},"star-bag-game":{title:"Cuá»c Äua ngôi sao",description:"Hai há»c sinh giÆ¡ ngón tay lần lượt tương ứng vá»i 4 Äáp án â trả lá»i Äúng Äá» lấy các ngôi sao và già nh chiến thắng"},minesweeper:{title:"Dò Mìn",description:"Há»c sinh chá»n ô chứa Äáp án Äúng Äá» vượt qua bãi mìn â trắc nghiá»m phiêu lưu vá»i 3 mạng, bưá»c nhầm ô có mìn là ná» tung"},flashcard:{title:"Thẻ láºt - Thẻ há»c nhóm",description:"Tạo bá» thẻ ghi nhá» vá»i âm thanh & hình ảnh â láºt thẻ, tá»± Äánh giá, há»c Äến khi thuá»c"},"mind-map":{title:"SÆ¡ Äá» Tư Duy",description:"GV tạo trưá»c sÆ¡ Äá». Trong giá» há»c, HS sẽ tham gia xây dá»±ng sÆ¡ Äá» tư duy hoà n chá»nh"},"pose-quiz":{title:"Thá» dục ABC",description:"Há»c sinh thá»±c hiá»n Äá»ng tác thá» dục theo hình ảnh minh há»a kết hợp trả lá»i câu há»i trắc nghiá»m"},"teaching-materials":{title:"Khóa há»c cá»§a Thầy Giáo Tin",description:"Kho tà i liá»u giáo án, slide, tà i liá»u tham khảo dà nh cho giáo viên"},"noise-tracker":{title:"Rá»ng Ngá»§ - Quản Lý Lá»p",description:"Con rá»ng ngá»§ trong lá»p yên tÄ©nh, thức giấc khi á»n à o â trò chÆ¡i quản lý lá»p há»c thú vá» bằng microphone"},"flying-words-game":{title:"Từ Ngữ Biết Bay",description:"Bắt các từ Äang bay (tay hoặc chuá»t) Äá» sắp xếp/tìm Äúng từ ghép thà nh câu hoà n chá»nh"},journey:{title:"Hà nh Trình Há»c Táºp",description:"Tạo hà nh trình há»c táºp vá»i các chặng, bá» Äá» trắc nghiá»m â há»c sinh thi Äấu theo lá» trình"},"paper-mode":{title:"Chế Äá» giấy",description:"Quét thẻ giấy Äá» Äiá»m danh, kiá»m tra nhanh â phong cách Plickers"},"face-random":{title:"á»ng KÃnh May Mắn",description:"Gá»i tên há»c sinh bằng ảnh hoặc bằng camera, có thá» kết hợp vá»i câu há»i"},"html-embed-game":{title:"Game tá»± tạo",description:"Dán code HTML game, giao cho há»c sinh chÆ¡i ngay â không cần láºp trình"},"scavenger-hunt":{title:"SÄn Kho Báu",description:"Gá»p nhiá»u bà i há»c thà nh 1 cuá»c sÄn tìm â há»c sinh thu chữ cái và giải từ khóa bà máºt"}},comingSoon$2="Sắp ra mắt",startBtn$2="Bắt Äầu",lockedBtn$2="Cần má» khóa",trialBtn$2="ð Dùng thá»",updatingBadge$2="ð§ TÃnh nÄng Äang cáºp nháºt",journeyModal$2={title:"Hà nh Trình Há»c Táºp",lockLabel:"ð TÃnh nÄng không cho phép dùng thá»",intro:"Hà nh Trình Há»c Táºp cho phép giáo viên tạo các lá» trình tương tác vá»i nhiá»u chặng, má»i chặng chứa bá» Äá» trắc nghiá»m. Há»c sinh thi Äấu qua từng chặng Äá» hoà n thà nh hà nh trình.",featuresTitle:"⨠TÃnh nÄng ná»i báºt:",feature1:"Tạo hà nh trình vá»i nhiá»u chặng (stages)",feature2:"4 dạng câu há»i: ABCD, Nhiá»u Äáp án, Äúng/Sai, Äiá»n từ",feature3:"Giao bà i bằng mã phòng",feature4:"Theo dõi kết quả chi tiết từng há»c sinh",feature5:"Tá»± Äá»ng lưu và o Kho câu há»i",videoTitle:"
512ð¬ Video hưá»ng dẫn:",upgradeBtn:"ð Nâng cấp ngay â 30.000Ä/nÄm"},versusModal$2={title:"Game Äá»i Kháng",lockLabel:"ð TÃnh nÄng không cho phép dùng thá»",intro:"Game Äá»i Kháng cho phép há»c sinh thi Äấu 1v1 trá»±c tiếp trên thiết bá» riêng. Trả lá»i Äúng Äá» Äẩy Äá»i thá»§ vá» phÃa sau â ai Äạt má»c trưá»c thì thắng!",featuresTitle:"⨠TÃnh nÄng ná»i báºt:",feature1:"Há»c sinh dùng thiết bá» riêng â không cần chia mà n hình",feature2:"GV má» phòng, chia sẻ mã, theo dõi trá»±c tiếp",feature3:"Hiá»u ứng Äẩy gáºy real-time theo Äiá»m sá»",feature4:"GV xem câu há»i 2 bên cùng lúc trong chế Äá» xem",feature5:"Kết quả lưu tá»± Äá»ng và o danh sách ná»p bà i",videoTitle:"ð¬ Video hưá»ng dẫn:",upgradeBtn:"ð Nâng cấp ngay â 30.000Ä/nÄm"},htmlEmbedModal$1={title:"Game Tá»± Tạo",lockLabel:"ð TÃnh nÄng không cho phép dùng thá»",intro:"TÃnh nÄng Game Tá»± Tạo cho phép bạn tạo ra rá»i nhúng trá»±c tiếp mã HTML cá»§a các game khácÄá» há»c sinh chÆ¡i trá»±c tiếp trên há» thá»ng. Bạn cÅ©ng ÄÆ°á»£c sá» hữu mã nguá»n cá»§a các game Äó",featuresTitle:"⨠TÃnh nÄng ná»i báºt:",feature1:"Nhúng nhanh code HTML game từ các nguá»n khác",feature2:"Há» trợ chuẩn SCORM, iSpring, Articulate",feature3:"Há»c sinh chÆ¡i trá»±c tiếp trên giao diá»n cá»§a GVÄM",feature4:"Phóng to toà n mà n hình chuẩn xác linh hoạt",feature5:"Giao bà i cho há»c sinh trải nghiá»m ngay trên há» thá»ng",videoTitle:"ð¬ Video hưá»ng dẫn:",upgradeBtn:"ð Nâng cấp ngay â 30.000Ä/nÄm"},footer$7={ownerLabel:"Chá»§ sá» hữu",ownerName:"Bà n VÄn Thá»nh",ownerAddress:"Xã VÄ©nh Tuy, tá»nh Tuyên Quang",ownerTax:"MST: 002090004198",connectLabel:"Kết ná»i",legalLabel:"Há» trợ & Pháp lý",utilsLabel:"Tiá»n Ãch",policy1:"ð° Bảng giá",policy2:"ð ChÃnh sách bảo máºt",policy3:"ð Äiá»u khoản sá» dụng",policy4:"ð ChÃnh sách giao nháºn",policy5:"ð¤ Thông tin ngưá»i sá» hữu",guide:"Hưá»ng dẫn",guideTooltip:"Xem hưá»ng dẫn sá» dụng",fixError:"Khắc phục lá»i",fixErrorTooltip:"Dùng khi bá» tải ngược phiên bản cÅ© hoặc bá» lá»i không và o ÄÆ°á»£c game",confirmReset:"Thao tác nà y sẽ xóa dữ liá»u cÅ© và tải lại trang má»i nhất Äá» sá»a các lá»i hiá»n thá» (bạn sẽ cần ÄÄng nháºp lại). Bạn có chắc chắn không?",copyright:"© 2025 Phát triá»n bá»i Thầy Giáo Tin",buildTime:"Cáºp nháºt lúc {{time}} ngà y {{date}}"},emailModal$4={title:"Äá»a chá» email",btnClose:"Äóng"},helpModal$4={title:"Hưá»ng Dẫn Trang Chá»§",description:"Tìm hiá»u vá» các tÃnh nÄng và công cụ có sẵn trong ná»n tảng"},paperModeBeta$4="Quét thẻ giấy A/B/C/D bằng camera â chấm trắc nghiá»m cả lá»p trong và i giây, không cần thiết bá» cho há»c sinh",betaBadge$4="𧪠Chế Äá» thá» nghiá»m",viHome={heroTitle:heroTitle$6,modules:modules$2,comingSoon:comingSoon$2,startBtn:startBtn$2,lockedBtn:lockedBtn$2,trialBtn:trialBtn$2,updatingBadge:updatingBadge$2,journeyModal:journeyModal$2,versusModal:versusModal$2,htmlEmbedModal:htmlEmbedModal$1,footer:footer$7,emailModal:emailModal$4,helpModal:helpModal$4,paperModeBeta:paperModeBeta$4,betaBadge:betaBadge$4},logoText$2="Giáo viên Äá»i má»i",logoSubtitle$2="Công cụ dạy há»c, AI và hÆ¡n thế nữa",loginTitle$2="ÄÄng nháºp",loginDescription$2="ÄÄng nháºp Äá» bắt Äầu. Nếu bạn Äang dùng Zalo, Messenger, hãy bấm và o dấu ba chấm bên góc phải, chá»n Má» bằng trình duyá»t",loggingInBtn$2="Äang ÄÄng nháºp...",loginGoogleBtn$2="ÄÄng nháºp bằng Google",loginNote$2="Bằng viá»c ÄÄng nháºp, bạn chấp nháºn Äiá»u khoản sá» dụng và ChÃnh sách bảo máºt cá»§a chúng tôi.",loginFooterText$2="Dà nh cho giáo viên và há»c sinh",highlightTools$2="Kho công cụ dạy há»c tương tác",highlightAI$2="Trợ lý AI soạn bà i, tÃch hợp, viết SKKN, ...",highlightSimulation$2="Mô phá»ng trá»±c quan (3D, 2D, chuyá»n Äá»ng, ...) các bà i dạy",highlightClassroom$2="Quản lý lá»p chá»§ nhiá»m",highlightFree$2="Dùng ngay, không cần cà i Äặt",loginFailed$2="ÄÄng nháºp thất bại: {{error}}",pleaseTryAgain$2="Vui lòng thá» lại.",loginNotePrefix$2="Bằng viá»c ÄÄng nháºp, bạn chấp nháºn",loginNoteTerms$2="Äiá»u khoản sá» dụng",loginNoteAnd$2="và ",loginNotePrivacy$2="ChÃnh sách bảo máºt",loginNoteSuffix$2=" cá»§a chúng tôi.",disclaimerCopyright$2="Bằng viá»c tải lên (upload) bất kỳ hình ảnh, âm thanh, hoặc dữ liá»u nà o, bạn cam kết sá» hữu hợp pháp hoặc ÄÆ°á»£c sá»± cho phép cá»
512§a chá»§ sá» hữu bản quyá»n. Há» thá»ng có toà n quyá»n gỡ bá» ngay láºp tức và không cần thông báo trưá»c Äá»i vá»i các ná»i dung bá» khiếu nại, có dấu hiá»u vi phạm pháp luáºt hoặc bản quyá»n. Ná»n tảng miá»
n trừ toà n bá» trách nhiá»m liên quan Äến các vi phạm do ngưá»i dùng gây ra.",disclaimerConsent$2="Khi bạn ÄÄng nháºp là bạn Äá»ng ý vá»i các Äiá»u khoản trên.",consentCheckboxLabel$2="Tôi Äã Äá»c và Äá»ng ý vá»i Äiá»u khoản sá» dụng, ChÃnh sách bảo máºt, các cam kết vá» bản quyá»n ná»i dung và trách nhiá»m khi sá» dụng ảnh, thông tin há»c sinh nêu trên.",consentRequired$2="Vui lòng tÃch chá»n Äá»ng ý vá»i Äiá»u khoản trưá»c khi ÄÄng nháºp.",disclaimerStudentPhoto$2="Nếu bạn tải lên ảnh hoặc há» tên há»c sinh, bạn cam kết Äã ÄÆ°á»£c cha, mẹ hoặc ngưá»i giám há» hợp pháp Äá»ng ý (bắt buá»c vá»i há»c sinh dưá»i 16 tuá»i), chá» dùng cho hoạt Äá»ng dạy há»c cá»§a chÃnh lá»p mình và sẽ xóa khi không còn cần thiết.",popupHint$2="Nếu chưa thấy cá»a sá» chá»n Email, hãy tìm á» thanh tác vụ phÃa dưá»i mà n hình",errInvalidCredential$2="Phiên ÄÄng nháºp Google trên trình duyá»t nà y Äã hết hạn nên không và o ÄÆ°á»£c. Hãy xoá cookie rá»i ÄÄng nháºp lại.",errPopupBlocked$2="Trình duyá»t Äã chặn cá»a sá» ÄÄng nháºp Google. Hãy bấm và o biá»u tượng chặn pop-up á» góc phải thanh Äá»a chá», chá»n Luôn cho phép, rá»i thá» lại.",errPopupClosed$2="Bạn Äã Äóng cá»a sá» ÄÄng nháºp Google trưá»c khi chá»n xong tà i khoản. Hãy bấm ÄÄng nháºp bằng Google lần nữa.",errCookiesBlocked$2="Trình duyá»t Äang chặn cookie nên không ÄÄng nháºp Google ÄÆ°á»£c. Hãy xoá cookie rá»i thá» lại.",errNetwork$2="Mất kết ná»i mạng khi Äang ÄÄng nháºp. Hãy kiá»m tra lại Wi-Fi hoặc 4G rá»i thá» lại.",errTooManyRequests$2="Bạn Äã thá» ÄÄng nháºp quá nhiá»u lần. Vui lòng Äợi và i phút rá»i thá» lại.",errUserDisabled$2="Tà i khoản nà y Äã bá» khoá. Vui lòng liên há» quản trá» viên Äá» ÄÆ°á»£c há» trợ.",errWebView$2="Bạn Äang má» trang trong ứng dụng Zalo/Facebook nên không ÄÄng nháºp Google ÄÆ°á»£c. Hãy bấm dấu ba chấm á» góc trên bên phải, chá»n Má» bằng trình duyá»t, rá»i ÄÄng nháºp lại.",errUnknown$2="Không ÄÄng nháºp ÄÆ°á»£c. Nguyên nhân thưá»ng gặp nhất là cookie cÅ© cá»§a trình duyá»t. Hãy thá» xoá cookie rá»i ÄÄng nháºp lại.",errCodeHint$2="Mã lá»i: {{code}}",cookieHelpBtn$2="ð Xem cách xoá cookie",cookieHelpTitle$2="CÃCH XOà COOKIES",cookieHelpStep1$2="Và o trang bá» lá»i.",cookieHelpStep2$2="Nhấn <b>Ctrl + Shift + Del</b> (nút Delete).",cookieHelpStep3$2="Bảng <b>Xoá dữ liá»u duyá»t web</b> hiá»n ra (như ảnh dưá»i), bá» tÃch hết, <b>chá» Äá» lại dòng thứ 2</b>.",cookieHelpStep4$2="Góc trên bên phải cá»§a bảng nà y, chá»n <b>Xem thêm</b> (hoặc <b>More</b>), chá»n <b>Từ trưá»c Äến nay</b> (hoặc <b>All time</b>). Sau Äó nhấn <b>Xoá dữ liá»u</b> á» góc dưá»i bên phải.",cookieHelpStep5$2="Là m xong <b>tắt Chrome/Cá»c Cá»c</b>. Và o lại lÃ ÄÆ°á»£c.",cookieHelpImgAlt$2="Ảnh minh hoạ bảng Xoá dữ liá»u duyá»t web cá»§a Chrome",cookieHelpClose$2="Äã hiá»u",viLogin={logoText:logoText$2,logoSubtitle:logoSubtitle$2,loginTitle:loginTitle$2,loginDescription:loginDescription$2,loggingInBtn:loggingInBtn$2,loginGoogleBtn:loginGoogleBtn$2,loginNote:loginNote$2,loginFooterText:loginFooterText$2,highlightTools:highlightTools$2,highlightAI:highlightAI$2,highlightSimulation:highlightSimulation$2,highlightClassroom:highlightClassroom$2,highlightFree:highlightFree$2,loginFailed:loginFailed$2,pleaseTryAgain:pleaseTryAgain$2,loginNotePrefix:loginNotePrefix$2,loginNoteTerms:loginNoteTerms$2,loginNoteAnd:loginNoteAnd$2,loginNotePrivacy:loginNotePrivacy$2,loginNoteSuffix:loginNoteSuffix$2,disclaimerCopyright:disclaimerCopyright$2,disclaimerConsent:disclaimerConsent$2,consentCheckboxLabel:consentCheckboxLabel$2,consentRequired:consentRequired$2,disclaimerStudentPhoto:disclaimerStudentPhoto$2,popupHint:popupHint$2,errInvalidCredential:errInvalidCredential$2,errPopupBlocked:errPopupBlocked$2,errPopupClosed:errPopupClosed$2,errCookiesBlocked:errCookiesBlocked$2,errNetwork:errNetwork$2,errTooManyRequests:errTooManyRequests$2,errUserDisabled:errUserDisabled$2,errWebView:errWebView$2,errUnknown:errUnknown$2,errCodeHint:errCodeHint$2,cookieHelpBtn:cookieHelpBtn$2,cookieHelpTitle:cookieHelpTitle$2,cookieHelpStep1:cookieHelpStep1$2,cookieHelpStep2:cookieHelpStep2$2,cookieHelpStep3
512:cookieHelpStep3$2,cookieHelpStep4:cookieHelpStep4$2,cookieHelpStep5:cookieHelpStep5$2,cookieHelpImgAlt:cookieHelpImgAlt$2,cookieHelpClose:cookieHelpClose$2},page$q={sidebarTitle:"𪢠Kéo Co Kiến Thức",newGame:"Tạo Trò chÆ¡i má»i",myGames:"Kéo co cá»§a tôi",viewGuideTooltip:"Xem hưá»ng dẫn sá» dụng",guideLabel:"Hưá»ng dẫn sá» dụng",guideLabelShort:"Hưá»ng dẫn",guideTitle:"Hưá»ng Dẫn Kéo Co Kiến Thức",guideDesc:"Tìm hiá»u cách tạo trò chÆ¡i Kéo Co Kiến Thức Äá» há»c sinh thi Äấu"},share$b={loadingGame:"Äang tải trò chÆ¡i Kéo Co...",loadError:"Không thá» tải trò chÆ¡i. Link có thá» Äã hết hạn hoặc bá» xóa.",notFound:"Không tìm thấy trò chÆ¡i",backHome:"Vá» Trang Chá»§"},myGames$f={loadListError:"â Lá»i khi tải danh sách trò chÆ¡i",deleteConfirm:"Bạn có chắc muá»n xóa trò chÆ¡i nà y?",deleteSuccess:"â
Äã xóa trò chÆ¡i",deleteError:"â Lá»i khi xóa trò chÆ¡i",loadingList:"â³ Äang tải danh sách trò chÆ¡i...",myGamesCount:"𪢠Kéo co cá»§a tôi ({{count}})",noGames:"ð Chưa có trò chÆ¡i nà o",createFirstGame:"â Tạo Trò chÆ¡i Äầu tiên",questionCount:"{{count}} câu há»i",playTest:"ChÆ¡i",assign:"Giao nhiá»m vụ",edit:"Chá»nh sá»a",delete:"Xóa",lockedTip:"Gia hạn Äá» má» bà i nà y",extendSubscription:"Gia hạn 30k/nÄm",expiredLabel:"Gói Äã hết hạn!",downloadOffline:"Tải xuá»ng",downloadOfflineUpgrade:"Nâng cấp Äá» tải xuá»ng",downloading:"Äang tải...",downloadOfflineError:"â Không tạo ÄÆ°á»£c file tải xuá»ng, vui lòng thá» lại",demo:{title:"Kéo Co - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"}},teamPlay$2={loading:"Loading...",teamBlue:"Äá»i Xanh",teamRed:"Äá»i Äá»",freeze:"Äóng BÄng!",punishment:"Phạt trả lá»i sai"},form$x={addQuestionSuccess:"â
Äã thêm {{count}} câu há»i (Tá»ng cá»ng: {{total}})",updateQuestionSuccess:"â
Äã cáºp nháºt câu há»i",removeQuestionMsg:"ðï¸ Äã xóa câu há»i {{index}}",clearAllConfirm:"Xóa tất cả câu há»i?",clearAllSuccess:"ðï¸ Äã xóa tất cả câu há»i",titleRequired:"â Vui lòng nháºp tiêu Äá» trò chÆ¡i",minQuestionsRequired:"â Vui lòng thêm Ãt nhất 5 câu há»i (hiá»n tại: {{count}})",updateGameSuccess:"â
Äã cáºp nháºt trò chÆ¡i!",createGameSuccess:"â
Äã tạo trò chÆ¡i Kéo Co má»i!",limitReached:"â ï¸ Bạn Äã dùng hết lượt tạo Kéo Co miá»
n phÃ. Vui lòng nâng cấp Äá» tiếp tục.",saveError:"â Lá»i khi lưu trò chÆ¡i: {{error}}",testRequireQuestions:"â ï¸ Vui lòng thêm câu há»i trưá»c khi test",untitledGame:"Kéo Co chưa có tên",editGameTitle:"Chá»nh sá»a Kéo Co",createGameTitle:"Tạo Kéo Co má»i",trialCount:"ð Äã dùng {{current}}/{{limit}} lượt tạo Kéo Co",premiumStatus:"â
Bạn Äang dùng chế Äá» Premium - Không giá»i hạn",proStatus:"â
Bạn Äang dùng chế Äá» Pro - Không giá»i hạn",formTitleLabel:"Tiêu Äá» Trò chÆ¡i:",formTitlePlaceholder:"Nháºp tiêu Äá»...",configSectionTitle:"âï¸ Cấu hình trò chÆ¡i",team1NameLabel:"Tên Äá»i 1:",team2NameLabel:"Tên Äá»i 2:",timeLimitLabel:"Thá»i gian thi Äấu (giây):",time30s:"30 giây",time60s:"60 giây (Tiêu chuẩn)",time90s:"90 giây",time120s:"120 giây",time180s:"3 phút",time300s:"5 phút",time600s:"10 phút",time900s:"15 phút",time1200s:"20 phút",winDiffLabel:"Sá» Äiá»m chênh lá»ch Äá» thắng:",wrongFreezeTimeLabel:"Thá»i gian Äóng bÄng khi sai (giây):",gameModeLabel:"Chế Äá» chÆ¡i",modeDefault:"Mặc Äá»nh",modeDefaultDesc:"Má»i Äá»i có bá» câu há»i riêng, trả lá»i Äá»c láºp. Äá»i nà o vượt chênh lá»ch Äiá»m sẽ thắng.",modeSame:"Chế Äá» cùng câu há»i",modeSameDesc:"2 Äá»i trả lá»i chung 1 câu há»i. Äá»i nà o Äúng sẽ kéo ÄÆ°á»£c dây và cả 2 chuyá»n câu má»i. Äá»i sai bá» Äóng bÄng. Vượt chênh lá»ch Äiá»m thì thắng.",modeTarget:"Chạm má»c thì thắng",modeTargetDesc:"Câu há»i lặp lại vô hạn. Äá»i nà o Äạt Äá»§ sá» câu Äúng trưá»c sẽ thắng ngay láºp tức.",targetScoreLabel:"Sá» câu Äúng Äá» thắng:",noShuffleA:"Không Äảo thứ tá»± Äáp án",noShuffleADesc:"Các Äáp án sẽ hiá»n thá» theo Äúng thứ tá»± Äã nháºp, không bá» xáo trá»n",questionOrderLabel:"Thứ tá»± câu há»i",shuffleQDefault:"Äảo ngẫu nhiên (mặc Äá»nh)",shuffleQDefaultDesc:"Câu há»i sẽ ÄÆ°á»£c xáo trá»n ngẫu nhiên má»i lần chÆ¡i",noShuffleQ:"Giữ nguyên thứ tá»±",noShuffleQDesc:"Câu há»i khi chÆ¡i sẽ xuất hiá»n Äúng theo thứ tá»± trong danh sách Äã nháºp",endOnLast:"Hết câu thì hết game",endOnLastDesc:"Khi má»t Äá»i trả lá»i hết bá» câu há»i, trò chÆ¡i kết thúc ngay â Äá»i có Äiá»m cao hÆ¡n thắng",controlModeLabel:"Phương thức Äiá»u khiá»n",controlTouch:"Sá» dụng mà n tương tác",controlKeyboard:"Sá» dụng bà n phÃm (Äá»i Xanh: Q W A S - Äá»i Äá»: O P K L)",questionsSectionTitle:"â Bá» câu há»i ({{count}} câu)",clearAllBtn:"ðï¸ Xóa tất cả",pickFromBankBtn:"ðï¸ Chá»n từ Kho hoặc AI",manualInputBtn:"âï¸ Nháºp thá»§ công",questionsNote:"* Cần Ãt nhất 5 câu há»i. Câu há»i sẽ xuất hiá»n lại nếu trả lá»i hết.",questionListHeader:"Danh sách câu há»i",answersCountLbl:"{{count}} Äáp án",editQuestionTooltip:"Sá»a câu há»i nà y",deleteQuestionTooltip:"Xóa câu há»i nà y",noQuestionsLbl:"ð Chưa có câu há»i nà o",noQuestionsDesc:"Chá»n từ Kho hoặc AI, hoặc Nháºp thá»§ công Äá» bắt Äầu",playTestBtn:"â¶ï¸ Test chÆ¡i thá»",savingBtn:"ð¾ Äang lưu...",saveBtn:"ð¾ Lưu Trò chÆ¡i",selectQuestionsTitle:"Chá»n câu há»i (Bạn có thá» chá»n bao nhiêu tùy thÃch)",pickFromLessonBtn:"Từ bà i có sẵn",lessonPickerTitle:"Chá»n bà i Äá» lấy câu há»i",aiAudioHint:"ð Ãm thanh câu há»i ÄÆ°á»£c há» trợ á» chế Äá» 'Cùng câu há»i'",noAiAudioHint:"ð Ãm thanh câu há»i không ÄÆ°á»£c há» trợ á» chế Äá» nà y",bgmLabel:"
512ðµ Nhạc ná»n mặc Äá»nh",bgmDefault:"Mặc Äá»nh (Bà i 4)",bgmTrack:"Bà i {{n}}",bgmUploadHint:"Há»c sinh vẫn có thá» Äá»i nhạc trong lúc chÆ¡i.",bgmPrivateLabel:"Hoặc tải nhạc riêng (FullGame):",competitionLabel:"ð® Môn thi Äấu",tugOfWarOption:"𪢠Kéo co",dragonBoatOption:"ð£ Äua thuyá»n rá»ng",defaultHint:"Mặc Äá»nh",newHint:"Má»i",missingLibraryFields:"Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÄng lên thư viá»n.",aiAudioWarning:"Chá»n chế Äá» 'Cùng câu há»i' trong cà i Äặt Äá» báºt âm thanh câu há»i",lessonPickerNoMatch:"Không tìm thấy câu há»i phù hợp (Äã bá» qua {{count}} câu).",lessonPickerAdded:'Äã thêm {{added}} câu từ "{{title}}". Bá» qua {{skipped}} câu không hợp lá».',lessonPickerAddedOnly:'Äã thêm {{added}} câu từ "{{title}}".'},player$j={unmute:"ð Báºt Ãm",mute:"ð Tắt Ãm",fullscreen:"â¶ Toà n Mà n Hình",exit:"Thoát",gameOver:"Kết thúc!",draw:"Hòa Nhau!",winnerLbl:"Äá»i chiến thắng:",finalScoreLbl:"Tá» sá»: {{score1}} - {{score2}}",playAgainBtn:"ð ChÆ¡i Lại",viewReportBtn:"ð Xem Báo Cáo",exitBtn:"â Thoát",reportTitle:"ð Báo Cáo Kết Quả",reportDraw:"Hòa Nhau",reportWinnerBlue:"ð Äá»i Xanh thắng",reportWinnerRed:"ð Äá»i Äá» thắng",reportWinnerSuffix:"thắng",reportScoreSuffix:"Äiá»m",closeBtn:"â Äóng",reportTeamBlue:"ðµ Äá»i Xanh ({{score}} Äiá»m)",reportTeamRed:"ð´ Äá»i Äá» ({{score}} Äiá»m)",reportEmpty:"Chưa có câu trả lá»i nà o.",reportQuestionNum:"Câu {{index}}",reportChosen:"Äã chá»n:",reportImage:"(hình ảnh)",reportCorrectHint:"Äáp án Äúng:",audioStop:"â¹ï¸ Dừng",audioReplay:"ð Nghe lại",assignmentIntro:"Nháºp tên thà nh viên cá»§a 2 Äá»i trưá»c khi bắt Äầu",exampleNames:"Và dụ: Linh, Thá»nh, Khang,...",startTugCta:"ð© Bắt Äầu kéo co!",introStartBtn:"Bắt Äầu",introRuleTime:"Thá»i gian thi Äấu: {{seconds}} giây",introRuleDiff:"Äá»i nà o hÆ¡n {{diff}} Äiá»m sẽ thắng ngay láºp tức",introRuleTarget:"Äá»i nà o Äạt {{score}} Äiá»m trưá»c sẽ thắng",introRuleShared:"Hai Äá»i cùng trả lá»i 1 câu há»i â Äá»i Äúng trưá»c ÄÆ°á»£c Äiá»m và cả 2 chuyá»n câu má»i",introRuleIndep:"Má»i Äá»i có {{count}} câu há»i riêng, trả lá»i Äá»c láºp",introRuleFreeze:"Trả lá»i sai bá» Äóng bÄng {{seconds}} giây",introRuleKeyboard:"Äiá»u khiá»n bà n phÃm: Äá»i Xanh Q W A S â Äá»i Äá» O P K L",introRuleTouch:"Chạm/bấm và o Äáp án Äá» trả lá»i"},viTugOfWar={page:page$q,share:share$b,myGames:myGames$f,teamPlay:teamPlay$2,form:form$x,player:player$j},sidebar$e={title:"Video Tương Tác",upgradePro:"Nâng Cấp Lẻ",upgradeProTitle:"Nâng cấp Äá» má» khóa giá»i hạn",createNew:"Tạo video má»i",myLessons:"Bà i giảng cá»§a tôi",allowSeeking:"Cho phép tua video",saving:"Äang lưu...",update:"Cáºp nháºt",saveLesson:"Lưu bà i giảng",preview:"Xem thá»",guide:"Hưá»ng dẫn",guideTitle:"Xem hưá»ng dẫn sá» dụng",guideUsage:"Hưá»ng dẫn sá» dụng",trialUsed:"Äã dùng",trialLimit:"lượt",unlimited:"Không giá»i hạn"},helpModal$3={title:"Hưá»ng Dẫn Video Tương Tác",description:"Tìm hiá»u cách tạo và quản lý video tương tác vá»i câu há»i trắc nghiá»m"},myLessons$4={title:"Video cá»§a tôi",subtitle:"Quản lý các video tương tác cá»§a bạn",emptyTitle:"Chưa có video nà o",emptyHint:'Bấm "Tạo video má»i" từ menu bên trái Äá» bắt Äầu!',questionCount:"câu há»i",updatedAt:"Cáºp nháºt:",startFrom:"Bắt Äầu từ:",viewOriginal:"Xem video gá»c",confirmDelete:"Bạn có chắc chắn muá»n xóa video nà y?",deleteSuccess:"Äã xóa video thà nh công",deleteFail:"Không thá» xóa video",loadFail:"Không thá» tải danh sách video",localVideoWarning:"Video tải lên chá» có thá» xem á» máy tÃnh ban Äầu, không thá» giao bà i",btnView:"Xem video",btnEdit:"Chá»nh sá»a",btnAssign:"Giao bà i",btnDelete:"Xóa",defaultTitle:"Video tương tác",demo:{title:"Video Tương Tác - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"Xem thá» video tương tác Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"},localVideoShareWarning:"Chá» có thá» chia sẻ bà i dùng YouTube. Bà i dùng video local không thá» chia sẻ.",createFirstBtn:"Tạo video Äầu tiên"},quizForm$1={titlePlaceholder:"Nháºp tên video...",noTitle:"Chưa Äặt tên â click Äá» Äá»i",youtubeHint:"Dùng link YouTube",localHint:"Tải video từ máy",youtubeUrlPlaceholder:"Dán link YouTube và o Äâyâ¦",localModeHint:"Äang á» chế Äá» tải video từ máy",localReady:"Video Äã tải lên",localChangeFile:"Äá»i file",localMissing:`Video không còn trong bá» nhá» Äá»m, 513hãy tải lên lại`,localPrompt:"Click Äá» chá»n file video",localPromptSub:"MP4, WebM, MOV⦠â chá» lưu trên máy nà y",localInfoBanner:"Video tải lên chá» dùng ÄÆ°á»£c trên máy tÃnh nà y. Không thá» giao bà i cho há»c sinh.",ytPlaceholder:"Nháºp link YouTube Äá» xem video",localPlaceholder:"Chá»n file video Äá» xem trưá»c",playerLoading:"Äang tảiâ¦",addAtTime:"Thêm tại",panelTitle:"Sá»± kiá»n dòng thá»i gian",noQuestions:"Chưa có câu há»i",noQuestionsHint:"Play video â click thanh tiến Äá» â nhấn nút thêm",errorNoUrl:"Vui lòng nháºp link YouTube",errorNoFile:"Vui lòng chá»n file video",errorIncomplete:"Vui lòng Äiá»n Äầy Äá»§ thông tin cho tất cả câu há»i",saveSuccess:"Äã lưu video thà nh công!",updateSuccess:"Äã cáºp nháºt video thà nh công!",saveFail:"Không thá» lưu video. Vui lòng thá» lại.",copiedLink:"Äã sao chép link!",saveLinkFirst:"Vui lòng lưu video trưá»c!",indexedDbFail:"Không thá» lưu video và o bá» nhá» Äá»m. Trình duyá»t có thá» không há» trợ.",minLessons:"Phải có Ãt nhất má»t câu há»i!",modalAddTitle:"+ Thêm câu há»i má»i",modalEditTitle:"Chá»nh sá»a câu há»i",modalManual:"Nháºp thá»§ công",modalBank:"Chá»n từ Kho hoặc AI",modalAI:"Tạo bằng AI",modalBankHint:"Chá»n má»t câu há»i từ Kho câu há»i hoặc sinh bằng AI, sau Äó xem lại và lưu.",modalOpenBank:"Má» Kho câu há»i / AI",modalCancel:"Há»§y",modalSave:"Lưu câu há»i",importedFromBank:"Äã nháºp câu há»i từ Kho. Xem lại rá»i nhấn Lưu.",questionPickerTitle:"Chá»n câu há»i cho Video Tương Tác",modalOpenLesson:"Từ bà i có sẵn",lessonPickerTitle:"Chá»n bà i Äá» lấy câu há»i",lessonPickerNoMatch:"Không có câu nà o phù hợp."},quizOverlay$1={question:"Câu",rewind:"Xem lại video",correct:"ChÃnh xác! Tuyá»t vá»i!",incorrect:"Hãy thá» lại nhé!"},videoPlayer$1={back:"Quay lại",backEditor:"Quay lại trang soạn thảo",notFoundTitle:"Không tìm thấy video",notFoundMsg:"Video tải lên chá» có thá» xem á» máy tÃnh ban Äầu. Bá» nhá» Äá»m (IndexedDB) Äã bá» xóa hoặc bạn Äang dùng thiết bá» khác.",notFoundHint:"Quay lại Äá» tải lên lại video trên máy nà y.",loading:"Äang tải video từ bá» nhá» Äá»mâ¦"},quizEntry$1={question:"Câu",answer:"Äáp án",timeClick:"Click Äá» chá»nh thá»i gian",noContent:"Chưa có ná»i dung",questionPlaceholder:"Nháºp câu há»i... (há» trợ công thức toán)"},lockedTip$7="Gia hạn Äá» má» bà i nà y",viInteractiveVideo={sidebar:sidebar$e,helpModal:helpModal$3,myLessons:myLessons$4,quizForm:quizForm$1,quizOverlay:quizOverlay$1,videoPlayer:videoPlayer$1,quizEntry:quizEntry$1,lockedTip:lockedTip$7}
513,hero$7={title:"ð° Bảng giá dá»ch vụ",sub:"Sá» dụng thá» miá»
n phà â chá» trả tiá»n khi cần thêm. Không thu phà ẩn."},proPlan$2={title:"Gói FullGame â Trá»n bá» công cụ bà i giảng tương tác",badge:"ÄÆ°á»£c ưa chuá»ng nhất",price:"200.000â«",unit:"/ nÄm",description:"Má» khóa toà n bá» game và công cụ soạn bà i giảng tương tác. KHÃNG bao gá»m Công cụ AI và Tiá»n Ãch GD (bán riêng).",features:["Cho phép tải âm thanh và thu âm và o ná»i dung bà i giảng","Nháºn báo cáo chi tiết quá trình là m bà i cá»§a từng há»c sinh","Sá» dụng không giá»i hạn tất cả công cụ dạy há»c tương tác","Lưu trữ bà i há»c mãi mãi","Công cụ AI mua riêng 30.000Ä/công cụ â không bao gá»m trong FullGame"]},singularFeatures$2={title:"Mua lẻ từng tÃnh nÄng",price:"30.000â«",unit:"/ nÄm / tÃnh nÄng",line1:"Má»i tÃnh nÄng tương tác mua riêng lẻ vá»i giá 30.000â«/nÄm.",line2:"Chuyá»n khoản 60.000â« = 2 nÄm, 90.000â« = 3 nÄm â há» thá»ng tá»± Äá»ng kÃch hoạt.",list:["Các tÃnh nÄng tương tác (Video, à chữ, Kéo co, v.v.)"]},extendedLink$2={title:"Gói Lưu Trữ Dà i Hạn (Extended Link)",price:"50.000â«",unit:"/ 1 nÄm",description:"Dà nh cho GV cần lưu link bà i há»c dà i hạn Äá» nghiên cứu khoa há»c, viết sáng kiến kinh nghiá»m (SKKN).",features:["Giao bà i vá»i thá»i hạn hiá»u lá»±c lên Äến 1 nÄm thay vì tá»i Äa 30 ngà y mặc Äá»nh","Sá» dụng cho toà n bá» các trò chÆ¡i có tÃnh nÄng Giao bà i"]},aiTools$2={title:"Bá» Công cụ AI Chuyên sâu",group1Title:"Mua lẻ từng công cụ",group1Price:"30.000â«",group1Unit:"/ công cụ / vÄ©nh viá»
n",group2Title:"Mua gá»p nhiá»u công cụ",group2Price:"Giảm Äến 20%",group2Unit:"",group3Title:"Tặng kèm FullGame",group3Price:"2 công cụ",group3Unit:"miá»
n phÃ",line1:"Trả má»t lần, dùng mãi mãi.",noteLabel:"Lưu ý:",line2:"Mua gá»p cà ng nhiá»u công cụ, giảm giá cà ng cao (má»i công cụ thêm giảm thêm 2%, tá»i Äa 20%). FullGame tặng kèm 2 công cụ Äầu tiên.",features:["14 công cụ AI chuyên sâu cho giáo viên â từ soạn giáo án Äến tạo Äá» thi","Mua lẻ 30.000Ä/công cụ hoặc mua gá»p Äá» ÄÆ°á»£c giảm giá","Má» khóa vÄ©nh viá»
n â Không giá»i hạn sá» lần sá» dụng"]},freeTrial$2={title:"Gói Miá»
n phà & Dùng thá»",intro:"Website cho phép sá» dụng <0>miá»
n phÃ</0> nhiá»u tÃnh nÄng cÆ¡ bản. Vá»i các tÃnh nÄng tương tác chuyên sâu, bạn ÄÆ°á»£c tạo tá»i Äa 05 sản phẩm Äá» dùng thá». Riêng mảng AI: Có các công cụ miá»
n phà hoà n toà n (Chat, Ảnh hưá»ng nghiá»p...), còn các Nhóm chuyên sâu cần má» khóa Äá» sá» dụng vÄ©nh viá»
n.",table:{feature:"TÃnh nÄng",limit:"Giá»i hạn thá»"},note:"Các bà i Äã tạo trong thá»i gian dùng thá» ÄÆ°á»£c giữ lại và vẫn truy cáºp ÄÆ°á»£c sau khi hết hạn."},multiYear$2={title:"Giảm giá khi ÄÄng ký nhiá»u nÄm",intro:"Ãp dụng cho <0>FullGame</0> và <2>tÃnh nÄng lẻ</2> khi ÄÄng ký từ 2 nÄm trá» lên:",table:{years:"Sá» nÄm",discount:"Giảm giá"},yearUnit:"{{count}} nÄm",noDiscount:"Không giảm",discountValue:"Giảm {{percent}}%",note:"Giảm giá áp dụng trưá»c, sau Äó má»i tÃnh thêm mã giảm giá (nếu có)."},notes$2={title:"ð Lưu ý:",item1:"Thanh toán qua <0>chuyá»n khoản ngân hà ng</0> (quét mã QR tá»± Äá»ng tạo trong ứng dụng).",item2:"Há» thá»ng nâng cấp tá»± Äá»ng sau khi xác nháºn thanh toán â thưá»ng trong vòng và i phút.",item3:"Nếu cần há» trợ, liên há» Zalo <0>{{phone}}</0>."},cta$2={title:"Bắt Äầu ngay hôm nay",sub:"Dùng thá» miá»
n phà â nâng cấp bất kỳ lúc nà o ngay trong ứng dụng.",btn:"Liên há» Zalo Äá» ÄÆ°á»£c tư vấn"},viPricing={hero:hero$7,proPlan:proPlan$2,singularFeatures:singularFeatures$2,extendedLink:extendedLink$2,aiTools:aiTools$2,freeTrial:freeTrial$2,multiYear:multiYear$2,notes:notes$2,cta:cta$2},shipping$2={hero:{title:"ChÃnh Sách Váºn Chuyá»n & Giao Nháºn",sub:"Hưá»ng dẫn quy trình kÃch hoạt dá»ch vụ sá» trên <1>{{url}}</1>",lastUpdated:"Cáºp nháºt lần cuá»i: {{date}}"}
513,digitalNote:{title:"ð¦ Lưu ý quan trá»ng:",content:"<1>{{name}}</1> là ná»n tảng cung cấp <1>dá»ch vụ phần má»m kỹ thuáºt sá» (SaaS)</1>. Chúng tôi <1>không giao hà ng hóa váºt lý</1>. Tất cả sản phẩm/dá»ch vụ ÄÆ°á»£c cung cấp hoà n toà n trá»±c tuyến thông qua tà i khoản ngưá»i dùng."},ordering:{title:"1. Quy Trình Äặt Hà ng & Xác Nháºn Giao Dá»ch",intro:"Äá» nâng cấp tà i khoản, ngưá»i dùng thá»±c hiá»n theo các bưá»c sau:",steps:[{title:"ÄÄng nháºp",desc:"ÄÄng nháºp và o tà i khoản tại giaoviendoimoi.com bằng Google"},{title:"Chá»n gói dá»ch vụ",desc:"Chá»n gói nâng cấp phù hợp (Pro, AI Tools, tÃnh nÄng lẻ...)"},{title:"Thanh toán",desc:"Chuyá»n khoản ngân hà ng theo mã QR ÄÆ°á»£c cung cấp trên trang nâng cấp"},{title:"KÃch hoạt",desc:"Há» thá»ng tá»± Äá»ng xác nháºn và kÃch hoạt dá»ch vụ"}]},activation:{title:"2. Thá»i Gian KÃch Hoạt Dá»ch Vụ",intro:"Sau khi thanh toán thà nh công, dá»ch vụ sẽ ÄÆ°á»£c kÃch hoạt theo các má»c thá»i gian sau:",timeline:[{title:"KÃch hoạt tá»± Äá»ng â Dưá»i 5 phút",desc:"Khi thanh toán qua <1>VietQR (BIDV)</1> vá»i ná»i dung chuyá»n khoản Äúng cú pháp. Há» thá»ng SePay tá»± Äá»ng xác nháºn và cáºp nháºt tà i khoản ngay láºp tức, không cần chá» duyá»t thá»§ công."},{title:"Trong 2â4 giá» là m viá»c",desc:"Trưá»ng hợp há» thá»ng chưa tá»± Äá»ng xác nháºn, chúng tôi sẽ kiá»m tra và kÃch hoạt thá»§ công trong giá» hà nh chÃnh (8:00â22:00 hằng ngà y)."},{title:"Tá»i Äa 24 giá»",desc:"Trong trưá»ng hợp thanh toán ngoà i giá» hà nh chÃnh hoặc cần xác minh thêm thông tin. Nếu quá 24 giá» chưa ÄÆ°á»£c kÃch hoạt, vui lòng liên há» há» trợ qua Zalo hoặc email."}]},scope:{title:"3. Phạm Vi Cung Cấp Dá»ch Vụ",items:["Dá»ch vụ ÄÆ°á»£c cung cấp trá»±c tuyến, không giá»i hạn Äá»a lý â ngưá»i dùng á» bất kỳ Äâu Äá»u có thá» sá» dụng","Chá» cần thiết bá» có kết ná»i internet và trình duyá»t web (Chrome, Edge, Firefox, Safari)","Không yêu cầu cà i Äặt phần má»m (trừ gói Offline)","Tương thÃch máy tÃnh, máy tÃnh bảng và Äiá»n thoại thông minh"]},confirmation:{title:"4. Xác Nháºn Giao Dá»ch",intro:"Sau khi giao dá»ch ÄÆ°á»£c hoà n tất và kÃch hoạt thà nh công:",items:["Trạng thái tà i khoản sẽ cáºp nháºt ngay trên giao diá»n website (góc trên bên phải)","Tất cả tÃnh nÄng Äã mua sẽ ÄÆ°á»£c má» khóa và sá» dụng ÄÆ°á»£c ngay","Thông tin gói dá»ch vụ và ngà y hết hạn hiá»n thá» trong phần quản lý tà i khoản","Ngưá»i dùng có thá» liên há» qua email hoặc Zalo Äá» yêu cầu xác nháºn bằng vÄn bản nếu cần"]},refund:{title:"5. ChÃnh Sách Hoà n Trả Dá»ch Vụ",intro:"Do tÃnh chất cá»§a <1>dá»ch vụ kỹ thuáºt sá»</1> (kÃch hoạt ngay sau thanh toán), chÃnh sách hoà n trả ÄÆ°á»£c quy Äá»nh như sau:",validCases:{title:"â
Trưá»ng hợp ÄÆ°á»£c hoà n tiá»n:",items:["Dá»ch vụ không hoạt Äá»ng như mô tả trong vòng 7 ngà y sau khi kÃch hoạt","Thanh toán bá» trùng lặp (nạp 2 lần cho cùng má»t gói)","KÃch hoạt sai gói do lá»i há» thá»ng"]},warning:"<1>â ï¸ Lưu ý:</1> Chúng tôi <1>không hoà n tiá»n</1> trong trưá»ng hợp ngưá»i dùng Äá»i ý sau khi Äã sá» dụng dá»ch vụ, hoặc tà i khoản bá» chấm dứt do vi phạm Äiá»u khoản Sá» dụng. Vui lòng Äá»c kỹ mô tả gói dá»ch vụ trưá»c khi thanh toán.",requestInfo:"Äá» yêu cầu hoà n tiá»n, vui lòng liên há» qua email <1>{{email}}</1> trong vòng <1>7 ngà y</1> ká» từ ngà y thanh toán, kèm theo bằng chứng giao dá»ch."}
513,technicalSupport:{title:"6. Há» Trợ Kỹ Thuáºt Sau KÃch Hoạt",items:["Há» trợ qua Zalo: 0363 357 745 â phản há»i trong giá» hà nh chÃnh (8:00â22:00)","Há» trợ qua Email: [email protected] â phản há»i trong 2â3 ngà y là m viá»c","Hưá»ng dẫn sá» dụng qua kênh YouTube và TikTok chÃnh thức","Nhóm há» trợ Facebook và Zalo cá»ng Äá»ng giáo viên"]},relatedLinks:{label:"ð Tà i liá»u liên quan:",privacy:"ð ChÃnh sách Bảo máºt",terms:"ð Äiá»u khoản Sá» dụng",about:"ð¤ Thông tin Ngưá»i sá» hữu"},contact:{title:"Liên Há» Há» Trợ",sub:"Nếu bạn chưa nháºn ÄÆ°á»£c dá»ch vụ sau thá»i gian quy Äá»nh, hoặc cần há» trợ vá» giao dá»ch, vui lòng liên há» ngay:",note:"Hoặc liên há» Zalo: <1>{{phone}}</1> Äá» ÄÆ°á»£c há» trợ nhanh hÆ¡n."},footer:{copyright:"© {{year}} {{name}}. Bảo lưu má»i quyá»n.",privacy:"ChÃnh sách bảo máºt",terms:"Äiá»u khoản"}},privacy$2={hero:{title:"ChÃnh Sách Bảo Máºt",sub:"Cam kết cá»§a <1>{{name}}</1> vá» viá»c bảo vá» quyá»n riêng tư và dữ liá»u cá nhân cá»§a bạn.",lastUpdated:"Ngà y cáºp nháºt: {{date}}"},intro:{p1:"Chà o mừng bạn Äến vá»i <1>{{name}}</1> (giaoviendoimoi.com) â ná»n tảng há» trợ giáo viên tạo bà i giảng tương tác, trò chÆ¡i há»c táºp và quản lý lá»p há»c hiá»u quả. Chúng tôi hiá»u rằng quyá»n riêng tư cá»§a bạn là vô cùng quan trá»ng. ChÃnh sách nà y giải thÃch rõ cách chúng tôi thu tháºp, sá» dụng, lưu trữ và bảo vá» thông tin cá»§a bạn.",summary:{title:"ð Tóm tắt nhanh:",content:"Chúng tôi chá» thu tháºp thông tin tá»i thiá»u cần thiết Äá» váºn hà nh dá»ch vụ. Chúng tôi <1>không bán</1>, không chia sẻ trái phép, và không dùng dữ liá»u cá»§a bạn cho mục ÄÃch quảng cáo cá»§a bên thứ ba. Riêng ảnh và tên há»c sinh do giáo viên nháºp, xem <1>Mục 10</1> Äá» biết cách chúng tôi bảo vá»."}},section1:{title:"1. Thông Tin Chúng Tôi Thu Tháºp",sub1:"1.1. ÄÄng nháºp bằng Google (Google Sign-In)",p1:"Khi bạn ÄÄng nháºp bằng tà i khoản Google thông qua Firebase Authentication, chúng tôi chá» nháºn ÄÆ°á»£c các thông tin sau:",items1:["Äá»a chá» Email â dùng Äá» Äá»nh danh tà i khoản và liên lạc khi cần","Tên hiá»n thá» â dùng Äá» cá nhân hóa giao diá»n","Ảnh Äại diá»n â URL ảnh công khai từ tà i khoản Google cá»§a bạn"],scopes:{title:"Phạm vi quyá»n (Scopes):",pre:"Chúng tôi chá» yêu cầu phạm vi cÆ¡ bản (",mid:"). Chúng tôi",not:"KHÃNG",post:"yêu cầu quyá»n truy cáºp Gmail, Google Drive, Contacts hay bất kỳ dữ liá»u nhạy cảm nà o khác."},sub2:"1.2. Dữ liá»u há»c sinh",p2:"Há»c sinh <1>không có tà i khoản</1> và không tá»± ÄÄng ký trên ná»n tảng. Có hai luá»ng dữ liá»u khác nhau: (a) há»c sinh tham gia qua mã PIN â xá» lý <1>ẩn danh</1>, chá» lưu biá»t danh do há»c sinh tá»± Äặt và Äiá»m cá»§a hoạt Äá»ng; (b) danh sách lá»p do <1>giáo viên chá»§ Äá»ng nháºp</1> â có thá» gá»m há» tên và ảnh chân dung há»c sinh. Luá»ng (b) là dữ liá»u cá nhân, ÄÆ°á»£c quy Äá»nh riêng tại Mục 10.",sub3:"1.3. Dữ liá»u sá» dụng dá»ch vụ",p3:"Chúng tôi có thá» ghi lại các thông tin kỹ thuáºt như: loại trình duyá»t, Äá»a chá» IP, thá»i gian truy cáºp nhằm mục ÄÃch phân tÃch hiá»u suất và cải thiá»n dá»ch vụ. Dữ liá»u nà y không ÄÆ°á»£c dùng Äá» nháºn dạng cá nhân."},section2:{title:"2. Cách Chúng Tôi Sá» Dụng Thông Tin",items:["Xác thá»±c danh tÃnh và cấp quyá»n truy cáºp tà i khoản","Lưu trữ bà i trắc nghiá»m, vòng quay, trò chÆ¡i và ná»i dung giảng dạy bạn tạo ra","Theo dõi lá»ch sá» game và tiến trình há»c táºp (dữ liá»u ẩn danh)","Quản lý gói dá»ch vụ và lá»ch sá» thanh toán cá»§a tà i khoản","Gá»i thông báo kỹ thuáºt quan trá»ng liên quan Äến tà i khoản","Cải thiá»n và phát triá»n tÃnh nÄng má»i cá»§a ná»n tảng"]},section3:{title:"3. Lưu Trữ & Bảo Máºt Dữ Liá»u",sub1:"3.1. NÆ¡i lưu trữ dữ liá»u",p1:"Toà n bá» dữ liá»u ngưá»i dùng ÄÆ°á»£c lưu trữ an toà n trên hạ tầng <1>Google Firebase</1> (Firestore, Authentication, Storage) â tuân thá»§ tiêu chuẩn ISO 27001 và SOC 2/3.",items1:["Bà i trắc nghiá»m và ná»i dung giảng dạy bạn tạo ra","Lá»ch sá» game và kết quả hoạt Äá»ng cá»§a lá»p há»c","Tiến trình há»c táºp (dữ liá»u ẩn danh cá»§a há»c sinh tham gia bằng mã PIN)","Danh sách lá»p do giáo viên nháºp: há» tên và ảnh chân dung há»c sinh (nếu giáo viên có sá» dụng)","Thông tin gói dá»ch vụ và ngà y hết hạn"],sub2:"3.2. Biá»n pháp bảo máºt",items2:["Mã hóa dữ liá»u khi truyá»n tải bằng HTTPS/TLS","Kiá»m soát truy cáºp theo vai trò (giáo viên chá» xem dữ liá»u cá»§a chÃnh mình)","Ảnh há»c sinh lưu trong vùng riêng cá»§a từng tà i khoản, quy tắc bảo máºt chặn má»i truy cáºp từ tà i khoản khác","Xác thá»±c Äa lá»p thông qua Firebase Authentication","Sao lưu dữ liá»u Äá»nh kỳ theo chÃnh sách cá»§a Google Firebase"],warning:"<1>â ï¸ Lưu ý:</1> Mặc dù áp dụng các biá»n pháp bảo máºt tá»t nhất, không có há» thá»ng nà o Äảm bảo an toà n tuyá»t Äá»i 100%. Hãy bảo máºt tà i khoản Google cá»§a bạn."},section4:{title:"4. Thanh Toán & Nâng Cấp Tà i Khoản",p1:"Mua gói FullGame ÄÆ°á»£c xá» lý qua chuyá»n khoản ngân hà ng (<1>VietQR</1>) hoặc Buy Me a Coffee Äá»i vá»i ngưá»i dùng quá»c tế.",commitment:{title:"
513ð Cam kết thanh toán:",content:"Há» thá»ng cá»§a chúng tôi <1>KHÃNG</1> lưu trữ bất kỳ thông tin thẻ tÃn dụng, thẻ ghi nợ hay tà i khoản ngân hà ng nà o. Giao dá»ch chuyá»n khoản ÄÆ°á»£c thá»±c hiá»n trá»±c tiếp qua ứng dụng ngân hà ng cá»§a bạn, hoặc qua Buy Me a Coffee."},items:["Chá» lưu trạng thái gói dá»ch vụ (Free/Pro) và ngà y gia hạn","Ná»i dung chuyá»n khoản (mã Äá»i soát) Äá» xác nháºn thanh toán","Lá»ch sá» thanh toán phục vụ há» trợ khách hà ng khi cần"]},section5:{title:'5. Ba Cam Kết "KHÃNG" Cá»§a Chúng Tôi',commits:[{title:"KHÃNG bán dữ liá»u",desc:"Không bán, cho thuê hay trao Äá»i thông tin cá nhân cá»§a bạn cho bất kỳ bên thứ ba nà o vì mục ÄÃch thương mại."},{title:"KHÃNG spam email",desc:"Email chá» dùng Äá» xác thá»±c và thông báo kỹ thuáºt quan trá»ng. Không gá»i email quảng cáo rác."},{title:"KHÃNG dùng ảnh há»c sinh",desc:"Không dùng ảnh, tên há»c sinh Äá» quảng cáo, huấn luyá»n AI hay bất kỳ mục ÄÃch nà o ngoà i viá»c hiá»n thá» lại cho chÃnh giáo viên Äó."}]},section6:{title:"6. Chia Sẻ Thông Tin Vá»i Bên Thứ Ba",p1:"Chúng tôi chá» chia sẻ thông tin vá»i các Äá»i tác sau Äá» váºn hà nh dá»ch vụ. Ảnh và tên há»c sinh <1>không ÄÆ°á»£c chia sẻ</1> vá»i bất kỳ Äá»i tác nà o ngoà i hạ tầng lưu trữ Google Firebase.",table:{partner:"Äá»i tác",purpose:"Mục ÄÃch",data:"Dữ liá»u chia sẻ",rows:[["Google Firebase","Lưu trữ & xác thá»±c","Email, tên, ảnh Äại diá»n giáo viên; ảnh/tên há»c sinh (chá» lưu trữ, không dùng và o viá»c khác)"],["Ngân hà ng / Buy Me a Coffee","Xá» lý thanh toán","Tên, email (cho hóa ÄÆ¡n)"],["Google Analytics","Phân tÃch hiá»u suất ẩn danh","Dữ liá»u ẩn danh (không gá»m ảnh/tên há»c sinh)"]]}},section7:{title:"7. Quyá»n Cá»§a Bạn",items:["Quyá»n truy cáºp: Xem thông tin cá nhân chúng tôi Äang lưu trữ vá» bạn","Quyá»n chá»nh sá»a: Cáºp nháºt thông tin cá nhân không chÃnh xác","Quyá»n xóa: Yêu cầu xóa toà n bá» dữ liá»u tà i khoản cá»§a bạn","Quyá»n rút lại Äá»ng ý: Thu há»i quyá»n truy cáºp Google OAuth bất kỳ lúc nà o","Quyá»n di chuyá»n dữ liá»u: Nháºn bản sao dữ liá»u á» Äá»nh dạng có thá» Äá»c ÄÆ°á»£c","Quyá»n cá»§a phụ huynh/há»c sinh: Yêu cầu xem, sá»a, xóa ảnh và thông tin há»c sinh (xem Mục 10)"],requestInfo:"Äá» thá»±c hiá»n bất kỳ quyá»n nà o, vui lòng liên há» qua email <1>{{email}}</1>. Chúng tôi sẽ xá» lý trong vòng <1>7 ngà y là m viá»c</1>."},section8:{title:"8. Cookie & Công Nghá» Theo Dõi",items:["Cookie bắt buá»c: Duy trì phiên ÄÄng nháºp (cần thiết Äá» dá»ch vụ hoạt Äá»ng)","Cookie tùy chá»n: Lưu cà i Äặt giao diá»n như ngôn ngữ, chá»§ Äá»","Analytics: Phân tÃch lưu lượng truy cáºp ẩn danh Äá» cải thiá»n hiá»u suất"],p1:"Bạn có thá» xóa cookie bất kỳ lúc nà o trong cà i Äặt trình duyá»t. Tuy nhiên, vô hiá»u hóa cookie bắt buá»c có thỠảnh hưá»ng Äến chức nÄng ÄÄng nháºp."},section9:{title:"9. Bảo Vá» Trẻ Em",p1:"Dá»ch vụ hưá»ng Äến Äá»i tượng sá» dụng là <1>giáo viên</1>. Há»c sinh không có tà i khoản riêng và không tá»± ÄÄng ký trên ná»n tảng.",sub1:"Há»c sinh tham gia bằng mã PIN",p2:"Không cần ÄÄng ký, không cần email, không cần thông tin cá nhân. Há»c sinh chá» nháºp má»t biá»t danh do các em tá»± Äặt Äá» hiá»n thá» trên bảng xếp hạng. Chúng tôi khuyến nghá» giáo viên hưá»ng dẫn há»c sinh không dùng há» tên Äầy Äá»§ là m biá»t danh.",sub2:"Danh sách lá»p do giáo viên nháºp",p3:"Má»t sá» tÃnh nÄng (Äiá»m danh, gá»i tên ngẫu nhiên, chia nhóm) cần giáo viên nháºp danh sách lá»p, có thá» kèm ảnh chân dung há»c sinh. Äây là dữ liá»u cá nhân cá»§a trẻ em vÃ ÄÆ°á»£c quy Äá»nh chi tiết tại Mục 10."},section10:{title:"11. Thay Äá»i ChÃnh Sách",p1:"Má»i thay Äá»i quan trá»ng sẽ ÄÆ°á»£c thông báo qua:",items:["Thông báo ná»i báºt trên trang web tá»i thiá»u 30 ngà y trưá»c khi có hiá»u lá»±c","Email thông báo gá»i Äến Äá»a chá» Äã ÄÄng ký (vá»i thay Äá»i trá»ng yếu)",'Cáºp nháºt ngà y "Cáºp nháºt lần cuá»i" á» Äầu trang nà y'],p2:"Viá»c t
513iếp tục sá» dụng dá»ch vụ sau khi chÃnh sách có hiá»u lá»±c ÄÆ°á»£c xem là bạn Äã Äá»ng ý vá»i các thay Äá»i Äó."},sectionExt:{title:"12. Tiá»n Ãch Chrome (Nháºn xét môn há»c/CSDL & Äánh giá chuẩn nghá» nghiá»p)",p1:'Các tiá»n Ãch Chrome do Giáo viên Äá»i má»i phát triá»n â bao gá»m "Nháºn xét môn há»c, há»c bạ VnEdu, CSDL ngà nh GD" và "Äánh giá chuẩn nghá» nghiá»p giáo viên" â thu tháºp và xá» lý các thông tin sau:',items:["Tên và Äá»a chá» email Google cá»§a bạn â dùng Äá» xác minh tà i khoản và kiá»m tra trạng thái ÄÄng ký","Trạng thái ÄÄng ký (còn hạn / hết hạn) â lưu tạm trong bá» nhá» cục bá» cá»§a trình duyá»t tá»i Äa 12 giá»","Tiá»n Ãch KHÃNG thu tháºp, KHÃNG lưu trữ và KHÃNG gá»i bất kỳ dữ liá»u nà o vá» há»c sinh hay ná»i dung trang lên máy chá»§","Tiá»n Ãch chá» chạy trên trang phần má»m khi bạn chá»§ Äá»ng bấm nút â không chạy ngầm"],note:"Dữ liá»u xác thá»±c ÄÆ°á»£c gá»i qua kết ná»i HTTPS tá»i Google OAuth 2.0 và Cloud Function bảo máºt cá»§a chúng tôi Äá» xác minh ÄÄng ký. Không có dữ liá»u nà o ÄÆ°á»£c chia sẻ vá»i bên thứ ba."},section11:{title:"13. Liên Há» & Yêu Cầu Xóa Dữ Liá»u",sub:"Nếu bạn có câu há»i vá» chÃnh sách bảo máºt, hoặc muá»n yêu cầu xóa toà n bá» dữ liá»u tà i khoản, vui lòng liên há» chúng tôi:",note:'Ghi rõ tiêu Äá»: "Yêu cầu xóa dữ liá»u" và email Äã ÄÄng ký. Chúng tôi sẽ xá» lý trong vòng <1>7 ngà y là m viá»c</1>.'},footer:{copyright:"© {{year}} {{name}}. Bảo lưu má»i quyá»n.",login:"ÄÄng nháºp"},sectionPhotos:{title:"10. Ảnh & Thông Tin Há»c Sinh Do Giáo Viên Nháºp",p1:"Má»t sá» tÃnh nÄng cho phép giáo viên tạo danh sách lá»p gá»m há» tên và ảnh chân dung há»c sinh, nhằm phục vụ các hoạt Äá»ng như Äiá»m danh, gá»i tên ngẫu nhiên, chia nhóm. Äây là tÃnh nÄng tùy chá»n â giáo viên hoà n toà n có thá» sá» dụng ná»n tảng mà không cần tải lên ảnh nà o.",warning:"<1>â ï¸ áº¢nh chân dung há»c sinh là dữ liá»u cá nhân nhạy cảm.</1> Vá»i há»c sinh dưá»i 16 tuá»i, viá»c xá» lý bắt buá»c phải có sá»± Äá»ng ý cá»§a cha, mẹ hoặc ngưá»i giám há» hợp pháp theo quy Äá»nh pháp luáºt vá» bảo vá» dữ liá»u cá nhân.",sub1:"10.1. Vai trò cá»§a má»i bên & cÆ¡ sá» pháp lý",p2:"Giáo viên (hoặc nhà trưá»ng) là bên quyết Äá»nh viá»c thu tháºp và sá» dụng ảnh há»c sinh, Äá»ng thá»i là bên có trách nhiá»m xin sá»± Äá»ng ý cá»§a phụ huynh/ngưá»i giám há». Ná»n tảng chá» Äóng vai trò lưu trữ và hiá»n thá» lại theo yêu cầu cá»§a giáo viên Äó. Trưá»c lần Äầu tải ảnh lên cho má»t lá»p, há» thá»ng yêu cầu giáo viên xác nháºn Äã có sá»± Äá»ng ý nà y; xác nháºn ÄÆ°á»£c ghi nháºn theo từng lá»p kèm thá»i Äiá»m.",sub2:"10.2. Ai xem ÄÆ°á»£c ảnh",items2:["Chá» tà i khoản giáo viên Äã tải ảnh lên má»i xem ÄÆ°á»£c â quy tắc bảo máºt cá»§a há» thá»ng chặn má»i tà i khoản khác","Ảnh không xuất hiá»n trong hoạt Äá»ng há»c sinh tham gia bằng mã PIN","Ảnh không ÄÆ°á»£c ÄÄng công khai, không láºp chá» mục trên công cụ tìm kiếm","Nhân sá»± váºn hà nh chá» truy cáºp khi ÄÆ°á»£c yêu cầu há» trợ kỹ thuáºt hoặc khi pháp luáºt yêu cầu"],sub3:"10.3. Chúng tôi KHÃNG là m gì vá»i ảnh há»c sinh",items3:["Không dùng cho quảng cáo, tiếp thá» dưá»i bất kỳ hình thức nà o","Không dùng Äá» huấn luyá»n mô hình trà tuá» nhân tạo","Không bán, cho thuê, trao Äá»i hay chia sẻ vá»i bên thứ ba","Không dùng nháºn dạng khuôn mặt Äá» Äá»nh danh há»c sinh ngoà i phạm vi lá»p há»c cá»§a chÃnh giáo viên Äó"],sub4:"10.4. Thá»i hạn lưu trữ & quyá»n xóa",p4:"Ảnh ÄÆ°á»£c lưu cho Äến khi giáo viên xóa, hoặc khi tà i khoản bá» xóa. Trong trang quản lý lá»p, giáo viên có thá» xóa từng ảnh hoặc xóa toà n bỠảnh cá»§a lá»p bất kỳ lúc nà o â thao tác xóa là vÄ©nh viá»
n. Chúng tôi khuyến nghá» giáo viên xóa ảnh khi kết thúc nÄm há»c hoặc khi không còn cần cho viá»c dạy há»c. Khi tà i khoản bá» xóa theo yêu cầu, toà n bỠảnh và danh sách lá»p bá» xóa cùng.",parentRights:"Phụ huynh, ngưá»i giám há» hoặc chÃnh há»c sinh có quyá»n yêu cầu xem, sá»a hoặc xóa ảnh và thông tin liên quan. Hãy liên há» trá»±c tiếp giáo viên phụ trách lá»p â ngưá»i có thá» xóa ngay trong ứng dụng. Nếu không liên há» ÄÆ°á»£c, gá»i email tá»i <1>{{email}}</1>, chúng tôi xá» lý trong vòng <1>7 ngà y là m viá»c</1>."}},terms$2={hero:{title:"Äiá»u Khoản Sá» Dụng",sub:"Vui lòng Äá»c kỹ trưá»c khi sá» dụng dá»ch vụ cá»§a <1>{{name}}</1> ({{url}}).",lastUpdated:"Ngà y cáºp nháºt: {{date}}"},intro:{p1:'Äiá»u khoản Sá» dụng nà y ("Äiá»u khoản") là thá»a thuáºn pháp lý giữa bạn ("Ngưá»i dùng") và <1>{{name}}</1> ("chúng tôi") Äiá»u chá»nh quyá»n truy cáºp và sá» dụng ná»n tảng tại Äá»a chá» <3>{{url}}</3>. Bằng viá»c ÄÄng ký, ÄÄng nháºp hoặc sá» dụng bất kỳ tÃnh nÄng nà o cá»
513§a dá»ch vụ, bạn xác nháºn Äã Äá»c, hiá»u và <5>Äá»ng ý</5> bá» rà ng buá»c bá»i các Äiá»u khoản nà y.',summary:{title:"ð Äá»i tượng áp dụng:",content:"Äiá»u khoản nà y áp dụng cho tất cả ngưá»i dùng ÄÄng ký tà i khoản, bao gá»m giáo viên, nhà giáo dục và bất kỳ ai sá» dụng dá»ch vụ. Há»c sinh tham gia bằng mã PIN (ẩn danh) không bá» rà ng buá»c bá»i Äiá»u khoản nà y."}},section1:{title:"1. Äá» Tuá»i & Chấp Nháºn Äiá»u Khoản",teacher:{title:"Äá»i vá»i Giáo viên (Ngưá»i tạo tà i khoản và quản lý lá»p há»c)",content:"Bạn phải <1>Äá»§ 18 tuá»i trá» lên</1> Äá» ÄÄng ký tà i khoản, sá» dụng các dá»ch vụ và thá»±c hiá»n nâng cấp tà i khoản (nếu có). Khi ÄÄng nháºp bằng Google Sign-In, bạn xác nháºn Äã Äá»c, hiá»u và <3>Äá»ng ý toà n bá»</3> vá»i các Äiá»u khoản Sá» dụng và <5>ChÃnh sách Bảo máºt</5> cá»§a chúng tôi."},student:{title:"Äá»i vá»i Há»c sinh (Ngưá»i tham gia)",content:"<b>Không có giá»i hạn Äá» tuá»i tá»i thiá»u</b> khi há»c sinh tham gia các trò chÆ¡i, bà i kiá»m tra (như Kéo Co, Trắc nghiá»m Nghiêng Äầu, v.v.) thông qua <b>mã phòng (PIN)</b> hoặc <b>link chia sẻ</b>. Tuy nhiên, há»c sinh sá» dụng ná»n tảng phải dưá»i sá»± <b>hưá»ng dẫn, giám sát và Äá»ng ý</b> cá»§a Giáo viên quản lý lá»p hoặc Phụ huynh/Ngưá»i giám há» hợp pháp."},note:"ð¡ Lưu ý: Äiá»u khoản nà y có thá» ÄÆ°á»£c cáºp nháºt. Viá»c tiếp tục sá» dụng dá»ch vụ sau khi có thay Äá»i Äá»ng nghÄ©a vá»i viá»c bạn chấp nháºn phiên bản má»i nhất. Nếu không Äá»ng ý, vui lòng dừng sá» dụng dá»ch vụ và liên há» Äá» xóa tà i khoản."},section2:{title:"2. Quyá»n Sá» Dụng Dá»ch Vụ",intro:"Chúng tôi cung cấp hai loại tà i khoản vá»i quyá»n hạn khác nhau:",plans:[{title:"Tà i khoản Dùng thá» (Trial)",items:["Truy cáºp các tÃnh nÄng cÆ¡ bản có giá»i hạn","Tạo sá» lượng ná»i dung giá»i hạn má»i tháng","Há» trợ qua tà i liá»u hưá»ng dẫn","Có thá» nâng cấp lên Pro bất kỳ lúc nà o"]},{badge:"â FullGame",title:"Tà i khoản Pro / Premium",items:["Truy cáºp toà n bá» tÃnh nÄng không giá»i hạn","Tạo và lưu trữ ná»i dung không giá»i hạn","Ưu tiên há» trợ kỹ thuáºt","Nháºn tÃnh nÄng má»i sá»m nhất"]}],sub1:"2.1. Sá» hữu trà tuá» & Giá»i hạn sá» dụng",p1:"Toà n bá» mã nguá»n (source code), thiết kế giao diá»n, thuáºt toán game và ná»i dung cá»§a ná»n tảng là tà i sản trà tuá» thuá»c vá» <1>{{name}}</1>, ÄÆ°á»£c bảo há» theo pháp luáºt Viá»t Nam và các công ưá»c quá»c tế vá» quyá»n tác giả.",ipWarning:{title:"ð« Bản quyá»n và Tà i sản Trà tuá»",content:"Toà n bá» thiết kế giao diá»n (UI/UX), Äá» há»a, hiá»u ứng và mã nguá»n (source code) cá»§a các công cụ trên ná»n tảng (bao gá»m <1>Kéo Co, Quiz Nghiêng Äầu, à Chữ</1>...) thuá»c sá» hữu cá»§a <3>giaoviendoimoi.com</3>. Ngưá»i dùng <5>không ÄÆ°á»£c phép</5> sá» dụng các công cụ phần má»m Äá» trÃch xuất, dá»ch ngược (reverse engineering), sao chép trá»±c tiếp mã nguá»n hoặc Än cắp tà i nguyên Äá» há»a cá»§a ná»n tảng nhằm mục ÄÃch thương mại.",exception:"Ngoại lá» ÄÆ°á»£c phép: Viá»c bạn tá»± lấy cảm hứng Äá» láºp trình ra các cÆ¡ chế trò chÆ¡i tương tá»± <1>không bá» coi là vi phạm</1> Äiá»u khoản nà y."},sub2:"2.2. Ná»i dung bạn tạo ra",p2:"Bạn giữ quyá»n sá» hữu Äá»i vá»i <1>ná»i dung câu há»i, bà i táºp và tà i liá»u giảng dạy</1> mà bạn tạo ra trên ná»n tảng. Bằng cách tải lên hoặc tạo ná»i dung, bạn cấp cho chúng tôi quyá»n lưu trữ và hiá»n thá» ná»i dung Äó Äá» cung cấp dá»ch vụ cho bạn."},section3:{title:"3. Trách Nhiá»m Ngưá»i Dùng",sub1:"3.1. Trách nhiá»m vá» ná»i dung",p1:"Giáo viên và ngưá»i dùng <1>tá»± chá»u hoà n toà n trách nhiá»m</1> vá» tÃnh chÃnh xác, Äúng Äắn và hợp pháp cá»§a má»i ná»i dung câu há»i, bà i táºp, tà i liá»u giảng dạy ÄÆ°á»£c tạo ra hoặc chia sẻ trên ná»n tảng.",items1:["Äảm bảo ná»i dung phù hợp vá»i chương trình giáo dục và lứa tuá»i há»c sinh","Chá»u trách nhiá»m bản quyá»n Äá»i vá»i hình ảnh, âm thanh, vÄn bản ÄÆ°á»£c sá» dụng","Không sá» dụng dá»ch vụ Äá» thá»±c hiá»n mục ÄÃch thương mại trái phép"],sub2:"3.2. Ná»i dung bá» nghiêm cấm",prohibits:[{title:"Vi phạm pháp luáºt",desc:"Ná»i dung vi phạm pháp luáºt Viá»t Nam và các Äiá»u ưá»c quá»c tế."},{title:"Ná»i dung 18+",desc:"Ná»i dung khiêu dâm, bạo lá»±c, không phù hợp lứa tuá»i há»c sinh."}
513,{title:"Ngôn từ thù háºn",desc:"Kỳ thá», phân biá»t Äá»i xá» dân tá»c, tôn giáo, giá»i tÃnh."},{title:"Spam & quảng cáo",desc:"Sá» dụng ná»n tảng Äá» phát tán quảng cáo, tin rác trái phép."}],sub3:"3.3. Bảo máºt tà i khoản",items3:["Bạn có trách nhiá»m bảo máºt thông tin ÄÄng nháºp và tà i khoản Google cá»§a mình.","Không chia sẻ tà i khoản vá»i ngưá»i khác hoặc cho phép nhiá»u ngưá»i cùng sá» dụng má»t tà i khoản.","Thông báo ngay cho chúng tôi nếu phát hiá»n hà nh vi truy cáºp trái phép và o tà i khoản."],sub4:"3.4. Bản Quyá»n Ná»i Dung Tải Lên & CÆ¡ Chế Safe Harbor",p4:"Ngưá»i dùng <1>tá»± chá»u trách nhiá»m hoà n toà n</1> vá» bản quyá»n Äá»i vá»i má»i hình ảnh, âm thanh, video và file dữ liá»u tải lên há» thá»ng. Ná»n tảng Äóng vai trò là <3>ÄÆ¡n vá» trung gian lưu trữ</3> (hosting intermediary) và không kiá»m duyá»t ná»i dung trưá»c khi ÄÄng tải.",safeHarbor:{title:"ð¡ï¸ CÆ¡ chế Tiếp nháºn Khiếu nại Bản quyá»n (Safe Harbor)",intro:"Theo Luáºt Sá» hữu Trà tuá» Viá»t Nam (Äiá»u 198b) vá
513» trách nhiá»m cá»§a ÄÆ¡n vá» trung gian lưu trữ, ná»n tảng áp dụng quy trình tiếp nháºn và xá» lý khiếu nại bản quyá»n theo 5 bưá»c như sau:",steps:["Bưá»c 1 â Tiếp nháºn báo cáo vi phạm: Chá»§ thá» quyá»n (hoặc Äại diá»n hợp pháp) gá»i khiếu nại tá»i email bản quyá»n bên dưá»i, kèm: (a) thông tin Äá»nh danh ná»i dung bá» vi phạm vÃ ÄÆ°á»ng dẫn (link) cụ thá» trên ná»n tảng, (b) bằng chứng chứng minh quyá»n sá» hữu hợp pháp, (c) thông tin liên há» cá»§a ngưá»i khiếu nại, (d) cam kết vá» tÃnh trung thá»±c cá»§a khiếu nại. Ná»n tảng xác nháºn Äã nháºn khiếu nại trong vòng 24 giá» là m viá»c","Bưá»c 2 â Ẩn ná»i dung tạm thá»i (provisional takedown): Nếu há» sÆ¡ khiếu nại có Äá»§ thông tin hợp lá» ban Äầu, ná»n tảng sẽ chá»§ Äá»ng ẩn (gỡ hiá»n thá» công khai) ná»i dung bá» khiếu nại trong vòng 48 giá» là m viá»c ká» từ khi xác nháºn, nhằm ngÄn chặn thiá»t hại tiếp diá»
n trong thá»i gian xác minh","Bưá»c 3 â Xác minh: Ná»n tảng Äá»i chiếu bằng chứng từ cả hai phÃa â thông báo cho ngưá»i dùng Äã tải lên ná»i dung vá» khiếu nại, Äá»ng thá»i cho phép ngưá»i nà y gá»i phản há»i/phản Äá»i (counter-notice) kèm bằng chứng trong vòng 7 ngà y là m viá»c ká» từ ngà y nháºn thông báo","Bưá»c 4 â Ra quyết Äá»nh: CÄn cứ kết quả xác minh, ná»n tảng ÄÆ°a ra má»t trong hai quyết Äá»nh: (a) nếu khiếu nại ÄÆ°á»£c xác nháºn hợp lá» hoặc ngưá»i dùng không phản há»i hợp lá» trong thá»i hạn â ná»i dung bá» gỡ bá» vÄ©nh viá»
n; (b) nếu ngưá»i dùng chứng minh ÄÆ°á»£c quyá»n sá» hữu/sá» dụng hợp pháp â ná»i dung ÄÆ°á»£c khôi phục hiá»n thá» và khiếu nại bá» bác bá»","Bưá»c 5 â Gỡ bá» vÄ©nh viá»
n & xá» lý tà i khoản: Vá»i ná»i dung bá» xác Äá»nh vi phạm, ná»n tảng xoá vÄ©nh viá»
n khá»i há» thá»ng (ká» cả bản sao lưu trong phạm vi kỹ thuáºt cho phép) và có thỠáp dụng các biá»n pháp xá» lý tà i khoản vi phạm (cảnh cáo, tạm khoá, hoặc chấm dứt) theo mức Äá» và sá» lần vi phạm quy Äá»nh tại Äiá»u khoản nà y"],contactLabel:"Kênh tiếp nháºn khiếu nại bản quyá»n:",contactNote:'Tiêu Äá» email: "Khiếu nại bản quyá»n" + tên ná»i dung vi phạm. Vui lòng ÄÃnh kèm bằng chứng quyá»n sá» hữu hợp lá».',legalNote:"âï¸ CÄn cứ pháp lý: CÆ¡ chế nà y ÄÆ°á»£c xây dá»±ng theo quy Äá»nh tại Äiá»u 198b Luáºt Sá» hữu Trà tuá» Viá»t Nam (sá»a Äá»i 2022) vá» trách nhiá»m cá»§a ÄÆ¡n vá» trung gian lưu trữ. Khi xá» lý ká»p thá»i các khiếu nại hợp lá», ná»n tảng ÄÆ°á»£c miá»
n trừ trách nhiá»m bá»i thưá»ng thiá»t hại liên quan Äến ná»i dung do ngưá»i dùng tải lên."},sub5:"3.5. Ảnh & Thông Tin Há»c Sinh",p5:"Khi tải lên ảnh chân dung hoặc nháºp há» tên há»c sinh, bạn xác nháºn mình là bên <1>quyết Äá»nh viá»c thu tháºp và sá» dụng</1> dữ liá»u Äó, và <1>Äã có sá»± Äá»ng ý</1> cá»§a cha, mẹ hoặc ngưá»i giám há» hợp pháp Äá»i vá»i há»c sinh dưá»i 16 tuá»i. Ná»n tảng chá» Äóng vai trò lưu trữ và hiá»n thá» lại theo yêu cầu cá»§a bạn.",items5:["Bạn tá»± chá»u trách nhiá»m xin và lưu giữ sá»± Äá»ng ý cá»§a phụ huynh/ngưá»i giám há», theo Äúng quy Äá»nh cá»§a nhà trưá»ng và pháp luáºt hiá»n hà nh","Chá» dùng ảnh cho hoạt Äá»ng dạy há»c cá»§a chÃnh lá»p Äó â không ÄÄng công khai, không chia sẻ ngoà i phạm vi lá»p, không dùng cho mục ÄÃch thương mại","Xóa ảnh ngay khi phụ huynh rút lại sá»± Äá»ng ý, khi há»c sinh chuyá»n lá»p/trưá»ng, hoặc khi không còn cần cho viá»c dạy há»c","Không tải lên ảnh cá»§a ngưá»i không thuá»c lá»p mình phụ trách","Chuyá»n tiếp cho chúng tôi má»i yêu cầu cá»§a phụ huynh mà bạn không tá»± xá» lý ÄÆ°á»£c trong ứng dụng"],photoNote:"â ï¸ áº¢nh chân dung cá»§a trẻ em là dữ liá»u cÃ
513¡ nhân nhạy cảm. Vi phạm cam kết trên có thá» dẫn tá»i viá»c tà i khoản bá» tạm ngừng và bạn phải tá»± chá»u trách nhiá»m pháp lý phát sinh. Cách chúng tôi lưu trữ và bảo vá» dữ liá»u nà y ÄÆ°á»£c nêu tại Mục 10 cá»§a ChÃnh sách Bảo máºt."},section4:{title:"4. Giá»i Hạn Trách Nhiá»m",p1:" <1>{{name}}</1> cam kết ná» lá»±c tá»i Äa Äá» Äảm bảo ná»n tảng hoạt Äá»ng á»n Äá»nh, an toà n và liên tục. Tuy nhiên, chúng tôi <3>không thá» bảo Äảm</3> dá»ch vụ sẽ luôn khả dụng 100% và không chá»u trách nhiá»m pháp lý trong các trưá»ng hợp sau:",items:["Gián Äoạn dá»ch vụ do sá»± cá» kỹ thuáºt từ phÃa Google Firebase (máy chá»§ lưu trữ)","Gián Äoạn do vấn Äá» kết ná»i mạng internet từ phÃa ngưá»i dùng hoặc nhà cung cấp dá»ch vụ","Mất hoặc há»ng dữ liá»u do thiên tai, tấn công mạng hoặc sá»± kiá»n bất khả kháng","Thiá»t hại gián tiếp phát sinh trong quá trình sá» dụng hoặc không thá» sá» dụng dá»ch vụ"],recommendation:"â ï¸ Khuyến nghá»: Vá»i các ná»i dung giảng dạy quan trá»ng, bạn nên sao lưu Äá»nh kỳ bằng cách xuất dữ liá»u ra file cục bá». Chúng tôi thá»±c hiá»n sao lưu há» thá»ng Äá»nh kỳ nhưng không cam kết khôi phục hoà n toà n trong má»i trưá»ng hợp.",sub1:"4.1. Dá»ch vụ bên thứ ba",p2:"Ná»n tảng tÃch hợp các dá»ch vụ bên thứ ba (Google Firebase, Google AI, Buy Me a Coffee, v.v.). Chúng tôi không chá»u trách nhiá»m vá» sá»± gián Äoạn, thay Äá»i chÃnh sách hay sá»± cá» từ phÃa các nhà cung cấp dá»ch vụ bên thứ ba nà y.",sub2:"4.2. Giá»i hạn bá»i thưá»ng",p3:"Trong phạm vi tá»i Äa ÄÆ°á»£c pháp luáºt cho phép, trách nhiá»m bá»i thưá»ng cá»§a chúng tôi Äá»i vá»i bất kỳ khiếu nại nà o không vượt quá sá» tiá»n bạn Äã thanh toán cho dá»ch vụ trong <1>3 tháng gần nhất</1>."},section5:{title:"5. Thanh Toán & Hoà n Tiá»n",items:["Phà dá»ch vụ Pro ÄÆ°á»£c tÃnh theo chu kỳ (tháng/nÄm) và tá»± Äá»ng gia hạn trừ khi bạn há»§y.","Giá dá»ch vụ có thá» thay Äá»i và sẽ ÄÆ°á»£c thông báo trưá»c Ãt nhất 30 ngà y.","Hoà n tiá»n: Chúng tôi há» trợ hoà n tiá»n trong vòng 7 ngà y ká» từ ngà y thanh toán nếu dá»ch vụ không hoạt Äá»ng như cam kết.","Viá»c vi phạm Äiá»u khoản dẫn Äến chấm dứt tà i khoản sẽ không ÄÆ°á»£c hoà n tiá»n."]},section6:{title:"6. Chấm Dứt Tà i Khoản",p1:"Chúng tôi có quyá»n <1>tạm ngừng hoặc chấm dứt</1> tà i khoản cá»§a bạn mà không cần báo trưá»c trong các trưá»ng hợp:",items:["Vi phạm má»t hoặc nhiá»u Äiá»u khoản trong thá»a thuáºn nà y","Hoạt Äá»ng gian láºn, lạm dụng dá»ch vụ hoặc gây hại cho ngưá»i dùng khác","Tà i khoản không hoạt Äá»ng trong thá»i gian dà i (hÆ¡n 24 tháng)","Yêu cầu cá»§a cÆ¡ quan pháp luáºt có thẩm quyá»n"],p2:"Bạn có thá» yêu cầu xóa tà i khoản bất kỳ lúc nà o bằng cách liên há» qua email. Sau khi xóa, dữ liá»u sẽ ÄÆ°á»£c gỡ khá»i há» thá»ng trong vòng <1>30 ngà y là m viá»c</1>."},section7:{title:"7. Sá»a Äá»i Äiá»u Khoản",p1:"<1>{{name}}</1> có quyá»n cáºp nháºt, sá»a Äá»i Äiá»u khoản Sá» dụng nà y bất kỳ lúc nà o Äá» phản ánh những thay Äá»i vá» dá»ch vụ, yêu cầu pháp lý hoặc chÃnh sách váºn hà nh. Thông báo sẽ ÄÆ°á»£c thá»±c hiá»n qua:",items:["Thông báo ná»i báºt trên trang web Ãt nhất 30 ngà y trưá»c khi Äiá»u khoản má»i có hiá»u lá»±c","Email thông báo gá»i Äến tà i khoản Äã ÄÄng ký (vá»i những thay Äá»i quan trá»ng)",'Cáºp nháºt ngà y "Cáºp nháºt lần cuá»i" á» Äầu trang nà y'],note:"Sau thá»i hạn thông báo, nếu bạn tiếp tục sá» dụng dá»ch vụ, Äiá»u Äó ÄÆ°á»£c xem là bạn Äã <1> chấp nháºn phiên bản Äiá»u khoản má»i nhất</1>
513. Nếu không Äá»ng ý, bạn có quyá»n yêu cầu xóa tà i khoản trưá»c khi Äiá»u khoản má»i có hiá»u lá»±c."},section8:{title:"8. Luáºt Ãp Dụng & Giải Quyết Tranh Chấp",p1:"Äiá»u khoản nà y ÄÆ°á»£c Äiá»u chá»nh bá»i <1>pháp luáºt Cá»ng hòa Xã há»i Chá»§ nghÄ©a Viá»t Nam</1>. Má»i tranh chấp phát sinh từ hoặc liên quan Äến Äiá»u khoản nà y sẽ ÄÆ°á»£c giải quyết theo quy trình sau:",items:["Ưu tiên: Thương lượng trá»±c tiếp giữa các bên trong vòng 30 ngà y","Nếu không Äạt thá»a thuáºn: Hòa giải hoặc trá»ng tà i theo quy Äá»nh pháp luáºt","Phương án cuá»i: Khá»i kiá»n tại Tòa án nhân dân có thẩm quyá»n tại Viá»t Nam"]},relatedLinks:{label:"ð Tà i liá»u liên quan â Xem thêm ChÃnh sách Bảo máºt cá»§a chúng tôi:",privacy:"ð ChÃnh sách Bảo máºt â"},contact:{title:"Liên Há» & Há» Trợ",sub:"Nếu bạn có câu há»i vá» Äiá»u khoản Sá» dụng, muá»n báo cáo vi phạm hoặc cần há» trợ xóa tà i khoản, vui lòng liên há» chúng tôi:",note:"Chúng tôi sẽ phản há»i trong vòng <1>2â3 ngà y là m viá»c</1>."},footer:{copyright:"© {{year}} {{name}}. Bảo lưu má»i quyá»n.",privacy:"ChÃnh sách bảo máºt",login:"ÄÄng nháºp"}},viLegal={shipping:shipping$2,privacy:privacy$2,terms:terms$2},hero$6={title:"Thông Tin Ngưá»i Sá» Hữu",sub:"Thông tin vá» chá»§ sá» hữu và ngưá»i váºn hà nh website <1>{{url}}</1>",lastUpdated:"Ngà y cáºp nháºt: {{date}}"},ownerInfo$2={title:"Thông Tin Chá»§ Sá» Hữu",labelName:"Há» và tên chá»§ sá» hữu",labelDob:"NÄm sinh",labelNationality:"Quá»c tá»ch",nationalityValue:"Viá»t Nam",labelAddress:"Äá»a chá»",labelEmail:"Email liên há»",labelPhone:"Sá» Äiá»n thoại / Zalo",labelTax:"Mã sá» thuế (MST)",labelType:"Loại hình",typeValue:"Cá nhân kinh doanh trá»±c tuyến (không thà nh láºp pháp nhân)"},websiteInfo$2={title:"Thông Tin Website",labelName:"Tên website",labelDomain:"Äá»a chá» tên miá»n",labelField:"LÄ©nh vá»±c hoạt Äá»ng",fieldValue:"Cung cấp phần má»m/công cụ há» trợ giáo dục trá»±c tuyến (EdTech)",labelAudience:"Äá»i tượng phục vụ",audienceValue:"Giáo viên, nhà giáo dục tại Viá»t Nam và quá»c tế",labelLang:"Ngôn ngữ chÃnh",langValue:"Tiếng Viá»t",labelServer:"Máy chá»§ lưu trữ",serverValue:"Google Firebase (Google LLC, Hoa Kỳ)"},mission$2={title:"Sứ Má»nh & Giá»i Thiá»u",p1:"<1>{{name}}</1> là ná»n tảng công nghá» giáo dục (EdTech) ÄÆ°á»£c xây dá»±ng bá»i má»t giáo viên vá»i mong muá»n mang Äến những công cụ dạy há»c sáng tạo, hiá»n Äại và dá»
sá» dụng cho cá»ng Äá»ng giáo viên Viá»t Nam.",p2:"Chúng tôi tin rằng công nghá» có thá» giúp viá»c há»c trá» nên thú vá» hÆ¡n, và má»i giáo viên Äá»u xứng Äáng có những công cụ chuyên nghiá»p Äá» tạo ra những tiết há»c Äáng nhá».",cards:[{title:"Trà tuá» nhân tạo",desc:"TÃch hợp AI Äá» há» trợ soạn bà i, tạo câu há»i và cá nhân hóa há»c táºp"},{title:"Gamification",desc:"Biến các bà i há»c thà nh trò chÆ¡i tương tác kÃch thÃch hứng thú há»c sinh"},{title:"Theo dõi tiến Äá»",desc:"Công cụ Äánh giá và theo dõi sá»± tiến bá» cá»§a há»c sinh theo thá»i gian thá»±c"},{title:"Tiếp cáºn dá»
dà ng",desc:"Há»c sinh tham gia không cần tà i khoản, chá» cần mã PIN hoặc link chia sẻ"}]},channels$2={title:"Kênh Liên Lạc ChÃnh Thức",intro:"Các kênh mạng xã há»i chÃnh thức cá»§a <1>{{name}}</1>:"},relatedLinks$2={label:"ð Tà i liá»u liên quan:",privacy:"ð ChÃnh sách Bảo máºt",terms:"ð Äiá»u khoản Sá» dụng",shipping:"ð ChÃnh sách Giao nháºn"},contact$2={title:"Liên Há» Trá»±c Tiếp",sub:"Má»i thắc mắc, khiếu nại hoặc Äá» nghá» hợp tác, vui lòng liên há»:",note:"Phản há»i trong vòng <1>2â3 ngà y là m viá»c</1>. Hoặc liên há» Zalo: <1>{{phone}}</1>"},footer$6={copyright:"© {{year}} {{name}}. Bảo lưu má»i quyá»n.",privacy:"ChÃnh sách bảo máºt",terms:"Äiá»u khoản"},viAbout={hero:hero$6,ownerInfo:ownerInfo$2,websiteInfo:websiteInfo$2,mission:mission$2,channels:channels$2,relatedLinks:relatedLinks$2,contact:contact$2,footer:footer$6},page$p={alert:{onlyImage:"Chá» chấp nháºn file ảnh (jpg, png, webp, gif...)",imageTooLarge:"Ảnh quá lá»n. Vui lòng chá»n ảnh dưá»i 10MB."},error:{uploadFailed:"Lá»i tải ảnh lên: ",emptyTitle:"Vui lòng nháºp tiêu Äá»",emptyImage:"Vui lòng tải lên ảnh ná»n",limitReached:"Bạn Äã hết lượt tạo miá»
n phÃ. Vui lòng nâng cấp tà i khoản.",saveFailed:"Lá»i khi lưu: ",loadFailed:"Không thá» tải danh sách ảnh. Vui lòng thá» lại.",deleteFailed:"Lá»i khi xóa: ",shareFailed:"Lá»i khi tạo link chia sẻ: ",unshareFailed:"Lá»i: ",lockedTip:"Gia hạn Äá» mỠảnh nà y",notFound:"Không tìm thấy ảnh tương tác",invali
513dLink:"Link chia sẻ không hợp lá» hoặc Äã bá» xóa.",libraryCategoryRequired:"Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng."},confirm:{delete:'Xóa "{{title}}"?'},sidebar:{title:"ð¼ï¸ Ảnh Tương Tác",upgrade:"Nâng Cấp Lẻ",upgradeHint:"Nâng cấp Äá» má» khóa giá»i hạn",create:"Tạo ảnh tương tác",createBinocular:"Tạo ảnh á»ng nhòm",myImages:"Ảnh cá»§a tôi"},create:{title:"â Tạo Ảnh Tương Tác má»i",section1:{title:"ð Thông tin cÆ¡ bản"},titleLabel:"Tiêu Äá»",titlePlaceholder:"VD: Cấu tạo tế bà o thá»±c váºt",modeLabel:"ð® Chế Äá» bà i há»c",modeQuiz:"Quiz",modeQuizDesc:"Trắc nghiá»m, trả lá»i ngắn",modeWorksheet:"Phiếu há»c táºp",modeWorksheetDesc:"Há»c sinh Äiá»n và o phiếu",maxScoreLabel:"ð Äiá»m tá»i Äa",scoreUnit:"Äiá»m",scoreHintEmpty:"Chia Äá»u cho sá» Äiá»m chạm",scoreHintFilled:"â {{points}} Äiá»m/câu ({{count}} câu)",section2:{title:"ð¼ï¸ Ảnh ná»n"},uploading:"Äang tải ảnh lên...",clickToUpload:"Click Äá» chá»n ảnh",uploadHint:"Há» trợ JPG, PNG, WebP, GIF (tá»i Äa 10MB)",replaceImage:"ð Thay ảnh",section3:{title:"ð Äiá»m chạm"},cancel:"Há»§y",saving:"â³ Äang lưu...",saveButton:"ð¾ Lưu Ảnh Tương Tác"},edit:{back:"â Quay lại",title:"âï¸ Chá»nh sá»a: {{title}}",titleLabel:"Tiêu Äá»",modeLabel:"ð® Chế Äá» bà i há»c",modeWarning:"â ï¸ Äá»i chế Äá» sẽ xóa toà n bá» Äiá»m chạm hiá»n tại.",imageLabel:"Ảnh ná»n",uploading:"â³ Äang tải...",replaceBtn:"ð Thay ảnh khác",replaceWarning:"Thay ảnh sẽ xóa tá»a Äá» % markers cÅ© trên ảnh má»i",markersLabel:"ð Äiá»m chạm",cancel:"Há»§y",saving:"â³ Äang lưu...",saveBtn:"ð¾ Lưu thay Äá»i"},preview:{back:"â Quay lại",title:"ð¬ Trình chiếu: {{title}}",maxScore:"ð Äiá»m tá»i Äa",scoreUnit:"Äiá»m",exitFullscreen:"Thoát toà n mà n hình",enterFullscreen:"Xem toà n mà n hình",exitFullscreenBtn:"â Thoát toà n mà n hình",enterFullscreenBtn:"Fullscreen â¶"},list:{subBannerTrial:"ð Äã dùng {{current}}/{{limit}} lượt tạo Ảnh Tương Tác",subBannerPro:"â
Chế Äá» {{mode}} â Không giá»i hạn",title:"ð¼ï¸ Ảnh cá»§a tôi ({{count}})",createBtn:"+ Tạo má»i",loading:"Äang tải...",emptyTitle:"Chưa có ảnh tương tác nà o",emptySubtitle:"Tạo ảnh Äầu tiên Äá» bắt Äầu!",emptyCreateBtn:"+ Tạo Ảnh Tương Tác",demo:{title:"Ảnh Tương Tác - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"Xem thỠảnh tương tác Äá» trải nghiá»m 4 loại Äiá»m chạm trưá»c khi tạo bà i cá»§a bạn"}},card:{modeWorksheet:"Phiếu há»c táºp",modeQuiz:"Quiz",markersCount:"{{count}} Äiá»m chạm",isShared:"Äang chia sẻ",viewBtn:"Xem",editBtn:"Sá»a",unshareBtn:"ð Dừng chia sẻ",shareBtn:"ð Chia sẻ",deleteBtn:"Xóa"},share:{loading:"Äang tải ảnh tương tác...",btnHome:"Vá» Trang Chá»§",playerSubtitle:"Ảnh Tương Tác â Click và o các Äiá»m chạm Äá» khám phá",legendTitle:"ð Chú giải Äiá»m chạm:",legendInfo:"Thông tin",legendQuiz:"Trắc nghiá»m",legendFill:"Trả lá»i ngắn",legendWorksheet:"Phiếu há»c táºp"}},editor$6={instruction:"Click và o bất kỳ vá» trà nà o trên ảnh Äá» thêm Äiá»m chạm. Äang có ",count:" Äiá»m chạm.",markerTooltip:"Click Äá» sá»a: {{title}}",markerDeleteTooltip:"Xóa Äiá»m chạm",empty:"Chưa có Äiá»m chạm nà o. Hãy click và o ảnh Äá» bắt Äầu!",confirmDelete:"Xóa Äiá»m chạm nà y?"},player$i={empty:"Chưa có ảnh",score:{label:"ð Äiá»m",sub:"({{correct}}/{{total}} câu Äúng · {{remaining}})",remaining:"còn {{count}} câu",completed:"hoà n thà nh!"},markerViewAgain:"Nhấn Äá» xem lại",canvasEmptyMarker:"(Ảnh chưa có Äiá»m chạm)"},markerModal$1={type:{info:"Thông tin",quiz_mc:"Trắc nghiá»m",quiz_fill:"Trả lá»i ngắn",open_input:"Phiếu há»c táºp"},frozen:{locked:"ð Äã trả lá»i",correctTitle:"Bạn Äã trả lá»i Äúng!",wrongTitle:"Bạn Äã trả lá»i sai.",lockedSub:"Câu nà y Äã bá» khóa â không thá» trá
513º£ lá»i lại."},info:{empty:"(Không có ná»i dung)",content:"Ná»i dung thông tin",placeholder:"Mô tả, giải thÃch vá» vá» trà nà y trên ảnh..."},btn:{checkMC:"Kiá»m tra Äáp án",checkFill:"Kiá»m tra",doneOpen:"ð Hoà n thà nh",close:"Äóng",pickBank:"ðï¸ Chá»n từ Kho / AI",removeAnswer:"Xóa",addAnswer:"+ Thêm Äáp án",cancel:"Há»§y",update:"ð¾ Cáºp nháºt",add:"ð Thêm Äiá»m chạm"},feedback:{correct:"ð ChÃnh xác!",wrongMC:"â Sai! Äáp án Äúng:",wrongFill:"â Sai! Äáp án Äúng:",doneOpen:"â
Äã ghi nháºn câu trả lá»i!"},input:{placeholder:"Nháºp câu trả lá»i...",hintLabel:"ð¡ Gợi ý:"},error:{infoContent:"Vui lòng nháºp ná»i dung thông tin",quizMCQuestion:"Vui lòng nháºp câu há»i",quizMCAnswers:"Cần Ãt nhất 2 Äáp án có ná»i dung",quizMCCorrect:"Vui lòng chá»n Äáp án Äúng",quizFillQuestion:"Vui lòng nháºp câu há»i",quizFillAnswer:"Vui lòng nháºp Äáp án Äúng",openPrompt:"Vui lòng nháºp câu lá»nh/hưá»ng dẫn"},defaultTitle:"Äiá»m chạm",field:{question:"Câu há»i",answers:"Äáp án (chá»n Äáp án Äúng á» bên trái)",correctAnswer:"Äáp án Äúng",hint:"Gợi ý (tuỳ chá»n)",prompt:"Câu lá»nh / Hưá»ng dẫn cho há»c sinh",placeholder:"Placeholder trong ô nháºp (tuỳ chá»n)",type:"Loại Äiá»m chạm"},placeholder:{questionMC:"Nháºp câu há»i...",answerX:"Äáp án {{num}}",questionFill:"Và dụ: Thá»§ Äô cá»§a Viá»t Nam là ___?",correctAnswer:"Nháºp Äáp án Äúng...",hint:"Gợi ý cho há»c sinh nếu cần...",prompt:"VD: Quan sát và mô tả những gì bạn thấy tại vá» trà nà y...",placeholder:"VD: Nháºp câu trả lá»i cá»§a bạn..."},tooltip:{correctAnswer:"Äáp án Äúng"},note:{openInput:"ð Há»c sinh sẽ Äiá»n và o ô nà y. Ná»i dung không bá» chấm Äiá»m â chá» dùng Äá» chiếu lên thảo luáºn."},title:{edit:"âï¸ Sá»a Äiá»m chạm",add:"ð Thêm Äiá»m chạm"},bank:{title:"Chá»n 1 câu há»i từ Kho"}},binocular$1={createTitle:"ð Tạo game á»ng nhòm",infoTitle:"Thông tin",titlePlaceholder:"Nháºp tiêu Äá» bà i há»câ¦",uploading:"Äang tải lênâ¦",dropOrClick:"Nhấn Äá» thêm ảnh (có thá» chá»n nhiá»u)",settingsTitle:"Cà i Äặt á»ng nhòm",shapeLabel:"Hình dạng lá»",shapes:{binocular:"á»ng nhòm",circle:"Tròn",square:"Vuông",hexagon:"Lục giác"},sizeLabel:"KÃch cỡ lá» ({{size}}px)",sizes:{small:"Nhá»",medium:"Vừa",large:"Lá»n"},overlayColorLabel:"Mà u ná»n che",colors:{black:"Äen",darkGreen:"Xanh lá Äáºm",darkBlue:"Xanh dương Äáºm",darkPurple:"TÃm Äáºm",darkBrown:"Nâu Äáºm",custom:"Tùy chá»nh"},opacityLabel:"Äá» che phá»§ ({{percent}}%)",bgmLabel:"Nhạc ná»n",bgmHint:"Nhạc phát khi Äang á» chế Äá» á»ng nhòm, tá»± tắt khi mỠảnh.",bgmOptions:{none:"Không có",bgm1:"Nhạc 1",bgm2:"Nhạc 2",bgm3:"Nhạc 3",bgm4:"Nhạc 4",bgm5:"Nhạc 5"},revealAudioLabel:"Ãm thanh khi mỠảnh",revealAudioHint:"Phát khi GV nhấn Enter/Space Äá» má» toà n bỠảnh.",autoRevealLabel:"Tá»± Äá»ng mỠảnh sau",secondsUnit:"giây",autoRevealHint:"Mặc Äá»nh tắt. Báºt ÄỠảnh tá»± reveal sau Äếm ngược.",photosCount:"Danh sách ảnh ({{count}} ảnh)",slidesTitle:"Danh sách ảnh",slidesUnit:"ảnh",slideNamePlaceholder:"Tên ảnh",removeSlide:"Xóa ảnh nà y",photoNamePlaceholder:"Tên ảnh {{num}}â¦",deletePhotoTooltip:"Xóa ảnh nà y",minOnePhotoWarning:"Vui lòng thêm Ãt nhất 1 ảnh.",uploadAudioError:"Tải tá»p âm thanh lên thất bại. Kiá»m tra kết ná»i rá»i bấm Lưu lại."},formatting$1={title:"ð Cỡ chữ & hình ảnh khi trình chiếu",questionFontSize:"Cỡ chữ câu há»i",answerFontSize:"Cỡ chữ Äáp án",imageSize:"Cỡ ảnh minh há»a",sizes:{small:"Bé",standard:"Chuẩn",large:"Lá»n",extraLarge:"Rất lá»n",maximum:"Cá»±c Äại"}},myImages$1={downloadFailed:"â Không tạo ÄÆ°á»£c file tải xuá»ng, vui lòng thá» lại",downloadTooltip:"Tải xuá»ng",downloadTooltipUpgrade:"Nâng cấp Äá» tải xuá»ng",downloading:"Äang tải...",downloadBtn:"Tải xuá»ng",expiredWarning:"â ï¸ Gói hết hạn! ",binocularBadge:"ð á»ng nhòm",scoreRemaining:"· còn {{count}}",scoreDone:"· xong"},viInteractiveImage={page:page$p,editor:editor$6,player:player$i,markerModal:markerModal$1,binocular:binocular$1,formatting:formatting$1,myImages:myImages$1}
513,page$o={title:"ð§ Bảo tà ng Panorama 3D",upgradeTooltip:"Mua FullGame Äá» má» giá»i hạn",upgradeBtn:"Nâng cấp lẻ",helpTooltip:"Xem video hưá»ng dẫn",helpBtn:"Hưá»ng dẫn",quotaTrial:"ð Äã dùng <1>{{currentCount}}/{{limit}}</1> lượt tạo phòng",quotaUnlimited:"â
Không giá»i hạn"},sidebar$d={create:"Tạo phòng Triá»n lãm",createRoom:"Tạo phòng 360",createWalkable:"Tạo Triá»n lãm 3D",myRooms:"Phòng cá»§a tôi"},content$1={title:"ð§ Phòng cá»§a tôi",subtitle:"Quản lý danh sách các phòng triá»n lãm cá»§a bạn",loading:"Äang tải danh sách phòng..."},empty$7={title:"Chưa có phòng triá»n lãm nà o",subtitle:"Bắt Äầu bằng cách tạo phòng triá»n lãm 3D Äầu tiên cá»§a bạn",createFirstBtn:"⨠Tạo phòng Äầu tiên"},demo$e={title:"Triá»n lãm 3D - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"CÄn phòng 3D demo Äá» hiá»u cách sá» dụng. Dùng phÃm mÅ©i tên Äá» di chuyá»n, kéo chuá»t Äá» nhìn xung quanh.",btnPlay:"ChÆ¡i thá»"},error$9={delete:"Lá»i khi xóa phòng. Vui lòng thá» lại.",save:"Lá»i khi lưu dữ liá»u. Vui lòng thá» lại.",share:"Lá»i khi chia sẻ",shareSuccess:"Link Äã sao chép",loadStatus:"Lá»i khi tải trạng thái",hotspotUpload:"Có lá»i xảy ra: "},card$5={dateUnknown:"Ngà y không xác Äá»nh",confirmDelete:'Bạn chắc chắn muá»n xóa phòng "{{title}}"?',createdAt:"Ngà y tạo:",framesCount:"Khung ảnh:",btnView:"Và o xem",btnShare:"Tạo link gá»i HS",btnShareCopied:"Äã copy link",btnEdit:"Sá»a",btnDelete:"Xóa",btnDeleting:"Xoá...",renewToOpen:"ð Gia hạn Äá» má» phòng nà y"},modal$4={error:{emptyName:"Vui lòng nháºp tên phòng",shortName:"Tên phòng phải có Ãt nhất 2 ký tá»±"},title:{create:"⨠Tạo phòng Má»i",createWalkable:"⨠Tạo Triá»n Lãm 3D",edit:"âï¸ Sá»a Thông Tin phòng"},field:{name:"Tên phòng *",type:"Loại phòng *"},placeholder:{name:"Và dụ: Phòng Công Nghá», phòng Lá»ch Sá»..."},btnCancel:"Há»§y",btnCreating:"Äang tạo...",btnUpdating:"Äang cáºp nháºt...",btnCreate:"⨠Tạo phòng",btnUpdate:"âï¸ Cáºp Nháºt",walkableWarning:"â ï¸ Không thá» thay Äá»i sang loại phòng khác khi Äã chá»n chế Äá» nà y! Chế Äá» nà y cÅ©ng yêu cầu cấu hình máy tương Äá»i tá»t!"},hotspotModal$1={title:"Chá»nh sá»a Khung {{index}}",uploadError:"Lá»i upload ảnh: ",validationError:"Vui lòng nháºp link ảnh, tải ảnh lên hoặc nháºp link video YouTube",previewLabel:"â
Ảnh sẽ hiá»n thá» trên tưá»ng:",uploadLabel:"ð¸ Chá»n ảnh từ máy tÃnh:",uploading:"â³ Äang xá» lý ảnh vÃ ÄÆ°a lên kho...",orLink:"Hoặc nháºp link ngoà i",urlLabel:"ÄÆ°á»ng dẫn ảnh (URL):",whatIsExternalLink:"Link ngoà i là gì?",urlPlaceholder:"https://...",secureLink:"ð¡ï¸ Link bảo máºt từ kho lưu trữ cá»§a bạn (Há» thá»ng tá»± Äiá»n)",videoUrlLabel:"ÄÆ°á»ng dẫn youtube (Nếu muá»n xem video trên tưá»ng):",titleLabel:"Tên tác phẩm:",titlePlaceholder:"VD: Núi rừng Tây Bắc (Äá» trá»ng sẽ lấy phần Mô tả)",authorLabel:"Tác giả:",authorPlaceholder:"VD: Nguyá»
n VÄn A (tuỳ chá»n)",descLabel:"Mô tả tranh:",descPlaceholder:"Nháºp mô tả cho ảnh...",btnDelete:"ðï¸ Xóa khung",btnCancel:"Há»§y",btnSaving:"Äang lưu...",btnUploading:"Äang tải...",btnSave:"ð¾ Lưu lại",fontSizeLabel:"Cỡ chữ:",hour:"{{count}} giá»"},pinBanner$1={count:"{{pinned}}/{{limit}} Äã ghim",expired:"â ï¸ Gói hết hạn!",renew:"Gia hạn"},editor$5={typeChanged:"â Äã thay Äá»i loại ảnh",nameChanged:"â Äã Äá»i tên phòng",nameEmpty:"Tên phòng không ÄÆ°á»£c Äá» trá»ng",confirmDeleteFrame:"Bạn chắc chắn muá»n xóa khung ảnh nà y?",showNumbers:"Hiá»n thá» STT tranh",btnBackAndSave:"â Lưu phòng & Quay lại",toolsBtn:"Công cụ",title:"Chá»nh sá»a: {{name}}",changeTypeTooltip:"Thay Äá»i loại ảnh panorama",frameIndex:"Khung {{index}}",hotspotsList:"Hotspots",hasImage:"â Äã có ảnh",btnEditFrame:"Sá»a khung",btnAddFrame:"Thêm ảnh/video",prev:"â Trưá»c",next:"Sau â",pageOf:"Trang {{current}} / {{total}}"},viewer$1={rotateHint:"Vui lòng xoay ngang Äiá»n thoại Äá» xem tá»t nhất",loading:"Äang tải phòng...",notFound:"Không tìm thấy phòng",btnBackList:"Quay lại danh sách",btnBack:"â Quay lại",btnFullscreen:"â¶ Toà n mà n hình",btnShare:"
513ð Chia sẻ",btnExitFullscreen:"â Thoát",frameInfoTitle:"Thông tin chi tiết",frameNoDesc:"Không có mô tả cho khung ảnh nà y",shareSuccess:"â Link Äã sao chép",shareError:"â Lá»i khi chia sẻ",mobileHint:"Phòng tranh 3D ⢠Xem trên mobile",mobile3DHelp:"Trên Äiá»n thoại bạn không thá» bưá»c và o không gian ảo 3D",tooltipShare:"Chia sẻ",emptyGallery:"Phòng tranh chưa có tác phẩm nà o."},share$a={embedExpiredTitle:"Ná»i dung nà y hiá»n không khả dụng",embedExpiredHint:"Liên há» ngưá»i chia sẻ Äá» ÄÆ°á»£c cấp lại quyá»n xem.",notFound:"Phòng không tá»n tại hoặc Äã ÄÆ°á»£c xóa",btnBackList:"Quay lại"},roomType$1={tech:"ð¥ï¸ Công Nghá»",normal:"ð¿ Tá»± nhiên",history:"ð Lá»ch Sá»",edu:"ð« Lá»p Há»c",walkable:"⨠Triá»n lãm 3D nháºp vai"},walkable$1={restoring:"Tác phẩm Äang ÄÆ°á»£c phục chế...",desktopOnly:"Chế Äá» 3D di chuyá»n tá»± do",desktopOnlyDesc:"Hiá»n tại tÃnh nÄng nà y chá» há» trợ trên Máy tÃnh Äá» Äảm bảo trải nghiá»m tá»t nhất.",btnBack:"Quay lại",title:"Triá»n lãm 3D Kỹ thuáºt sá»",controls:"Sá» dụng <1>PhÃm mÅ©i tên</1> Äá» di chuyá»n ⢠<3>Chuá»t</3> Äá» nhìn xung quanh",controlsMobile:"<0>Vuá»t</0> Äá» nhìn xung quanh ⢠Giữ nút <2>ð£</2> Äá» Äi tá»i",walkButton:"Äi tá»i",walkBackButton:"Äi lùi",shareTooltip:"Chia sẻ triá»n lãm",hideHint:"Ẩn hưá»ng dẫn",showHint:"Hiá»n hưá»ng dẫn",closeDetail:"Click ra ngoà i Äá» Äóng xem chi tiết",externalLinkBtn:"Xem trang liên quan",emptyArtwork:"Chưa có tác phẩm",noDescription:"Chưa có mô tả...",frameIndex:"Khung {{index}}",doorEnter:"Chạm Äá» sang phòng",doorEnterNext:"THAM QUAN PHÃNG TIẾP",showMap:"Hiá»n bản Äá»",hideMap:"Ẩn bản Äá»",muteBgm:"Tắt nhạc ná»n",unmuteBgm:"Báºt nhạc ná»n",autoTour:"Tá»± Äá»ng tham quan",autoTourStop:"Dừng tham quan",autoTourShort:"Tá»± Äá»ng",autoTourStopShort:"Dừng",tourSpeed:"Tá»c Äá» tham quan",tourModeWalk:"Äang nhìn theo hưá»ng Äi â bấm Äá» vừa Äi vừa xem",tourModeGaze:"Äang vừa Äi vừa xem tranh â bấm Äá» nhìn theo hưá»ng Äi",tourModeWalkShort:"Hưá»ng Äi",tourModeGazeShort:"Vừa xem",portalVisit:"THAM QUAN",portalNext:"PHÃNG TIẾP",clickToOpenLink:"ð Bấm Äá» má» link"},bgm$4={title:"Nhạc ná»n phòng tranh",desc:"Nhạc sẽ tá»± phát khi ngưá»i xem bưá»c và o phòng 3D (lặp lại liên tục). Tá»i Äa 5MB, Äá»nh dạng mp3/wav/ogg/m4a.",menuItem:"Nhạc ná»n",uploadBtn:"Tải nhạc lên",uploadBtnPro:"Tải nhạc lên (cần FullGame)",replaceBtn:"Äá»i nhạc khác",deleteBtn:"Xóa nhạc",useBtn:"Dùng nhạc nà y",uploading:"Äang tải lên...",saved:"Äã lưu nhạc ná»n!",deleted:"Äã xóa nhạc ná»n.",proOnly:"TÃnh nÄng tải nhạc ná»n chá» dà nh cho gói FullGame.",errorType:"Äá»nh dạng không há» trợ. Dùng mp3/wav/ogg/m4a.",errorSize:"File quá lá»n ({{size}}MB). Tá»i Äa 5MB.",errorGeneric:"Tải lên thất bại, thá» lại sau."},banner$1={menuItem:"Khẩu hiá»u theo tưá»ng",title:"BÄng rôn khẩu hiá»u theo tưá»ng",hint:"Nháºp ná»i dung khẩu hiá»u cho từng bức tưá»ng (chữ luôn IN HOA khi hiá»n thá»). BÄng rôn treo phÃa trên hà ng tranh trong phòng 3D, tá»± co dà i theo Äá» dà i chữ. Äá» trá»ng nếu không dùng.",empty:"Chưa có khẩu hiá»u",upload:"Tải ảnh",change:"Äá»i ảnh",textPlaceholder:"VD: Cá»NG HÃA Xà Há»I CHỦ NGHĨA VIá»T NAM",textColor:"Mà u chữ",bgColor:"Mà u ná»n",previewEmpty:"(xem trưá»c khẩu hiá»u)",saveOne:"ð¾ Lưu tưá»ng nà y",saved:"Äã lưu khẩu hiá»u!",removed:"Äã xóa khẩu hiá»u.",error:"Có lá»i, thá» lại sau."},cover$1={enterTour:"VÃO THAM QUAN",switchLabel:"Tạo trang bìa cho Phòng chung",switchHint:"Báºt Äá» thêm trang bìa giá»i thiá»u cho Phòng chung. Khi má» Phòng chung, ngưá»i xem thấy trang bìa trưá»c, bấm VÃO THAM QUAN má»i và o phòng Äá
513º§u tiên.",titleFromName:"Tiêu Äá» trên trang bìa chÃnh là tên Phòng chung á» trên.",titleLabel:"Tiêu Äá» triá»n lãm",titlePlaceholder:"Và dụ: Triá»n lãm tranh 3D - Không gian vÄn hóa..."},coverEditor$1={slotMain:"Khung lá»n (giữa)",slotLeft:"Khung nhá» (trái)",slotRight:"Khung nhá» (phải)"},exhibition$1={createBtn:"Tạo Phòng chung",badge:"ðï¸ Phòng chung",createTitle:"Tạo Phòng chung",editTitle:"Sá»a Phòng chung",nameLabel:"Tên Phòng chung",namePlaceholder:"Và dụ: Triá»n lãm ảnh 3D - Không gian vÄn hóa...",roomsLabel:"Chá»n các phòng trưng bà y (phòng 3D)",roomsHint:"Tick chá»n các phòng 3D thuá»c Phòng chung nà y. Kéo thứ tá»± bằng nút â²â¼ â phòng sá» 1 là phòng và o Äầu tiên. Trong lúc tham quan, cá»a trong má»i phòng dẫn sang các phòng thà nh viên khác.",entryRoom:"Và o Äầu",moveUp:"Lên trên",moveDown:"Xuá»ng dưá»i",remove:"Bá» khá»i Phòng chung",noWalkable:"Chưa có phòng Triá»n lãm 3D nà o. Hãy tạo phòng Triá»n lãm 3D trưá»c.",needName:"Vui lòng nháºp tên Phòng chung.",needRoom:"Cần Ãt nhất 1 phòng Triá»n lãm 3D Äá» tạo Phòng chung.",save:"Lưu Phòng chung",saved:"Äã lưu Phòng chung!",roomChip:"{{total}} phòng",confirmDelete:'Xóa Phòng chung "{{name}}"? (các phòng 3D thà nh viên KHÃNG bá» xóa)',notFound:"Không tìm thấy Phòng chung hoặc chưa có phòng nà o."},roomLinks$1={btn:"Thông phòng tranh",title:"Cà i Äặt liên kết phòng tranh",hint:"Chá»n phòng và o từng ô, sau Äó kéo từ nút ð cá»§a phòng nà y thả và o phòng kia Äá» ná»i (hoặc bấm ð rá»i bấm phòng ÄÃch). Liên kết là 2 chiá»u â má»i phòng tá»i Äa 3 cá»a, cá»a sẽ hiá»n ngay trong phòng 3D. Phòng á» Vá» trà 1 là phòng và o Äầu tiên â có thá» báºt trang bìa cho phòng nà y á» dưá»i.",slotLabel:"Vá» trà {{index}}",slotEmpty:"â Chá»n phòng â",linkingHint:'Äang ná»i từ "{{name}}" â bấm và o phòng ÄÃch Äá» tạo liên kết',dragToLink:"Kéo thả và o phòng khác Äá» ná»i",removeLink:"Gỡ liên kết",save:"Lưu liên kết",cancel:"Há»§y",saved:"Äã lưu liên kết phòng! Cá»a thông phòng sẽ hiá»n trong phòng 3D.",saveError:"Không lưu ÄÆ°á»£c liên kết, thá» lại sau.",needTwoRooms:"Cần Ãt nhất 2 phòng tranh 3D Äá» thông phòng.",needRoomFirst:"Chá»n phòng cho ô nà y trưá»c Äã!",maxLinks:"Má»i phòng chá» ná»i tá»i Äa 3 phòng!",maxLinksRoom:'Phòng "{{name}}" vượt quá 3 liên kết (tÃnh cả liên kết vá»i phòng ngoà i sÆ¡ Äá»).',thumbBtn:"Ảnh Äại diá»n",thumbTooltip:"Tải ảnh Äại diá»n â ảnh sẽ hiá»n trên cá»a thông phòng trong 3D",thumbSaved:"Äã lưu ảnh Äại diá»n phòng!",thumbError:"Không tải ÄÆ°á»£c ảnh, thá» lại sau.",chip:"Có thông phòng ({{total}})"},session$3={btnCollect:"ð¨ Giao HS treo tranh",btnStop:"â¹ï¸ Ngừng thu",btnDismiss:"â Xóa phiên",expiredLabel:"Hết hạn",btnReload:"ð Thu bà i",btnReloadLoading:"â³...",codeLabel:"Mã Code:",qrTooltip:"Há»c sinh quét mã QR hoặc truy cáºp link trên Äá» ná»p tranh",stopConfirm:"Bạn có chắc chắn muá»n ngừng nháºn tranh? (Mã code sẽ bá» xóa, há»c sinh không thá» ná»p thêm tranh và o phòng nà y nữa)",stopError:"Có lá»i xảy ra khi ngừng thu tranh.",bulkUpload:"ð¤ Tải ảnh (GV)",bulkLimit:"Phòng Äã Äầy tranh (45/45). Vui lòng xóa bá»t Äá» tải thêm.",bulkSuccess:"Äã tải lên thà nh công {{count}} ảnh!",bulkError:"Có lá»i xảy ra khi tải ảnh Äá»ng loạt. Vui lòng thá» lại.",reloadNoSession:'Chưa có phiên "Giao cho HS" Äang hoạt Äá»ng.',reloadNoUploads:"Há»c sinh chưa tải ảnh lên trong phiên nà y.",reloadNoNew:"Tất cả ảnh HS Äã ÄÆ°á»£c thêm và o gallery rá»i.",reloadFull:"Phòng Äã Äầy (45/45) tranh. Xóa bá»t Äá» nháºn thêm tranh HS.",reloadSuccess:"Äã tải lại {{count}} tranh HS và o phòng!{{skipped}}",reloadSkipped:" (Bá» qua {{count}} ảnh do hết slot)",reloadError:"Có lá»i khi tải lại ảnh. Vui lòng thá» lại.",studentArtwork:"Tác phẩm cá»§a {{name}}",modalTitle:"Giao cho HS treo tranh",modalInfo:"Há» thá»ng sẽ tạo mã code 5 sá» Äá» há»c sinh tải ảnh lên phòng triá»n lãm nà y. <1>Tá»ng tá»i Äa 45 tranh</1>
513 cho cả phòng.",maxPerStudent:"Sá» tranh má»i HS ÄÆ°á»£c tải lên:",unitTranh:"tranh / há»c sinh",duration:"Thá»i hạn hiá»u lá»±c cá»§a mã:",durationUnit:"{{count}} giá»",createLoading:"Äang tạo...",btnCreate:"Tạo phiên & lấy code",readyTitle:"Phiên treo tranh Äã sẵn sà ng!",readySubtitle:"Há»c sinh tải tá»i Äa <1>{{max}}</1> ảnh · Hết hạn sau <3>{{hours}} giá»</3>",codeInstruction:"Mà CODE (Click Äá» sao chép)",copied:"Äã sao chép!",copyCode:"Sao chép mã",qrInstruction:"HS quét QR hoặc nháºp code",shareLabel:"Hoặc gá»i ÄÆ°á»ng dẫn:",btnCopy:"Sao chép",btnCopied:"Äã chép",btnCloseKeep:"Äóng (giữ phiên hoạt Äá»ng)",creating:"Äang tạo...",createError:"Có lá»i xảy ra khi tạo phiên ná»p tranh.",artworkUnit:"tranh / há»c sinh",codeHint:"Mà CODE (Bấm Äá» sao chép)",qrHelp:"Há»c sinh quét mã QR hoặc truy cáºp link bên dưá»i Äá» ná»p tranh",shareOrPaste:"Hoặc gá»i ÄÆ°á»ng dẫn/nháºp và o trình duyá»t:",copyBtn:"Sao chép",successTitle:"Phiên treo tranh Äã sẵn sà ng!",successSubtitle:"Há»c sinh ná»p tá»i Äa {{count}} tranh · Hết hạn sau {{hours}} giá»",modalAlert:"Há» thá»ng sẽ tạo mã code 5 sá» Äá» há»c sinh tải ảnh lên phòng triá»n lãm nà y. <strong>Tá»ng tá»i Äa 45 tranh</strong> cho cả phòng.",maxPerStudentLabel:"Sá» tranh má»i HS ÄÆ°á»£c tải lên (trong 1 lần ná»p):",expirationLabel:"Thá»i hạn hiá»u lá»±c cá»§a mã:",allowMultipleLabel:"Cho phép HS ná»p nhiá»u lần trên cùng 1 máy (không tick: má»i máy chá» ná»p ÄÆ°á»£c ÄÃNG 1 lần, ná»p thiếu sẽ không bá» sung ÄÆ°á»£c)"},map$1={title:"SÆ¡ Äá» phòng triá»n lãm",btnShow:"SÆ¡ Äá» phòng",btnHide:"Ẩn sÆ¡ Äá»",lockedDuringSession:"Không thá» sắp xếp sÆ¡ Äá» khi Äang thu bà i HS",hint:"Bấm và o ô có tranh Äá» di chuyá»n",north:"Tưá»ng Bắc",south:"Tưá»ng Nam",west:"Tưá»ng Tây",east:"Tưá»ng Äông",p1w:"Vách 1 (Trái)",p1e:"Vách 1 (Phải)",p2w:"Vách 2 (Trái)",p2e:"Vách 2 (Phải)",shortNorth:"BẮC",shortSouth:"NAM",shortWest:"TÃY",shortEast:"ÄÃNG",moveTitle:"Di chuyá»n tranh",labelFrom
513:"Từ slot",labelTo:"Sang slot",placeholderTo:"1â45",btnMove:"Chuyá»n",btnCancel:"Há»§y",legendFilled:"Có tranh",legendEmpty:"Trá»ng",legendSelected:"Äang chá»n",guideTitle:"ð Cách Äá»i vá» trà tranh:",guideStep1:"Bấm và o ô <1>tÃm</1> muá»n di chuyá»n",guideStep2:"Nháºp sá» slot ÄÃch (1â45) â nhấn <1>Chuyá»n</1> hoặc <3>Enter</3>",guideStep3:"Slot ÄÃch phải <1>trá»ng</1>",btnSave:"Lưu sÆ¡ Äá»",btnSaving:"â³ Äang lưu...",btnSaved:"â Äã lưu",errorRange:"Vá» trà phải từ 1 Äến 45",errorSame:"Äó là vá» trà hiá»n tại",errorOccupied:"Slot {{index}} Äã có tranh",errorSave:"Có lá»i khi lưu sÆ¡ Äá». Vui lòng thá» lại."},student$3={sessionNotFound:"Phiên triá»n lãm không tá»n tại hoặc Äã kết thúc.",sessionExpired:"Phiên triá»n lãm Äã hết hạn.",loadError:"Không thá» tải thông tin phiên. Vui lòng thá» lại.",noFileError:"Vui lòng chá»n Ãt nhất 1 ảnh.",uploadError:"Có lá»i xảy ra khi tải ảnh. Vui lòng thá» lại.",loading:"Äang tải thông tin phiên...",notAvailableTitle:"Phiên không khả dụng",notAvailableDesc:"Vui lòng liên há» giáo viên Äá» nháºn mã má»i.",thanks:"ð¨ Cảm Æ¡n bạn Äã tham gia triá»n lãm!",alreadySubmittedTitle:"Bạn Äã gá»i tranh rá»i!",alreadySubmittedDesc:"Thiết bá» nà y Äã ná»p tranh cho phiên triá»n lãm nà y. Tranh cá»§a bạn Äang chá» giáo viên duyá»t và o phòng.",successTitle:"Treo tranh thà nh công!",successDesc:"<bold>{{count}}</bold> bức tranh cá»§a bạn Äã ÄÆ°á»£c gá»i Äến phòng triá»n lãm 3D.<br/>Giáo viên sẽ xem xét vÃ ÄÆ°a tranh và o phòng.",successBadge:"ð¼ï¸ Chúc mừng bạn Äã có tác phẩm trong triá»n lãm!",title:"Triá»n Lãm 3D",subtitle:"Tải lên tá»i Äa <1>{{max}}</1> bức tranh cá»§a bạn",nameLabel:"Há» và tên cá»§a bạn (Äá» ghi chú tác giả)",namePlaceholder:"VD: Nguyá»
n VÄn A (tùy chá»n)",imageTitleLabel:"Tên tác phẩm ảnh {{index}}",imageTitlePlaceholder:"VD: Núi rừng Tây Bắc (tùy chá»n)",imageAuthorLabel:"Tác giả ảnh {{index}}",imageAuthorPlaceholder:"VD: Nguyá»
n VÄn A (tùy chá»n)",imageDescLabel:"Mô tả ảnh {{index}}",imageDescPlaceholder:"VD: Vẽ bằng mà u nưá»c, lấy cảm hứng từ quê em (tùy chá»n)",btnSelect:"Nhấn Äá» chá»n ảnh",uploadHint:"Tá»i Äa {{max}} ảnh · JPG, PNG, WEBP",compressionHint:"Ảnh sẽ ÄÆ°á»£c tá»± Äá»ng nén Äá» tiết kiá»m dung lượng",selectedCount:"Äã chá»n: {{current}}/{{max}} ảnh",btnAddMore:"+ Thêm ảnh",uploading:"Äang tải ảnh...",btnUploading:"â³ Äang gá»i ({{current}}/{{total}})...",btnConfirm:"ð¼ï¸ Xác nháºn treo {{count}} tranh và o triá»n lãm",footerNote:"Ảnh ÄÆ°á»£c nén tá»± Äá»ng · Má»i thiết bá» chá» ÄÆ°á»£c gá»i 1 lần",pageForCode:"Trang web nà y phục vụ ná»p tranh cho mã: <bold>{{code}}</bold>",errorNoFiles:"Vui lòng chá»n Ãt nhất 1 ảnh Äá» gá»i.",loadingInfo:"Äang tải thông tin phiên...",unavailableTitle:"Phiên không khả dụng",contactTeacher:"Vui lòng liên há» vá»i giáo viên Äá» nháºn mã má»i.",thanksParticipating:"Cảm Æ¡n bạn Äã tham gia triá»n lãm!",congratsTask:"Chúc mừng bạn Äã hoà n thà nh nhiá»m vụ treo tranh!",uploadLimit:"Tải lên tá»i Äa {{count}} bức tranh",clickToSelect:"Nhấn Äá» chá»n ảnh",fileFormatHint:"Tá»i Äa {{max}} ảnh · JPG, PNG, WEBP",uploadingStatus:"Äang gá»i ảnh lên há» thá»ng...",btnUploadingProgress:"â³ Äang gá»i ({{current}}/{{total}})...",btnSubmit:"ð¼ï¸ Xác nháºn treo {{count}} tranh",maxSubmissionsReached:"Bạn Äã ná»p Äá»§ sá» lần tá»i Äa trên thiết bá» nà y. Hãy báo thầy/cô Äá» ÄÆ°á»£c má» thêm.",errorTooManyFiles:"Äã bá» bá»t {{dropped}} ảnh vì em chá» còn ÄÆ°á»£c ná»p tá»i Äa {{max}} ảnh.",imageLimitExceeded:"Em chá» còn ÄÆ°á»£c ná»p {{remaining}} ảnh (tá»i Äa {{limit}} ảnh cho cả phiên nà y).",quotaUsedUpDesc:"Em Äã ná»p Äá»§ {{count}} tranh cho phiên triá»n lãm nà y. Tranh cá»§a em Äang chá» giáo viên duyá»t và o phòng."},viPanorama={page:page$o,sidebar:sidebar$d,content:content$1,empty:empty$7,demo:demo$e,error:error$9,card:card$5,modal:modal$4,hotspotModal:hotspotModal$1,pinBanner:pinBanner$1,editor:editor$5,viewer:viewer$1,share:share$a,roomType:roomType$1,walkable:walkable$1,bgm:bgm$4,banner:banner$1,cover:cover$1,coverEditor:coverEditor$1,exhibition:exhibition$1,roomLinks:roomLinks$1,session:session$3,map:map$1,student:student$3}
513,page$n={title:"ð¤ Kéo Thả - Ná»i Ã",upgradeBtn:"Nâng Cấp Lẻ",upgradeTooltip:"Nâng cấp Äá» má» khóa giá»i hạn",helpBtn:"Hưá»ng dẫn sá» dụng",helpTitle:"Hưá»ng Dẫn Kéo Thả - Ná»i Ã",helpDesc:"Tìm hiá»u cách tạo bà i trắc nghiá»m kéo thả nhãn lên ảnh hoặc kéo thả ná»i ý"},sidebar$c={createDragDrop:"Tạo bà i má»i",createMatching:"Tạo bà i ná»i ý",createSorting:"Tạo bà i sắp xếp",myQuizzes:"Bà i há»c cá»§a tôi"},myQuizzes$6={title:"ð Bà i Há»c Cá»§a Tôi",subtitle:"Quản lý các bà i trắc nghiá»m kéo thả và ná»i ý cá»§a bạn",matchingLabel:"Trò chÆ¡i Ná»i Ã",dragDropLabel:"Kéo Thả Nhãn",loadingError:"Không thá» tải danh sách bà i há»c",deleteSuccess:"Xóa bà i há»c thà nh công",deleteError:"Không thá» xóa bà i há»c",noQuizMsg:"Bạn chưa có bà i há»c nà o. Hãy <1>tạo bà i há»c má»i</1> Äá» bắt Äầu.",questionCount:"Câu há»i",updated:"Cáºp nháºt",btnView:"Xem",btnViewTooltip:"Xem trưá»c / Chiếu",btnEdit:"Sá»a",btnEditTooltip:"Chá»nh sá»a bà i",btnAssign:"Giao",btnAssignTooltip:"Giao bà i cho há»c sinh",btnDeleteTooltip:"Xóa bà i",lockedTip:"Gia hạn Äá» má» bà i nà y",demo:{title:"Kéo Thả - Ná»i à - Sắp Xếp - Bản Chạy Thá»",badge:"Bản chạy thá»",typesLabel:"3 dạng câu há»i",hint:"ChÆ¡i thá» cả 3 dạng: Kéo thả nhãn, Ná»i ý, và Sắp xếp thứ tá»±"},expiredPackage:"Gói Äã hết hạn!"},createQuiz$1={updateQuestionSuccess:"Cáºp nháºt câu há»i thà nh công",addQuestionSuccess:"Thêm câu há»i thà nh công",deleteQuestionSuccess:"Xóa câu há»i thà nh công",titleErrorEmpty:"Vui lòng nháºp tiêu Äá» bà i há»c",warningNoQuestions:"Vui lòng thêm Ãt nhất 1 câu há»i",warningMaxQuestions:"Tá»i Äa 10 câu há»i cho má»i bà i",updateQuizSuccess:"Cáºp nháºt bà i há»c thà nh công",createQuizSuccess:"Tạo bà i há»c thà nh công",limitReachedMsg:"Bạn Äã dùng hết 10 lượt Quiz miá»
n phÃ. Vui lòng nâng cấp Äá» tiếp tục.",saveError:"Không thá» lưu bà i há»c: ",quotaTrial:"Äã dùng <1>{{currentCount}}/{{limit}}</1> lượt tạo Quiz",quotaUnlimited:"â
Bạn Äang dùng FullGame - Không giá»i hạn",placeholderEdit:"ð Chá»nh Sá»a Bà i Há»c",placeholderCreate:"â Tạo Bà i Há»c Má»i",titleLabel:"Tên bà i há»c",titleInputPlaceholder:"VD: Ãn táºp chương 1, Từ vá»±ng Unit 5...",btnEditTitleTooltip:"Sá»a tiêu Äá»",createQuestionTitle:"â Tạo Câu Há»i",questionListTitle:"ð Danh Sách Câu Há»i",questionNumber:"ð Câu {{num}}",blankSpace:"Khoảng trá»ng",answers:"Äáp án",btnEditQuestion:"Sá»a",btnDeleteQuestion:"Xóa",warningNoTitle:"Hãy nháºp tên bà i há»c trưá»c Äá» thêm câu há»i",btnAddQuestion:"Thêm Câu Há»i Má»i",maxQuestionsReached:"â
Äã Äạt tá»i Äa 10 câu há»i",btnCancel:"â Há»§y",btnSaving:"â³ Äang lưu...",btnSave:"ð¾ Lưu Bà i Há»c",editTitleDialog:"âï¸ Sá»a Tiêu Äá» Bà i Há»c",editTitleLabel:"Tiêu Äá» bà i há»c",btnDialogCancel:"Há»§y",btnDialogSave:"Lưu",confirmCancelTitle:"â ï¸ Xác Nháºn Há»§y",confirmCancelMsg:"Bạn có chắc chắn muá»n há»§y? Tất cả thay Äá»i sẽ bá» mất.",btnConfirmNo:"Không, Quay Lại",btnConfirmYes:"Có, Xác Nháºn Há»§y"},deleteDialog$3={title:"ðï¸ Xác Nháºn Xóa",message:"Bạn có chắc chắn muá»n xóa bà i há»c nà y? Hà nh Äá»ng nà y không thá» hoà n tác.",btnCancel:"Há»§y",btnDelete:"Xóa"},preview$3={errorLoad:"Không thá» tải bà i quiz",errorNotFound:"Không tìm thấy bà i quiz",btnGoBack:"Quay Lại",btnFullscreen:"Toà n Mà n Hình",btnExitFullscreen:"Thoát Toà n Mà n Hình",defaultTitle:"Bà i Quiz",btnPrev:"Câu Trưá»c",btnNext:"Câu Sau",questionStatus:"Câu {{current}} / {{total}}",instructionDragDrop:"ð¯ Kéo Äáp án hoặc nhãn và o Äúng vá» trà (hoặc nhấp ô trá»ng Äá» chá»n)",instructionFillIn:"âï¸ Gõ Äáp án và o các ô trá»ng trên hình",instructionMatching:"ð Kéo ná»i các ý tương ứng á» hai cá»t",instructionSorting:"âï¸ Kéo thả các khá»i Äá» sắp xếp Äúng thứ tá»±",instructionGrouping:"ðï¸ Kéo má»i thẻ và o Äúng nhóm cá»§a nó"}
513,customInstruction$1={label:"Sá»a câu yêu cầu",helper:"Äá» trá»ng sẽ dùng lại câu mặc Äá»nh"},share$9={errorLoad:"Không thá» tải bà i quiz. Vui lòng kiá»m tra lại link.",loading:"Äang tải bà i há»c...",errorNotFound:"Không tìm thấy bà i há»c. Vui lòng kiá»m tra lại link chia sẻ."},blankSpaceCanvas$1={uploadError:"Có lá»i xảy ra khi tải ảnh lên: ",requireImageWarning:"Vui lòng tải ảnh trưá»c",requireAnswerWarning:"Vui lòng nháºp Äáp án",requireImageLinkWarning:"Vui lòng nháºp link ảnh hoặc tải ảnh lên",requireMinBlanksWarning:"Vui lòng tạo Ãt nhất 1 Äáp án",requireAllAnswersWarning:"Vui lòng nháºp Äáp án cho tất cả khoảng trá»ng",title:"âï¸ Tạo Câu Há»i Kéo Thả Và o Hình",uploadingText:"â³ Äang nén và tải ảnh lên kho...",method2:"Dán Link ảnh trá»±c tiếp",guideLinkText:"ð¹ Hưá»ng dẫn lấy link ảnh",placeholderUrl:"https://example.com/image.jpg",imageLoadedText:"Ảnh Äã tải thà nh công",borderEnabled:"Thêm viá»n/thanh bên cho ảnh",borderDesc:"Hiá»n thá» viá»n trắng hoặc thanh bên khi báºt",borderTypeSimple:"Viá»n: viá»n trắng bo quanh ảnh",borderTypeSidebar:"Thanh bên: thanh trắng bên phải ảnh",sidebarWidthLabel:"Äá» rá»ng thanh bên",fillInMode:"âï¸ Chế Äá» Äiá»n từ",fillInDesc:"Ngưá»i dùng Äiá»n chữ thay vì kéo thả",fillInTextColor:"Mà u chữ:",btnAddBlank:"â Thêm Äáp án kéo thả",btnClearConnectors:"â Xóa ÄÆ°á»ng ná»i",tooltipClickToEdit:"Nháy Äá» nháºp Äáp án · Kéo Äá» di chuyá»n ô",tooltipUndo:"Hoà n tác (Ctrl+Z)",tooltipRedo:"Là m lại (Ctrl+Y)",nothingToUndo:"Không còn thao tác nà o Äá» hoà n tác",tooltipDragConnector:"Kéo Äá» tạo ÄÆ°á»ng ná»i",tooltipResize:"Kéo Äá» thay Äá»i kÃch thưá»c",clickToUpload:"Nhấn Äá» tải ảnh lên",uploadHint:"Hoặc kéo ảnh thả và o Äây, hoặc bấm Ctrl+V Äá» dán ảnh Äã Copy",dropImageHere:"Thả ảnh và o Äây",dropToReplace:"Thả Äá» thay ảnh ná»n",requireLoginToUpload:"Bạn cần ÄÄng nháºp Äá» tải ảnh lên.",notAnImage:"Ná»i dung vừa chá»n không phải ảnh.",pasteImageHint:"Mẹo: Ctrl+V Äá» dán thẳng ảnh Äã Copy (không cần link).",replaceImage:"Äá»i ảnh",orUseLink:"Hoặc dán link ảnh có sẵn",pickImageFirst:"Chá»n ảnh ná»n á» trên Äá» bắt Äầu Äặt các Äáp án.",emptyBlankHint:"Chưa có Äáp án",tooltipEditAnswer:"Sá»a Äáp án",tooltipDelete:"Xóa",editDialogTitle:"ð Nháºp Äáp Ãn {{id}}",editDialogInputLabel:"Äáp án Äúng",btnCancel:"Há»§y",btnSave:"Lưu",btnActionCancel:"Há»§y",btnActionSaving:"â³ Äang lưu...",btnActionUploading:"â³ Äang tải ảnh...",btnActionSave:"â
Lưu Câu Há»i",btnActionSaveDragDrop:"â
Lưu câu há»i Kéo thả nà y",btnActionSaveSorting:"â
Lưu câu há»i Sắp xếp thứ tá»± nà y",btnActionSaveMatching:"â
Lưu câu há»i Ná»i ý nà y",btnActionSaveGrouping:"â
Lưu câu há»i Phân loại nhóm nà y"},sortingEditor$1={title:"ð¢ Tạo Câu Há»i Sắp Xếp Thứ Tá»±",layoutText:"Chiá»u hiá»n thá»:",layoutHorizontal:"Ngang",layoutVertical:"Dá»c",guideText:"Thêm các thẻ và sắp xếp theo Äúng thứ tá»± (chiá»u hiá»n tại: {{layout}}). Há»c sinh sẽ phải sắp xếp lại Äúng thứ tá»± nà y.",btnAddItem:"â Thêm Thẻ",itemLabel:"Thẻ thứ {{index}}",placeholderItem:"Nháºp vÄn bản cho thẻ nà y",uploadingImage:"Äang tải ảnh lên...",deleteItem:"Xoá thẻ"},groupingEditor$1={title:"ðï¸ Tạo Câu Há»i Phân Loại Và o Nhóm",guideText:"Äặt tên cho từng nhóm rá»i thêm các thẻ THUá»C nhóm Äó. Lúc chÆ¡i, thẻ cá»§a má»i nhóm sẽ ÄÆ°á»£c trá»n chung và o má»t kho â há»c sinh kéo từng thẻ vá» Äúng rá».",placeholderGroupName:"Tên nhóm (vd: Äá»ng váºt)",placeholderItem:"Nháºp ná»i dung thẻ",btnAddItem:"Thêm thẻ",btnAddGroup:"â Thêm nhóm"},quizPreviewComponent$1={noQuestions:"Không có câu há»i",questionAlt:"Câu {{index}}",teacherView:"Chế Äá» xem cá»§a giáo viên",btnBackList:"Quay lại danh sách",btnCheck:"â Kiá»m tra",btnRetry:"ð Là m lại",btnPrev:"â Trưá»c",btnNext:"Sau â",btnFinish:"ð Hoà n thà nh",loadingImage:"Äang tải ảnh..."},answerSidebar$1={fontSmaller:"Thu nhá» chữ Äáp án",fontBigger:"Phóng to chữ Äáp án",title:"
513ð Các Äáp Ãn",btnFinish:"Hoà n thà nh",btnCheck:"Kiá»m Tra",btnRetry:"Là m Lại",btnPrev:"Câu Trưá»c",btnNext:"Câu Sau",questionStatus:"Câu {{current}}/{{total}}",lockedStatus:"(Äã khóa - xem kết quả)",allAnswersUsed:"Tất cả Äáp án Äã ÄÆ°á»£c sá» dụng"},studentPlayer$1={submitSuccess:"Bà i là m cá»§a bạn Äã ÄÆ°á»£c lưu thà nh công!",submitError:"Không thá» lưu bà i là m. Vui lòng thá» lại.",instruction:"Hãy kéo/chá»n các nhãn và o Äúng vá» trà trên ảnh",lockedWarning:"â ï¸ Bạn Äã ná»p bà i là m nà y. Không thá» là m lại trên cùng thiết bá».",completionTitle:"Hoà n Thà nh Bà i Há»c!",completionMessage:"Chúc mừng bạn Äã hoà n thà nh bà i há»c.",btnExit:"Thoát",nameDialogTitle:"ð Nháºp Tên Cá»§a Bạn",nameDialogDesc:"Vui lòng nháºp tên cá»§a bạn Äá» ná»p bà i là m nà y. Tên nà y sẽ ÄÆ°á»£c ghi lại cùng vá»i kết quả bà i là m cá»§a bạn.",nameInputLabel:"Tên cá»§a bạn",nameInputPlaceholder:"VD: Nguyá»
n VÄn A",nameError:"Vui lòng nháºp tên",scoreDisplay:"ð Äiá»m cá»§a bạn: {{score}} / {{max}}",btnSubmitting:"â³ Äang lưu...",btnSubmit:"â
Ná»p Bà i"},clickableMenu$1={inBlank:"Trong khoảng trá»ng {{ids}}",noAnswers:"Không có Äáp án nà o"},teacherSidebar$1={errorLoad:"Không thá» tải bà i ná»p",successDelete:"Äã xóa tất cả bà i ná»p",errorDelete:"Không thá» xóa bà i ná»p",successUnshare:"Äã dừng chia sẻ - HS không thá» và o link nữa",errorUnshare:"Không thá» dừng chia sẻ",successReshare:"Äã báºt lại chia sẻ - HS có thá» và o link lại",errorReshare:"Không thá» báºt lại chia sẻ",title:"ð Bà i Ná»p",colIndex:"STT",colName:"Tên",colScore:"Äiá»m",noSubmissions:"Chưa có bà i ná»p",totalLabel:"Tá»ng",unit:"bà i",avgLabel:"TB",btnRefresh:"Là m má»i",btnUnshare:"Dừng Chia Sẻ",btnReshare:"Báºt Lại Chia Sẻ",btnDeleteAll:"Xóa Tất Cả",confirmDeleteTitle:"â ï¸ Xác Nháºn Xóa",confirmActionTitle:"â¹ï¸ Xác Nháºn",confirmUnshare:"ð Dừng chia sẻ sẽ vô hiá»u hóa link. HS không thá» và o là m bà i nữa. Bạn có chắc chắn?",confirmReshare:"ð Báºt lại chia sẻ sẽ tạo lại link. HS có thá» và o là m bà i lại. Tiếp tục?",confirmDelete:"ðï¸ Bạn sẽ xóa tất cả bà i ná»p ({{count}} bà i). Hà nh Äá»ng nà y không thá» hoà n tác. Tiếp tục?"},viQuizGame={page:page$n,sidebar:sidebar$c,myQuizzes:myQuizzes$6,createQuiz:createQuiz$1,deleteDialog:deleteDialog$3,preview:preview$3,customInstruction:customInstruction$1,share:share$9,blankSpaceCanvas:blankSpaceCanvas$1,sortingEditor:sortingEditor$1,groupingEditor:groupingEditor$1,quizPreviewComponent:quizPreviewComponent$1,answerSidebar:answerSidebar$1,studentPlayer:studentPlayer$1,clickableMenu:clickableMenu$1,teacherSidebar:teacherSidebar$1},title$8="ð Hoạt Äá»ng cá»§a tôi",subtitle$2="{{count}} ná»i dung Äã tạo",searchHint$2="Tìm kiếm theo tên...",tabs$6={all:"Tất cả"},error$8="Không thá» tải dữ liá»u. Vui lòng thá» lại.",empty$6={noResults:"Không tìm thấy kết quả",noContent:"Chưa có ná»i dung nà o",tryAnother:"Thá» từ khóa khác",startCreating:"Bắt Äầu tạo ná»i dung từ các công cụ trên Dashboard",backToDashboard:"Vá» Dashboard"},actions$7={view:"Xem",edit:"Sá»a",assign:"Giao",assignTitle:"Giao bà i táºp",teacherShare:"Chia sẻ GV"},features$4={"interactive-video":"Video Tương Tác","panorama-museum":"Bảo Tà ng Panorama","quiz-game":"Kéo Thả - Ná»i Ã","hand-slash-quiz":"Quiz Chém Hoa Quả","flip-puzzle-game":"Trò ChÆ¡i Láºt Mảnh Ghép","crossword-puzzle":"à Chữ","tug-of-war-game":"Kéo Co Kiến Thức","paced-quiz":"Trắc Nghiá»m Theo Nhá»p Äá»","interactive-image":"Ảnh Tương Tác","head-tilt-quiz":"Quiz Nghiêng Äầu","pose-quiz":"Thá» dục ABC","versus-game":"Game Äá»i Kháng","wheel-quiz":"Vòng Quay - Äua Vá»t","turn-based-game":"Game Theo Lượt",flashcard:"Thẻ Láºt (Flashcard)","mind-map":"SÆ¡ Äá» Tư Duy",minesweeper:"Dò Mìn","flying-words-game":"Từ Ngữ Biết Bay"},itemDefaults$2={"interactive-video":"Bà i há»c không tên","panorama-museum":"Phòng không tên","quiz-game":"Quiz không tên","hand-slash-quiz":"Bà i há»c không tên","flip-puzzle-game":"Game không tên","crossword-puzzle":"à chữ không tên","tug-of-war-game":"Trò chÆ¡i không tên","paced-quiz":"Quiz không tên","interactive-image":"Ảnh không tên","head-tilt-quiz":"Bà i há»c không tên","pose-quiz":"Bà i há»c không tên","versus-game":"Game không tên","wheel-quiz":"Vòng quay không tên","turn-based-game":"Game không tên"}
513,publish$2={title:"Thư viá»n cá»ng Äá»ng",submitToLibrary:"ÄÆ°a lên Thư viá»n cá»ng Äá»ng",saveForMeOnly:"Chá» lưu cho tôi",schoolLevel:"Cấp há»c *",subject:"Môn há»c *",grade:"Khá»i lá»p *",uploadLimitReached:"Bạn Äã Äạt giá»i hạn Äóng góp. Nâng cấp Pro Äá» chia sẻ thêm.",upgradeProTooltip:"Nâng cấp Pro Äá» Äóng góp thêm cho cá»ng Äá»ng",copyrightLabel:"Tôi xác nháºn ná»i dung nà y do tôi tá»± soạn hoặc tôi có quyá»n chia sẻ, không vi phạm bản quyá»n cá»§a bên thứ ba.",copyrightRequiredError:"Vui lòng xác nháºn bản quyá»n ná»i dung trưá»c khi ÄÄng lên thư viá»n",levels:{"mam-non":"Mầm non","tieu-hoc":"Tiá»u há»c",thcs:"THCS",thpt:"THPT",khac:"Khác"},subjects:{"phat-trien-the-chat":"Phát triá»n thá» chất","phat-trien-nhan-thuc":"Phát triá»n nháºn thức","phat-trien-ngon-ngu":"Phát triá»n ngôn ngữ","phat-trien-tinh-cam":"Phát triá»n tình cảm & xã há»i","phat-trien-tham-my":"Phát triá»n thẩm mỹ","tieng-viet":"Tiếng Viá»t",toan:"Toán","ngoai-ngu-1":"Ngoại ngữ 1","ngoai-ngu-2":"Ngoại ngữ 2","giao-duc-loi-song":"Giáo dục lá»i sá»ng","dao-duc":"Äạo Äức","tu-nhien-xa-hoi":"Tá»± nhiên và Xã há»i","lich-su-dia-ly":"Lá»ch sá» và Äá»a lý","khoa-hoc":"Khoa há»c","tin-
513hoc-cong-nghe":"Tin há»c và Công nghá»","giao-duc-the-chat":"Giáo dục thá» chất","nghe-thuat":"Nghá» thuáºt","tieng-dan-toc":"Tiếng dân tá»c thiá»u sá»","ngu-van":"Ngữ vÄn",gdcd:"Giáo dục công dân","khoa-hoc-tu-nhien":"Khoa há»c tá»± nhiên","cong-nghe":"Công nghá»","tin-hoc":"Tin há»c","gdqp-an":"Giáo dục quá»c phòng và an ninh","gd-kinh-te-phap-luat":"Giáo dục kinh tế và pháp luáºt","lich-su":"Lá»ch sá»","dia-ly":"Äá»a lý","vat-ly":"Váºt lý","hoa-hoc":"Hóa há»c","sinh-hoc":"Sinh há»c",khac:"Khác"},grades:{1:"Lá»p 1",2:"Lá»p 2",3:"Lá»p 3",4:"Lá»p 4",5:"Lá»p 5",6:"Lá»p 6",7:"Lá»p 7",8:"Lá»p 8",9:"Lá»p 9",10:"Lá»p 10",11:"Lá»p 11",12:"Lá»p 12","nha-tre":"Nhà trẻ","mau-giao-3-4":"Mẫu giáo 3-4 tuá»i","mau-giao-4-5":"Mẫu giáo 4-5 tuá»i","mau-giao-5-6":"Mẫu giáo 5-6 tuá»i",khac:"Khác"}},community$2={title:"Thư viá»n cá»ng Äá»ng",description:"Khám phá và lưu bà i há»c từ cá»ng Äá»ng giáo viên",tabs:{explore:"Khám phá",mine:"Bà i cá»§a tôi"},filters:{level:"Cấp há»c",subject:"Môn há»c",grade:"Khá»i lá»p",gameType:"Loại game",allSubjects:"Tất cả môn",allGrades:"Tất cả lá»p",allTypes:"Tất cả loại",searchPlaceholder:"Tìm theo tên bà i...",searchBtn:"Tìm kiếm",searchHint:"Nhấn Tìm kiếm Äá» xem kết quả",clearFilters:"Xoá lá»c ({{count}})"},explore:{selectBase:"Chá»n cấp há»c và môn há»c Äá» tìm bà i",selectBaseDesc:"Lá»c theo Mầm non, Tiá»u há»c, THCS hoặc THPT",selectSubject:"Tiếp theo, chá»n môn há»c",selectSubjectDesc:"Sau Äó nhấn Tìm kiếm Äá» xem kết quả",noResults:"Chưa có bà i há»c nà o",noResultsDesc:"Hãy thá» thay Äá»i bá» lá»c"},mine:{empty:"Bạn chưa ÄÄng bà i nà o",emptyDesc:'Khi tạo bà i, chá»n "ÄÆ°a lên Thư viá»n cá»ng Äá»ng" Äá» Äóng góp',removeConfirm:'Gỡ bà i "{{title}}" khá»i Thư viá»n cá»ng Äá»ng?',removeTooltip:"Gỡ khá»i Thư viá»n cá»ng Äá»ng"},card:{questions:"{{count}} câu",by:"Bá»i {{author}}",anonymous:"Ẩn danh",reportTooltip:"Báo cáo bà i há»c không phù hợp",viewAndSaveTooltip:"Xem trưá»c và lưu vá» tà i khoản",btnSave:"Xem & Lưu vá»"},detail:{questions:"câu há»i",postedBy:"ÄÆ°á»£c ÄÄng bá»i",loadError:"Không thá» tải chi tiết bà i há»c.",saveSuccess:"Äã lưu vá» tà i khoản!",saveSuccessDesc:"Bà i há»c Äã ÄÆ°á»£c thêm và o danh sách cá»§a bạn.",previewTitle:"Xem trưá»c câu há»i:",moreQuestions:"... và {{count}} câu há»i khác",alreadyClonedHint:"Bạn Äã từng lấy bà i nà y vá» rá»i. Vẫn muá»n lấy thêm?",btnCancel:"Thôi",btnCloneAgain:"Vẫn lấy",btnClone:"Lưu vá» tà i khoản",btnGoToTool:"Äến trang {{name}}",generalError:"Có lá»i xảy ra. Vui lòng thá» lại."}},report$5={title:"Báo cáo bà i há»c",desc:"Vui lòng cho chúng tôi biết lý do báo cáo bà i há»c nà y.",success:"â Cảm Æ¡n! Báo cáo cá»§a bạn Äã ÄÆ°á»£c ghi nháºn.",alreadyReported:"Bạn Äã báo cáo bà i há»c nà y trưá»c Äó.",submitError:"Có lá»i xảy ra. Vui lòng thá» lại.",noteLabel:"Ghi chú thêm (tuỳ chá»n)",btnSubmit:"Gá»i báo cáo",reasons:{inappropriate:"Ná»i dung không phù hợp",spam:"Spam / trùng lặp",copyright:"Vi phạm bản quyá»n",other:"Khác"}},viLibrary={title:title$8,subtitle:subtitle$2,searchHint:searchHint$2,tabs:tabs$6,error:error$8,empty:empty$6,actions:actions$7,features:features$4,itemDefaults:itemDefaults$2,publish:publish$2,community:community$2,report:report$5},page$m={title:"ð¤ Robot Äá»ng Hà nh",loginToAccess:"Vui lòng ÄÄng nháºp Äá» sá» dụng tÃnh nÄng Robot",sidebar:{myRobots:"Robot cá»§a tôi",createNew:"Tạo Robot má»i",changeApiKey:"Äá»i API Key"},help:{title:"Hưá»ng Dẫn Robot Äá»ng Hà nh",description:"Tìm hiá»u cách tạo và sá» dụng Robot Äá»ng Hà nh AI"}},list$7={loading:"Äang tải danh sách robot...",errorLoad:"Lá»i khi tải danh sách robot: ",apiWarning:"Do hạn chế cá»§a bên cung cấp API, các Robot cá»§a bạn bá» giá»i hạn 20 tin nhắn/ngà y. Hãy cân nhắc khi sá» dụng",empty:{title:"Chưa có robot nà o",subtitle:"Hãy tạo robot Äầu tiên cá»§a bạn Äá» bắt Äầu!",btnCreate:"â Tạo robot Äầu tiên"},header:"ð¤ Robot cá»§a tôi ({{count}})",pinBanner:{count:"({{pinned}}/{{limit}} Äã ghim)",expired:"â ï¸ Gói Äã hết hạn!",renew:"Gia hạn"},card:{renewToOpen:"ð Gia hạn Äá» má» robot nà y",public:"Công khai",private:"Riêng tư",tooltipChat:"Chat vá»i robot",tooltipShare:"Chia sẻ link",tooltipEdit:"Chá»nh sá»a",tooltipDelete:"Xóa",shareSuccess:"Link chia sẻ Äã ÄÆ°á»£c sao chép"},delete:{title:"â ï¸ Xác Nháºn Xóa Robot",confirm:"Bạn chắc chắn muá»n xóa robot nà y? Hà nh Äá»ng nà y không thá» hoà n tác.",btnCancel:"Không, Há»§y",btnConfirm:"Có, Xóa Robot",success:"Robot Äã ÄÆ°á»£c xóa thà nh công",error:"Lá»i khi xóa robot"}},form$w={editTitle:"âï¸ Chá»nh sá»a Robot",createTitle:"â Tạo Robot má»i",sectionBasic:"ð Thông tin cÆ¡ bản",nameLabel:"Tên Robot *",namePlaceholder:"và dụ: Cô Hoa, Thầy Minh",topicLabel:"Chá»§ Äá» *",topicPlaceholder:"và dụ: Há»c là m thÆ¡, Luyá»n viết",sectionPersonality:"ð¨ TÃnh cách Robot",speechLabel:"Robot xưng là *",addressLabel:"Gá»i há»c sinh là *",styleLabel:"Phong cách nói chuyá»n *",voiceLabel:"Giá»ng nói Tiếng Viá»t (Cần sá» dụng trình duyá»t Microsoft Edge và máy tÃnh có bá» giá»ng Tiếng Viá»t)",voiceHint:"Thông thưá»ng các máy tÃnh không Äá»§ Äiá»u kiá»n giá»ng nói!",voicePlaceholder:"-- Chá»n giá»ng nói --",voiceError:"Máy tÃnh không có sẵn gói giá»ng nói Tiếng Viá»t.",sectionAvatar:"ð¼ï¸ Hình Äại diá»n Robot",avatarLabel:"Chá»n hình Äại diá»n *",sectionTraining:"ð Ná»i dung Training",contentLabel:"Ná»i dung *",contentHint:'Nháºp ná»i dung Äá» "train" cho robot. Có thá» thêm link vá»i Äá»nh dạng: https://...',contentPlaceholder:`Và dụ: 514 5151. Tục ngữ: 'Có công mà i có ngà y nên' 516à nghÄ©a: Những ngưá»i có công sức sẽ Äạt ÄÆ°á»£c thà nh công 517 5182. Thúy Kiá»u - Truyá»n Kiá»u, link: https://example.com/thuy-kieu`,sectionApi:"ð Cấu hình API Gemini",apiConfigured:"API key Äã ÄÆ°á»£c cấu hình",apiNotConfigured:"Chưa cấu hình API key",btnChangeApi:"Thay Äá»i API",btnConfigApi:"Cấu hình API",btnPreview:"ðï¸ Xem trưá»c",btnCancel:"Há»§y",btnSaving:"â³ Äang lưu...",btnUpdate:"ð¾ Cáºp nháºt",btnCreate:"â Tạo Robot",errorEmptyName:"Vui lòng nháºp tên robot",errorEmptyContent:"Vui lòng nháºp ná»i dung Äá» training robot",errorNoApi:"Vui lòng cấu hình API Gemini",errorLimit:"Lá»i kiá»m tra giá»i hạn",successCreate:"Robot Äã ÄÆ°á»£c tạo thà nh công",successU
518pdate:"Robot Äã ÄÆ°á»£c cáºp nháºt thà nh công",errorSave:"Lá»i khi lưu robot",avatarNames:{robot:"Robot","teacher-female":"Cô giáo","teacher-male":"Thầy giáo","student-male":"Há»c sinh nam","student-female":"Há»c sinh nữ"},styles:{"gần gÅ©i":"ð Gần gÅ©i","chuyên nghiá»p":"ð¼ Chuyên nghiá»p","nghiêm túc":"ð Nghiêm túc","hà i hưá»c":"ð Hà i hưá»c"},speechOptions:{cô:"Cô",thầy:"Thầy",tôi:"Tôi"},studentTerms:{em:"Em",con:"Con",bạn:"Bạn"}},chat$1={fullscreenError:"Không thá» báºt chế Äá» toà n mà n hình",exitFullscreenError:"Không thá» thoát chế Äá» toà n mà n hình",responseError:"Lá»i khi nháºn phản há»i từ robot",noSpeechSupport:"Trình duyá»t không há» trợ nháºp giá»ng nói",voiceInputError:"Không nháºn ÄÆ°á»£c giá»ng nói, vui lòng thá» lại",btnFullscreen:"Toà n mà n hình",btnExitFullscreen:"Thoát toà n mà n hình",btnBack:"Quay lại",btnClose:"Äóng",welcome:"Xin chà o, {{term}}!",intro:"Tôi là {{speech}} {{name}}.",startTopic:'Hãy bắt Äầu cuá»c há»i thoại vá» "{{topic}}"',listening:"ð Äang nghe giá»ng nói...",inputPlaceholder:"Nháºp câu há»i hoặc nháºn xét...",tooltipVoice:"Nháºp bằng giá»ng nói",tooltipRecording:"Äang nghe... (nhấn Äá» dừng)",recordingStatus:"ð´ Äang nghe...",friendlyMessages:{API_KEY_MISSING:"ð Bạn chưa nháºp API key. Hãy và o Äá»i API key Äá» thêm key từ Google AI Studio nhé!",API_KEY_INVALID:"ð API key không Äúng rá»i! Có thá» bạn nháºp sai hoặc key Äã bá» thu há»i. Hãy kiá»m tra lại trong Äá»i API key nhé.",API_QUOTA_EXCEEDED:"â³ API key cá»§a bạn Äã dùng hết lượt miá»
n phà trong hôm nay. Bạn hãy thá» lại và o ngà y mai hoặc dùng key khác nhé!",API_OVERLOAD:"ð
Server AI Äang báºn quá, chưa trả lá»i ÄÆ°á»£c. Bạn hãy thá» gá»i lại sau và i giây nhé!",NETWORK_ERROR:"ð¡ Mất kết ná»i mạng rá»i! Bạn kiá»m tra lại wifi/mạng rá»i thá» lại nhé.",DEFAULT:"ð Có lá»i xảy ra, mình chưa trả lá»i ÄÆ°á»£c. Bạn thá» lại sau nhé!",API_ALL_MODELS_EXHAUSTED:"ð´ Tất cả mô hình AI Äã dùng hết lượt miá»
n phà hôm nay rá»i. Bạn hãy quay lại và o ngà y mai nhé!"}},api$1={title:"Cấu hình API Gemini",label:"API Key Gemini *",placeholder:"Nháºp API key cá»§a bạn",errorEmpty:"API key không ÄÆ°á»£c Äá» trá»ng",getApiKey:"Lấy API key từ Google AI Studio",guideTitle:"Hưá»ng dẫn sá» dụng API Gemini",step1:"Truy cáºp Google AI Studio",step2:"ÄÄng nháºp bằng Google account",step3:'Nhấn "Create API key"',step4:"Sao chép API key và dán và o trưá»ng trên",videoGuide:"Video hưá»ng dẫn",freeApiKey:"Lấy API key miá»
n phÃ",btnCancel:"Há»§y",btnSave:"Lưu"},preview$2={title:"ðï¸ Xem trưá»c Robot: {{name}}",btnBack:"â Quay lại",labelTopic:"Chá»§ Äá»:",labelStyle:"Phong cách:",labelCalling:"Xưng gá»i:",labelContent:"Ná»i dung:",placeholderChat:"Thá» chat vá»i robot...",welcomeHint:'Hãy thá» há»i tôi vá» "{{topic}}" Äá» xem robot hoạt Äá»ng nhé.'},viCompanion={page:page$m,list:list$7,form:form$w,chat:chat$1,api:api$1,preview:preview$2},page$l={title:"â Quiz Chém Hoa Quả",upgradeLabel:"Nâng Cấp Lẻ",helpLabel:"Hưá»ng dẫn sá» dụng",helpTitle:"Hưá»ng Dẫn Quiz Chém Hoa Quả",helpDescription:"Tìm hiá»u cách tạo bà i Quiz Chém Hoa Quả Äá» há»c sinh chÆ¡i và há»c táºp",sidebar:{myLessons:"Bà i há»c cá»§a tôi",createNew:"Tạo bà i má»i"}},list$6={title:"ð Bà i Há»c Cá»§a Tôi",subtitle:"Quản lý các bà i Quiz Chém Hoa Quả cá»§a bạn",expired:"â ï¸ Gói Äã hết hạn!",renew:"Gia hạn",empty:"Bạn chưa có bà i há»c nà o",createFirst:"â Tạo bà i Äầu tiên",demo:{title:"Chém Hoa Quả - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"},lockedHint:"ð Gia hạn Äá» má» bà i nà y",stats:"{{count}} câu há»i",updated:"Cáºp nháºt: {{date}}",btnPlay:"ChÆ¡i",btnEdit:"Sá»a",btnAssign:"Giao",btnDelete:"Xóa",tooltipPlay:"ChÆ¡i ngay",tooltipEdit:"Chá»nh sá»a bà i",tooltipAssign:"Giao bà i cho há»c sinh",tooltipDelete:"Xóa bà i",deleteConfirmTitle:"ðï¸ Xác Nháºn Xóa",deleteConfirmText:"Bạn có chắc chắn muá»n xóa bà i há»c nà y? Hà nh Äá»ng nà y không thá» hoà n tác.",deleteSuccess:"Xóa bà i há»c thà nh công",deleteError:"Không thá» xóa bà i há»c",loadError:"Không thá» tải danh sách bà i há»c",speeds:{fast:"Nhanh",medium:"Trung bình",slow:"Cháºm"},freeLessons:"Bạn còn {{remaining}}/{{limit}} bà i há»c miá»
n phÃ",quotaExceeded:"Bạn Äã hết lượt tạo miá»
n phÃ. Vui lòng nâng cấp tà i khoản.",assignSuccess:"Äã tạo bà i táºp vá»i mã: {{code}}",btnCancel:"Há»§y"},form$v={titleCreate:"â Tạo bà i há»c má»i",titleEdit:"âï¸ Chá»nh sá»a bà i há»c",lessonName:"Tên bà i há»c",speedTitle:"
518ð Tá»c Äá» tung hoa quả/ná»i bong bóng",speedFast:"ð Nhanh",speedMedium:"â¡ Trung bình",speedSlow:"ð¢ Cháºm",useBackground:"ð¼ï¸ Sá» dụng hình ná»n (ẩn camera)",noCamera:"ð· Dùng camera (chém bằng tay trưá»c camera)",questionsTitle:"Câu há»i ({{current}}/{{max}})",questionNum:"Câu {{num}}",questionPlaceholder:"Nháºp câu há»i...",answerColors:{green:"Xanh lá",red:"Äá»",yellow:"Và ng",purple:"TÃm"},answerLabel:"Äáp án (tick chá»n Äáp án Äúng):",btnAddQuestion:"Thêm câu há»i",btnSelectFromBank:"ðï¸ Chá»n từ Kho",btnCancel:"Há»§y",btnSave:"Lưu bà i há»c",saving:"Äang lưu...",errorTitleRequired:"Vui lòng nháºp tên bà i há»c",errorMinQuestions:"Phải có Ãt nhất 1 câu há»i",errorQuestionEmpty:"Câu há»i {{num}} không ÄÆ°á»£c Äá» trá»ng",errorCorrectRequired:"Câu há»i {{num}} phải có Äáp án Äúng",errorAnswerEmpty:"Câu há»i {{num}} có Äáp án bá» trá»ng",errorMaxQuestions:"Chá» ÄÆ°á»£c tá»i Äa {{max}} câu há»i",loadError:"Không thá» tải bà i há»c",bankPickerTitle:"Chá»n câu há»i cho Hand Slash Quiz",bankValidation:"{{count}} câu há»i không phù hợp vá»i Hand Slash Quiz (yêu cầu Äúng 4 Äáp án):",bankAddSuccess:"â
Äã thêm {{count}} câu há»i từ Kho câu há»i",bankLimitError:"Không thá» thêm {{count}} câu. Tá»i Äa {{max}} câu, hiá»n có {{current}} câu.",addFromLesson:"ð Từ bà i có sẵn",selectFromBankOrAI:"ðï¸ Chá»n từ Kho hoặc AI",manualEntry:"âï¸ Nháºp thá»§ công",bankAddMixedSuccess:"Äã thêm {{count}} câu. Bá» qua {{skipped}} câu không tương thÃch.",errorNoQuestionsCompatible:"Không có câu nà o phù hợp vá»i Hand Slash (cần Ãt nhất 2 Äáp án)."},game$5={score:"Äiá»m",time:"Thá»i gian",gameOver:"KẾT THÃC!",finalScore:"Äiá»m cá»§a bạn",btnAgain:"ChÆ¡i lại",btnExit:"Thoát",totalQuestions:"Tá»ng cá»ng {{count}} câu",wrongHint:"Chém sai rá»i!",correctHint:"CHÃNH XÃC!",correctFeedback:"TUYá»T Vá»I!!",loading:"Äang tải camera...",noCameraMode:"Chế Äá» không camera",paused:"Äang tạm dừng",btnResume:"Tiếp tục",completed:"Hoà n thà nh!",questionNum:"Câu {{num}}",seconds:"giây",minimize:"Thu nhá»",fullscreen:"Toà n mà n hình",answeredCount:"Bạn Äã trả lá»i {{count}} câu há»i",lessonBy:"Bà i há»c cá»§a {{name}}",linkExpired:"Link chia sẻ có thá» Äã bá» xóa hoặc không còn tá»n tại",loadingHandTracking:"Äang khá»i Äá»ng nháºn diá»n bà n tay...",errorWebGL:"Trình duyá»t không há» trợ WebGL. Vui lòng thá» tắt bá»t tab hoặc dùng trình duyá»t Chrome.",errorGeneric:"Không thá» khá»i tạo nháºn diá»n bà n tay. Vui lòng thá» lại.",errorHint:'Bạn có thá» chuyá»n sang chế Äá» "Không dùng camera" (chém bằng chuá»t/cảm ứng) Äá» tiếp tục chÆ¡i.',copyPreparing:"Äang chuẩn bá»...",copiedSuccess:"â Äã copy!",copyAnalysis:"Copy sang công cụ phân tÃch"},instructions$5={title:"Hưá»ng dẫn chÆ¡i",step1Title:"1. Cho phép truy cáºp camera",step1Desc:'Khi trình duyá»t há»i, hãy bấm "Cho phép" Äá» game nháºn diá»n bà n tay.',step2Title:"2. GiÆ¡ tay lên trưá»c mà n hình",step2Desc:"Dùng ngón trá» chém nhanh qua Äáp án Äúng (chế Äá» Hoa Quả), hoặc chụm ngón cái + ngón trá» và o bong bóng Äúng (chế Äá» Bong Bóng).",step3Title:"3. Trả lá»i nhanh Äá» ghi Äiá»m cao",step3Desc:"Má»i câu có giá»i hạn thá»i gian. Trả lá»i Äúng sá»m = Äiá»m cao hÆ¡n. Sai bá» trừ Äiá»m.",tip:"ð¡ Mẹo: Äứng cách mà n hình khoảng 50â80 cm, Äảm bảo ánh sáng Äá»§ Äá» camera nháºn diá»n tá»t.",btnFullscreen:"Toà n mà n hình",btnReady:"Bắt Äầu!"},demo$d={title:"Quiz Chém Hoa Quả Demo",subtitle:"ChÆ¡i ngay vá»i {{count}} câu há»i mẫu!",instructions:"Hưá»ng dẫn chÆ¡i:",step1:"1ï¸â£ Cho phép truy cáºp camera khi ÄÆ°á»£c yêu cầu",step2:'2ï¸â£ Dùng ngón trá» Äá» "chém" các Äáp án bay lên',step3:"3ï¸â£ Chá»n Äáp án Äúng Äá» ÄÆ°á»£c cá»ng Äiá»m",step4:"4ï¸â£ Tránh chạm và o Äáp án sai!",note:"â ï¸ Lưu ý: Bạn cần có webcam/camera Äá» chÆ¡i game nà y",btnStart:"ð® Bắt Äầu chÆ¡i ngay",version:"Phiên bản Demo - {{count}} câu há»i mẫu"},viHandSlash={page:page$l,list:list$6,form:form$v,game:game$5,instructions:instructions$5,demo:demo$d},pageTitle$a="ð§© Láºt Mảnh Ghép",myPuzzles$1="Ảnh Äá» cá»§a tôi",createNew$c="Tạo ảnh Äá» má»i",helpTitle$1="Hưá»ng Dẫn Láºt Mảnh Ghép",helpDesc$1="Tìm hiá»u cách tạo trò chÆ¡i Láºt Mảnh Ghép Äá» há»c sinh chÆ¡i và há»c táºp",loadingPuzzles$1="â³ Äang tải danh sách ảnh Äá»...",errorLoading$9="â Lá»i khi tải danh sách ảnh Äá»",confirmDelete$4="Bạn có chắc muá»n xóa ảnh Äá» nà y?",deleteSuccess$7="â
Äã xóa ảnh Äá»",deleteError$4="â Lá»i khi xóa ảnh Äá»",emptyPuzzles$1="ð Chưa có ảnh Äá» nà o",createFirst$4="â Tạo Ảnh Äá» Äầu tiên",demo$c={title:"Láºt Mảnh Ghép - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"},cellsCount$1="{{count}} ô",play$6="ChÆ¡i thá»",edit$4="Chá»nh sá»a",assign$9="Giao bà i",upgradeToUnlock$4="ð Gia hạn Äá» má» bà i nà y",packageExpired$7="â ï¸ Gói Äã hết hạn!",extendSubscription$7="Gia hạn 30k/nÄm",editFormTitle$4="Chá»nh sá»a Ảnh Äá»",createFormTitle$4="Tạo Ảnh Äá» má»i",usageCount$4="ð Äã dùng <strong>{{current}}/{{limit}}</strong> lượt tạo Ảnh Äá»",unlimitedAccess$1="â
Bạn Äang dùng chế Äá» {{mode}} - Không giá»i hạn",puzzleTitleLabel$1="Tiêu ÄỠẢnh Äá»:",titlePlaceholder$7="Nháºp tiêu Äá»...",answerNameLabel$1="Tên ảnh (Äáp án há»c sinh cần Äoán):",answerPlaceholder$1="VD: Tháp Eiffel, Mặt trá»i...",imageSourceTitle$1="ð¸ Nguá»n ảnh",uploadImageRadio$1="Tải ảnh lên",useUrlRadio$1="Dùng link ảnh",compressingAndUploading$1="â³ Äang nén và tải ảnh lên...",urlPlaceholder$1="Nháºp URL ảnh (VD: https://example.com/image.jpg)",useButton$1="Sá» dụng",uploadSuccess$1="â
Ảnh Äã ÄÆ°á»£c tải lên",pieceColorLabel$1="ð¨ Mà u mảnh ghép",colorBlue$1="Xanh dương",colorGreen$1="Xanh lá",colorPurple$1="TÃm",colorGradient$1="Gradient",colorRandom$1="Ngẫu nhiên",gridConfigTitle$1="ð¢ Cấu hình lưá»i",gridSizeLabel$1="KÃch thưá»c lưá»i:",gridSizeOption$1="{{rows}}x{{cols}} ({{count}} ô)",cellSizeModeLabel$1="Chế Äá» kÃch thưá»c ô:",equalSizeMode$1="Bằng nhau",randomSizeMode$1="Ngẫu nhiên (như ảnh Äá» tháºt)",timeLimitLabel$1="Giá»i hạn thá»i gian má»i câu (giây, 0 = không giá»i hạn):",questionsCountTitle$1="â Câu há»i ({{count}}/{{total}})",clearAllButton$1="ðï¸ Xóa tất cả",pickFromBankButton$1="ðï¸ Chá»n từ Kho hoặc AI",pickFromLessonButton$1="Từ bà i có sẵn",lessonPickerTitle$4="Chá»n bà i Äá» lấy câu há»i",manualInputButton$1="âï¸ Nháºp thá»§ công",enoughQuestions$1="â
Äã Äá»§ {{total}} câu há»i",questionsListHeader$1="Danh sách câu há»i ({{count}}/{{total}})",answersCount$4="{{count}} Äáp án",editQuestionTitle$1="Sá»a câu há»i nà y",deleteQuestionTitle$1="Xóa câu há»i nà y",noQuestions$1="ð Chưa có câu há»i nà o",noQuestionsHint$1="Chá»n từ Kho hoặc AI, hoặc Nháºp thá»§ công Äá» bắt Äầu",saving$7="ð¾ Äang lưu...",savePuzzle$1="ð¾ Lưu Ảnh Äá»",cancelPuzzle$1="Há»§y",toastUploadSuccess$1="â
Tải ảnh lên thà nh công!",toastUploadError$1="â Lá»i khi tải ảnh lên: ",toastUrlWarning$1="â ï¸ Vui lòng nháºp URL ảnh",toastUrlSuccess$1="â
Äã sá» dụng link ảnh!",toastUrlError$1="â URL không hợp lá»",toastRemainingWarning$1="â ï¸ Chá» còn {{remaining}} ô trá»ng. Bạn Äang chá»n {{selected}} câu há»i.",toastQuestionsAdded$1="â
Äã thêm {{count}} câu há»i ({{current}}/{{total}})",toastQuestionsTrimmed$1="â ï¸ Lưá»i má»i chá» còn {{total}} ô â Äã bá» {{dropped}} câu cuá»i.",toastQuestionsRoomLeft$1="â¹ï¸ Lưá»i má»i có {{total}} ô â cần thêm {{remaining}} câu nữa.",toastQuestionUpdated$1="â
Äã cáºp nháºt câu há»i",toastQuestionDeleted$1="ðï¸ Äã xóa câu há»i {{index}}",confirmClearAll$1="Xóa tất cả câu há»i?",toastClearAll$1="ðï¸ Äã xóa tất cả câu há»i",errorTitleRequired$4="â Vui lòng nháºp tiêu ÄỠảnh Äá»",errorImageRequired$1="â Vui lòng tải ảnh lên",errorAnswerRequired$1="â Vui lòng nháºp tên ảnh (Äáp án)",errorQuestionsCount$1="â Vui lòng chá»n {{total}} câu há»i",toastUpdateSuccess$4="â
Äã cáºp nháºt ảnh Äá»!",toastCreateSuccess$4="â
Äã tạo ảnh Äá» má»i!",toastLimitReached$4="â ï¸ Bạn Äã dùng hết 8 lượt Ảnh Äá» miá»
n phÃ. Vui lòng nâng cấp Äá» tiếp tục.",toastSaveError$4="â Lá»i khi lưu ảnh Äá»: ",player$h={back:"â Quay lại",revealAnswer:"ð Giải mã tên ảnh",exitFullscreen:"ð Thu nhá»",fullscreen:"ðµ Toà n mà n hình",progressText:"{{revealed}}/{{total}} ô ({{percentage}}%)",questionHeader:"â Câu há»i - à sá» {{number}}",questionImageAlt:"Hình câu há»i",answerImageAlt:"Äáp án {{letter}}",cancel:"â Há»§y",submitAnswer:"â
Trả lá»i",confirmRevealTitle:"ð MỠảnh",confirmRevealText:"Bạn có chắc chắn muá»n mỠảnh ra không?",no:"â Không",yes:"â
Có, mỠảnh",victoryTitle:"ð Tên ảnh:",toastCorrect:"â
ChÃnh xác! à Äã ÄÆ°á»£c má»",toastIncorrect:"â Sai rá»i! Hãy thá» lại"}
518,decode$1={title:"ð Giải mã tên ảnh",readyToGuess:"Bạn Äã sẵn sà ng Äoán tên bức ảnh?",guessPlaceholder:"Nháºp tên ảnh...",confirm:"â
Xác nháºn"},share$8={loading:"â³ Äang tải ảnh Äá»...",error:"â Lá»i",notFound:"Không tìm thấy ảnh Äá»",backHome:"â Vá» trang chá»§",footerText:"ð§© Tạo ảnh Äá» cá»§a riêng bạn tại",brand:"Giáo Viên Äá»i Má»i"},victory$1={congrats:"ð Chúc mừng!",completedMsg:"Bạn Äã hoà n thà nh!",imageNameLabel:"Tên ảnh:",finishButton:"⨠Hoà n thà nh"},canvas$1={loadingImage:"â³ Äang tải ảnh...",puzzleImageAlt:"Ảnh Äá»"},viFlipPuzzle={pageTitle:pageTitle$a,myPuzzles:myPuzzles$1,createNew:createNew$c,helpTitle:helpTitle$1,helpDesc:helpDesc$1,loadingPuzzles:loadingPuzzles$1,errorLoading:errorLoading$9,confirmDelete:confirmDelete$4,deleteSuccess:deleteSuccess$7,deleteError:deleteError$4,emptyPuzzles:emptyPuzzles$1,createFirst:createFirst$4,demo:demo$c,public:"Công khai",private:"Riêng tư",cellsCount:cellsCount$1,play:play$6,edit:edit$4,assign:assign$9,delete:"Xóa",upgradeToUnlock:upgradeToUnlock$4,packageExpired:packageExpired$7,extendSubscription:extendSubscription$7,editFormTitle:editFormTitle$4,createFormTitle:createFormTitle$4,usageCount:usageCount$4,unlimitedAccess:unlimitedAccess$1,puzzleTitleLabel:puzzleTitleLabel$1,titlePlaceholder:titlePlaceholder$7,answerNameLabel:answerNameLabel$1,answerPlaceholder:answerPlaceholder$1,imageSourceTitle:imageSourceTitle$1,uploadImageRadio:uploadImageRadio$1,useUrlRadio:useUrlRadio$1,compressingAndUploading:compressingAndUploading$1,urlPlaceholder:urlPlaceholder$1,useButton:useButton$1,uploadSuccess:uploadSuccess$1,pieceColorLabel:pieceColorLabel$1,colorBlue:colorBlue$1,colorGreen:colorGreen$1,colorPurple:colorPurple$1,colorGradient:colorGradient$1,colorRandom:colorRandom$1,gridConfigTitle:gridConfigTitle$1,gridSizeLabel:gridSizeLabel$1,gridSizeOption:gridSizeOption$1,cellSizeModeLabel:cellSizeModeLabel$1,equalSizeMode:equalSizeMode$1,randomSizeMode:randomSizeMode$1,timeLimitLabel:timeLimitLabel$1,questionsCountTitle:questionsCountTitle$1,clearAllButton:clearAllButton$1,pickFromBankButton:pickFromBankButton$1,pickFromLessonButton:pickFromLessonButton$1,lessonPickerTitle:lessonPickerTitle$4,manualInputButton:manualInputButton$1,enoughQuestions:enoughQuestions$1,questionsListHeader:questionsListHeader$1,answersCount:answersCount$4,editQuestionTitle:editQuestionTitle$1,deleteQuestionTitle:deleteQuestionTitle$1,noQuestions:noQuestions$1,noQuestionsHint:noQuestionsHint$1,saving:saving$7,savePuzzle:savePuzzle$1,cancelPuzzle:cancelPuzzle$1,toastUploadSuccess:toastUploadSuccess$1,toastUploadError:toastUploadError$1,toastUrlWarning:toastUrlWarning$1,toastUrlSuccess:toastUrlSuccess$1,toastUrlError:toastUrlError$1,toastRemainingWarning:toastRemainingWarning$1,toastQuestionsAdded:toastQuestionsAdded$1,toastQuestionsTrimmed:toastQuestionsTrimmed$1,toastQuestionsRoomLeft:toastQuestionsRoomLeft$1,toastQuestionUpdated:toastQuestionUpdated$1,toastQuestionDeleted:toastQuestionDeleted$1,confirmClearAll:confirmClearAll$1,toastClearAll:toastClearAll$1,errorTitleRequired:errorTitleRequired$4,errorImageRequired:errorImageRequired$1,errorAnswerRequired:errorAnswerRequired$1,errorQuestionsCount:errorQuestionsCount$1,toastUpdateSuccess:toastUpdateSuccess$4,toastCreateSuccess:toastCreateSuccess$4,toastLimitReached:toastLimitReached$4,toastSaveError:toastSaveError$4,player:player$h,decode:decode$1,share:share$8,victory:victory$1,canvas:canvas$1},featureTitle$5="â±ï¸ Trắc nghiá»m theo nhá»p Äá»",myQuizzes$5="Quiz cá»§a tôi",createNew$b="Tạo bà i má»i",help$1={title:"Hưá»ng Dẫn Trắc Nghiá»m Theo Nhá»p Äá»",description:"Tìm hiá»u cách tạo bà i trắc nghiá»m, tá» chức thi Äấu Äá»i nhóm và chế Äá» trình chiếu."},loadingList$1="Äang tải danh sách quiz...",errorLoading$8="Không thá» tải danh sách quiz",errorStartSession$1="Không thá» bắt Äầu phiên. Vui lòng thá» lại.",errorDelete$1="Không thá» xóa quiz",errorDuplicate$1="Không thá» sao chép quiz",emptyState$1={title:"Chưa có quiz nà o",description:'Nhấn "Tạo bà i má»i" Äá» bắt Äầu tạo bà i trắc nghiá»m theo nhá»p Äá»'},demo$b={title:"Trắc Nghiá»m Theo Nhá»p Äá» - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"Xem trưá»c cách GV và HS tương tác cùng lúc â thá» trưá»c khi tạo bà i",previewTitle:"Xem trưá»c tÃnh nÄng Nhá»p Äá»",teacherScreen:"Mà n hình GV",studentScreen:"Mà n hình HS",timeLeft:"Thá»i gian còn lại",revealAnswers:"Hiá»n Äáp án",nextQuestion:"Câu tiếp theo â",finish:"Kết thúc",studentInstruction:"Há»c sinh bấm chá»n Äáp án trên thiết bá» cá»§a mình:",studentsAnswered:"{{count}}/{{total}} há»c sinh Äã trả lá»i",modeHint:"Chế Äá» Nhá»p Äá»: GV g
518iữ nhá»p, há»c sinh tá»± chá»n Äáp án trên Äiá»n thoại â không cần in giấy! Ngoà i ra còn có Chế Äá» trình chiếu, sá» dụng Äá» chiếu câu há»i lên mà n hình lá»n cho cả lá»p cùng xem; và Chế Äá» tá»± do, khi Äó HS sẽ tá»± là m bà i theo tá»c Äá» riêng và biết ngay kết quả sau má»i câu.",finishedTitle:"Xem trưá»c hoà n tất!",finishedDesc:"Bạn Äã thấy cách tÃnh nÄng hoạt Äá»ng. Tạo bà i cá»§a bạn Äá» bắt Äầu dạy tháºt!",restart:"Xem lại",createOwn:"Tạo bà i cá»§a tôi â"},card$4={questionsCount:"{{count}} câu",unknownDate:"Không rõ ngà y",action:{start:"Bắt Äầu",edit:"Sá»a",delete:"Xóa"},upgradeToUnlock:"ð Gia hạn Äá» má» bà i nà y"},modeDialog$1={title:"Chá»n chế Äá» bắt Äầu Quiz",presentation:{label:"Trình chiếu",desc:"GV chiếu mà n hình, HS bấm chá»n trá»±c tiếp",longDesc:"Chế Äá» Trình chiếu: Không cần chia sẻ mã. GV trình chiếu câu há»i lên mà n hình lá»n, há»c sinh giÆ¡ tay hoặc bấm chá»n trá»±c tiếp."},individual:{label:"Nhá»p Äá»",desc:"HS quét mã, chá»n nhân váºt hoặc nháºp tên",longDesc:"Chế Äá» Nhá»p Äá»: Há»c sinh quét mã QR, chá»n nhân váºt (emoji) hoặc nháºp tên Äá» tham gia. Các em trả lá»i câu há»i nhưng KHÃNG THá» tá»± chuyá»n câu â chá» GV má»i chuyá»n, Äảm bảo nhá»p Äá» Äá»u Äặn trong lá»p.",joinModeLabel:"Cách há»c sinh tham gia:",joinModeEmoji:"Chá»n nhân váºt (emoji)",joinModeName:"Nháºp tên"},free:{label:"Tá»± do",desc:"HS tá»± là m, tá»± biết Äúng/sai ngay",longDesc:"Chế Äá» Tá»± do: Há»c sinh quét mã, tá»± là m bà i theo tá»c Äá» riêng. Biết ngay kết quả sau má»i câu, không cần Äợi GV. Hết giá» hoặc GV dừng thì xem bảng xếp hạng.",duration:"Thá»i gian chÆ¡i (phút)",durationPlaceholder:"Äá» trá»ng hoặc 0 = không giá»i hạn",durationHelper:"Äá» trá»ng hoặc nháºp 0 Äá» không giá»i hạn thá»i gian"},cancel:"Há»§y",start:"Bắt Äầu",shuffleLabel:"Xáo trá»n thứ tá»± câu há»i",shuffleHelper:"Má»i lần má» phiên, thứ tá»± câu há»i ÄÆ°á»£c Äảo ngẫu nhiên â hạn chế HS há»c vẹt theo thứ tá»± hoặc nhắc bà i nhau."},deleteDialog$2={title:"Xác nháºn xóa",confirm:'Bạn có chắc muá»n xóa quiz "{{title}}"?',deleting:"Äang xóa...",delete:"Xóa",cancel:"Há»§y"},form$u={editTitle:"Chá»nh sá»a Quiz",createTitle:"Tạo Quiz Má»i",basicInfo:"ð Thông tin cÆ¡ bản",titleLabel:"Tiêu Äá» Quiz:",titlePlaceholder:"Nháºp tiêu Äá» bà i quiz...",timeLimitLabel:"Giá»i hạn thá»i gian má»i câu (giây, 0 = không giá»i hạn):",questionsTitle:"â Câu há»i ({{count}})",clearAll:"ðï¸ Xóa tất cả",pickFromBank:"ðï¸ Chá»n từ Kho hoặc AI",manualInput:"âï¸ Nháºp thá»§ công",listHeader:"Danh sách câu há»i ({{count}})",answersGrid:"{{count}} Äáp án ⢠Äúng: {{correct}}",editQuestion:"Sá»a câu há»i nà y",deleteQuestion:"Xóa câu há»i nà y",emptyQuestions:"ð Chưa có câu há»i nà o",emptyQuestionsHint:"Chá»n từ Kho hoặc AI, hoặc Nháºp thá»§ công Äá» bắt Äầu",cancel:"Há»§y",saving:"ð¾ Äang lưu...",save:"ð¾ Lưu Quiz",errorTitle:"Vui lòng nháºp tiêu Äá» bà i quiz",errorMinQuestions:"Phải có Ãt nhất 1 câu há»i",errorQuestionContent:"Câu {{index}}: Vui lòng nháºp ná»i dung câu há»i hoặc thêm hình ảnh",errorMinOptions:"Câu {{index}}: Phải có Ãt nhất {{count}} phương án",errorOptionContent:"Câu {{index}}: Vui lòng nháºp ná»i dung phương án {{key}} hoặc thêm hình ảnh",errorCorrectAnswer:"Câu {{index}}: Vui lòng chá»n Äáp án Äúng",errorSave:"Có lá»i xảy ra khi lưu quiz. Vui lòng thá» lại.",pickingTitle:"Chá»n câu há»i cho Paced Quiz",listeningTitle:"Tá»p nghe chung (Äá» bà i)",listeningHint:"Tải lên 1 tá»p âm thanh dùng cho cả bà i â há»c sinh nghe rá»i chá»n Äáp án á» má»i câu. Bá» trá»ng nếu bà i không có phần nghe.",allowReplayLabel:"Cho phép há»c sinh nghe lại nhiá»u lần",allowReplayOn:"Há»c sinh bấm phát/dừng thoải mái trong suá»t bà i là m.",allowReplayOff:"â ï¸ Há»c sinh chá» ÄÆ°á»£c phát ÄÃNG 1 LẦN. Phát xong (hoặc bấm dừng giữa chừng) lÃ
518khoá luôn, không nghe lại ÄÆ°á»£c â giá»ng thi tháºt.",listeningProNote:"Tải lên / ghi âm tá»p nghe là tÃnh nÄng cá»§a gói FullGame. Các phần khác cá»§a bà i vẫn soạn bình thưá»ng.",listeningProBtn:"Nâng cấp"},control$1={loading:"Äang tải...",sessionNotFound:"Phiên không tá»n tại",revealAnswer:"Chá»t Äáp án",nextQuestion:"Câu tiếp theo",reports:"ð BÃO CÃO",stop:"Dừng",stopAndResults:"Dừng & Xem kết quả",confirmEnd:"Kết thúc phiên?",confirmEndDesc:"Bạn có chắc muá»n kết thúc phiên quiz nà y? Sẽ hiá»n thá» bảng xếp hạng và xóa dữ liá»u phiên.",cancel:"Há»§y",finish:"Kết thúc",code:"Mã:",copy:"Copy",copied:"Äã copy!",ready:"Sẵn sà ng bắt Äầu?",start:"BẮT ÄẦU",presentationMode:"Chế Äá» trình chiếu - Há»c sinh không cần quét mã",freeModeDesc:"Chế Äá» tá»± do - Há»c sinh quét mã và tá»± là m bà i",freeModeTime:" ({{count}} phút)",unlimitedTimeDesc:" (không giá»i hạn thá»i gian)",noParticipants:"Chưa có há»c sinh tham gia",participantsJoined:"Äã tham gia: {{count}} há»c sinh",teamsJoined:"Äã tham gia:",startedAt:"THá»I GIAN CÃN LẠI",unlimitedTime:"ð¯ Không giá»i hạn thá»i gian",studentsPlaying:"ð¥ {{count}} há»c sinh Äang là m bà i",questionCount:"Câu {{current}} / {{total}}",alreadyAnswered:"{{count}} Äã trả lá»i",correctCount:"{{count}} Äúng",incorrectCount:"{{count}} sai",errorReveal:"Không thá» chá»t Äáp án",errorNext:"Không thá» chuyá»n câu tiếp theo",errorEnd:"Không thá» kết thúc phiên",playListening:"ð§ Phát bà i nghe",pauseListening:"Tạm dừng",resumeListening:"Nghe tiếp",stopListening:"Dừng bà i nghe"},leaderboard$3={title:"Bảng Xếp Hạng",points:"Äiá»m",rank:"Hạng",student:"Há»c sinh",team:"Äá»i",backHome:"Vá» trang chá»§"},student$2={waiting:"Chá» giáo viên bắt Äầu...",starting:"â¡ Sắp bắt Äầu!",defaultName:"Há»c sinh",errorSubmit:"Không thá» ná»p câu trả lá»i",next:"Câu tiếp theo â",waitingReveal:"Chá» giáo viên chá»t Äáp án...",slides:[{caption:"Hãy táºp trung và tá»± tin! ðª"},{caption:"Kiến thức là sức mạnh cá»§a bạn! ð"},{caption:"Ná» lá»±c hôm nay, thà nh công ngà y mai! ð"},{caption:"Bạn có thá» là m ÄÆ°á»£c! Cá» lên nà o! ð"},{caption:"Há»c vui â vui há»c! Sẵn sà ng chưa? ð¯"}],leaderboard:"Bảng Xếp Hạng",finishHeader:"ð Hoà n thà nh!",scoreResult:"{{score}}/100 Äiá»m",rankResult:"Hạng {{rank}} / {{total}} {{medal}}",officialRank:"ð Xếp hạng chÃnh thức",you:" (Bạn)",backToHome:"Vá» trang chá»§",waitingTeacher:"Chá» giáo viên bắt Äầu...",waitingNext:"Chá» câu tiếp theo...",chooseAnswer:"ð Chá»n Äáp án cá»§a bạn",timeUp:"â° Hết giá»! Không thá» chá»n Äáp án",freeFinished:"Bạn Äã hoà n thà nh bà i táºp, hãy Äợi xÃu nhé... ð",correct:"â
ChÃnh xác!",incorrect:"â Chưa Äúng rá»i!",point:"Äiá»m",selectTeam:{title:"Chá»n Äá»i hoặc nháºp tên cá»
518§a bạn",titleOnly:"Nháºp tên cá»§a bạn Äá» tham gia",titlePickEmoji:"Chá»n emoji cá»§a bạn Äá» tham gia",header:"Chá»n Äá»i",chosen:"Äã chá»n",inputName:"Nháºp tên cá»§a bạn",orInputName:"Hoặc nháºp tên cá»§a bạn",namePlaceholder:"VD: Nguyá»
n VÄn A",enterPlay:"Và o chÆ¡i",errorNameRequired:"Vui lòng nháºp tên",errorNameShort:"Tên phải có Ãt nhất 2 ký tá»±",errorPresentation:"Quiz nà y Äang á» chế Äá» trình chiếu, không há» trợ tham gia online.",errorClaimEmoji:"Emoji nà y Äã ÄÆ°á»£c chá»n, hãy chá»n emoji khác",errorJoin:"Không thá» tham gia phiên",errorGeneric:"Äã có lá»i xảy ra"},listeningPlay:"ð§ Nghe bà i",listeningPlayOnce:"ð§ Nghe bà i (1 lần duy nhất)",listeningPause:"Tạm dừng",listeningResume:"Nghe tiếp",listeningStop:"Dừng bà i nghe",listeningUsedUp:"Äã hết lượt nghe"},viPacedQuiz={featureTitle:featureTitle$5,myQuizzes:myQuizzes$5,createNew:createNew$b,help:help$1,loadingList:loadingList$1,errorLoading:errorLoading$8,errorStartSession:errorStartSession$1,errorDelete:errorDelete$1,errorDuplicate:errorDuplicate$1,emptyState:emptyState$1,demo:demo$b,card:card$4,modeDialog:modeDialog$1,deleteDialog:deleteDialog$2,form:form$u,control:control$1,leaderboard:leaderboard$3,student:student$2},featureTitle$4="ð¤ à chữ",myCrosswords$1={title:"à chữ cá»§a tôi ({{count}})",loadError:"Lá»i khi tải danh sách ô chữ",deleteSuccess:"Äã xóa ô chữ",deleteError:"Lá»i khi xóa ô chữ",shareError:"Lá»i khi chia sẻ",unshareSuccess:"Äã há»§y chia sẻ",unshareError:"Lá»i khi há»§y chia sẻ",duplicateSuccess:"Äã tạo bản sao",duplicateLimit:"Bạn Äã hết lượt tạo ô chữ miá»
n phÃ!",duplicateError:"Lá»i khi sao chép",copySuccess:"Äã sao chép link!",emptyState:"Bạn chưa có ô chữ nà o",createNew:"Tạo má»i",createFirst:"Tạo ô chữ Äầu tiên",lockedTip:"Gia hạn Äá» mỠô chữ nà y",demo:{title:"GIAOVIEN - à Chữ Bản Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thỠô chữ vá»i từ khóa ẩn GIAOVIEN gá»m 8 hà ng ngang"},questionsCount:"{{count}} câu",action:{play:"ChÆ¡i",edit:"Sá»a",assign:"Giao bà i",delete:"Xóa"},deleteDialog:{title:"Xác nháºn xóa",confirm:'Bạn có chắc muá»n xóa ô chữ "{{title}}"?',cancel:"Há»§y",delete:"Xóa"},assignSuccess:"Äã giao bà i táºp thà nh công!",pin:{expiredReminder:"â ï¸ Gói Äã hết hạn!",renew:"Gia hạn"},downloadOffline:"Tải xuá»ng",downloadOfflineUpgrade:"Nâng cấp Äá» tải xuá»ng",downloading:"Äang tải...",downloadOfflineError:"â Không tạo ÄÆ°á»£c file tải xuá»ng, vui lòng thá» lại"},form$t={saveRowQuestionSuccess:"Äã lưu câu há»i cho hà ng {{index}}",allRowsHaveQuestions:"Tất cả các hà ng Äã có câu há»i!",importSuccess:"Äã nháºp {{count}} câu há»i!",error:{noTitle:"Vui lòng nháºp tiêu Äá»",noCells:"Vui lòng nháºp ná»i dung ô chữ",noKeywordColumn:"Vui lòng chá»n cá»t từ khóa (click và o sá» cá»t)",rowMissingQuestion:"Hà ng {{rows}} chưa có câu há»i",save:"Lá»i khi lưu: "},updateSuccess:"Äã cáºp nháºt ô chữ!",createSuccess:"Äã tạo ô chữ má»i!",limitReached:"Bạn Äã hết lượt tạo ô chữ miá»
n phÃ!",subscription:{usage:"Bạn Äã sá» dụng {{current}}/{{limit}} ô chữ",remaining:" (Còn {{count}} lượt)"},titleLabel:"Tiêu ÄỠô chữ",titlePlaceholder:"Và dụ: Các thà nh phá» Viá»t Nam",stats:{size:"KÃch thưá»c: {{rows}} x {{cols}}",dataRows:"Hà ng có dữ liá»u: {{count}}",questions:"Câu há»i: {{count}}/{{total}}",keyword:"Từ khóa: {{keyword}}",emptyKeyword:"(trá»ng)"},btn:{importQuestionBank:"Lấy từ Kho câu há»i",importLesson:"ð Từ bà i có sẵn",testPlay:"ChÆ¡i thá»",saving:"Äang lưu...",update:"Cáºp nháºt",save:"Lưu ô chữ"},questionPicker:{title:"Chá»n câu há»i từ Kho câu há»i"},lessonPickerTitle:"Chá»n bà i Äá» lấy câu há»i",rowEditor:{title:"Câu há»i cho Hà ng {{index}}",error:{noQuestion:"Vui lòng nháºp câu há»i",minAnswers:"Cần Ãt nhất 2 Äáp án",noCorrect:"Cần chá»n Ãt nhất 1 Äáp án Äúng"},label:{question:"Câu há»i:",answers:"Äáp án (chá»n Äáp án Äúng):"},placeholder:{question:"Nháºp câu há»i (dùng $...$ cho công thức toán)",answer:"Äáp án {{char}}"},btn:{addAnswer:"Thêm Äáp án",cancel:"Há»§y",save:"Lưu câu há»i"},tip:"ð¡ Tick và o checkbox Äá» chá»n Äáp án Äúng. Nhấn â Äá» chèn công thức toán há»c.",methodPicker:{title:"Thêm câu há»i bằng cách nà o?",fromBank:"Chá»n từ Kho câu há»i",fromBankDesc:"Dùng câu Äã lưu hoặc import từ file/AI",manual:"Nháºp thá»§ công",manualDesc:"Soạn câu há»i má»i ngay tại Äây",currentQuestion:"Câu há»i hiá»n tại:",noText:"(Không có ná»i dung)",delete:"Xóa câu há»i",deleteDesc:"Gỡ câu há»i khá»i hà ng nà y, ô chữ vẫn giữ nguyên",deleteConfirm:"Xóa câu há»i cá»§a hà ng {{index}}?",deleteSuccess:"Äã xóa câu há»i hà ng {{index}}"}}},grid$1={controls:{row:"Hà ng:",col:"Cá»t:",addFirst:"+ Äầu",addLast:"+ Cuá»i",removeFirst:"- Äầu",removeLast:"- Cuá»i"}
518,title:{addRowFirst:"Thêm hà ng Äầu",addRowLast:"Thêm hà ng cuá»i",removeRowFirst:"Xóa hà ng Äầu",removeRowLast:"Xóa hà ng cuá»i",addColFirst:"Thêm cá»t Äầu",addColLast:"Thêm cá»t cuá»i",removeColFirst:"Xóa cá»t Äầu",removeColLast:"Xóa cá»t cuá»i",toggleKeyword:"Click Äá» chá»n/bá» chá»n cá»t từ khóa",addQuestion:"Thêm câu há»i",editQuestion:"Sá»a câu há»i"},legend:{keyword:"Cá»t từ khóa (click sá» cá»t Äá» chá»n)",hasQuestion:"Äã có câu há»i"}},player$g={error:{missingQuestion:"Hà ng nà y chưa có câu há»i",incorrect:"Sai rá»i! Hãy thá» lại"},success:{correct:"ChÃnh xác! Hà ng {{row}} Äã ÄÆ°á»£c má»"},btn:{back:"Quay lại",revealKeyword:"Má» từ khóa",stop:"Dừng",listen:"Nghe lại",stopTTS:"Dừng Äá»c",readTTS:"Äá»c câu há»i"},label:{keyword:"Từ khóa:"},modal:{question:{title:"Câu há»i - Hà ng {{row}}",cancel:"Há»§y",answer:"Trả lá»i"},reveal:{title:"Má» từ khóa?",content:"Bạn có chắc muá»n má» từ khóa ngay bây giá» không?",no:"Không",yes:"Có, má» từ khóa"}},victory:{title:"ð Chúc mừng!",keyword:"Từ khóa: {{keyword}}",stats:"Äúng: {{correct}} | Sai: {{incorrect}}"}},wordSearch$1={title:"ð Khóa bà máºt",sidebar:{myGames:"Trò chÆ¡i cá»§a tôi",createCrossword:"Tạo ô chữ",createWordSearch:"Tạo khóa bà máºt"},help:{title:"Hưá»ng dẫn sá» dụng trò chÆ¡i chữ",description:"Tìm hiá»u cách tạo và sá» dụng à Chữ và Khóa Bà Máºt"},form:{titleLabel:"Tên trò chÆ¡i",titlePlaceholder:"Và dụ: Chá»§ Äá» Gia Äình",timeLimitLabel:"Giá»i hạn thá»i gian (phút)",noTimeLimit:"Không giá»i hạn",timeLimitValue:"{{count}} phút",addBoard:"Thêm bảng",keyword:"Từ khóa",keywordPlaceholder:"VD: MOTHER",hint:"Gợi ý",hintPlaceholder:"VD: Từ MẸ trong tiếng Anh là gì?",generateGrid:"Tạo lưá»i",regenerate:"Tạo lại",preview:"Xem trưá»c",save:"Lưu trò chÆ¡i",update:"Cáºp nháºt",testPlay:"ChÆ¡i thá»",boardTitle:"Bảng {{index}}",hintFontIncrease:"TÄng cỡ chữ gợi ý",hintFontDecrease:"Giảm cỡ chữ gợi ý",boardCount:"{{count}} bảng",keywordDirection:"Từ khóa: {{keyword}} ({{direction}})",direction:{horizontal:"ngang",vertical:"dá»c",diagonalRight:"chéo xuá»ng phải",diagonalLeft:"chéo xuá»ng trái"},error:{minBoard:"Cần Ãt nhất 1 bảng",noKeyword:"Vui lòng nháºp từ khóa trưá»c",generateSuccess:"Äã tạo lưá»i cho bảng {{index}}",saveSuccess:"Äã lưu trò chÆ¡i!",updateSuccess:"Äã cáºp nháºt trò chÆ¡i!",duplicateLimit:"Bạn Äã hết lượt tạo miá»
n phÃ!",saveError:"Lá»i khi lưu: "}},player:{hint:"ð¡ Gợi ý: {{hint}}",boardProgress:"Bảng {{current}}/{{total}}",found:"Äã tìm: {{count}}/{{total}}",timeUp:"â° Hết giá»!",foundWord:"ð Tìm ÄÆ°á»£c rá»i!",timeLeft:"â³ Còn lại: {{time}}",victory:"ð Hoà n thà nh!",back:"Quay lại",submitAssignment:"Gá»i kết quả cho giáo viên",fullscreen:"Toà n mà n hình",exitFullscreen:"Thoát toà n mà n hình"}},viCrossword={featureTitle:featureTitle$4,myCrosswords:myCrosswords$1,form:form$t,grid:grid$1,player:player$g,wordSearch:wordSearch$1},featureTitle$3="ð Sleeping Dragon",sidebar$b={upgrade:"Nâng Cấp Lẻ",tracking:"Theo dõi tiếng á»n",tips:{title:"Mẹo:",calibration:"Sau khi bắt Äầu, giữ yên lặng 10 giây Äá» xác Äá»nh âm thanh ná»n, như váºy sẽ chÃnh xác hÆ¡n.",mercy:"Nút Khoan há»ng xuất hiá»n á» góc dưá»i khi Äang theo dõi."}},setup$1={title:"Cà i Äặt tiết há»c",subtitle:"Hãy cà i Äặt Äá» chú Rá»ng quản lý lá»p há»c cá»§a bạn",trialBanner:"Phiên bản dùng thá»: thá»i gian tá»i Äa <strong>{{max}} phút</strong>. Nâng cấp Äá» dùng không giá»i hạn.",className:{label:"Tên lá»p / Tiết há»c",placeholder:"Và dụ: 10A1 â Tiết tá»± quản"},duration:{label:"Thá»i gian:",unit:"phút",maxTrial:"(tá»i Äa {{max}}p)"},initialScore:{label:"Äiá»m ban Äầu:",unit:"Äiá»m"},threshold:{label:"Ngưỡng báo Äá»ng:",unit:"Ná»n + {{offset}} dB",hint:"Giá trá» nhá» hÆ¡n = nhạy cảm hÆ¡n. Khuyến nghá»: 20â30 dB. Có thá» chá»nh từ 1 dB.",verySensitive:"Rất nhạy",lessSensitive:"Kém nhạy"},error:{mic:"Trình duyá»t không thá» truy cáºp microphone. Vui lòng cấp quyá»n và thá» lại."},btn:{checking:"Äang kiá»m tra mic...",start:"Bắt Äầu Äo ná»n ({{count}} giây)"}},calibration$1={title:"Rá»ng Äang lắng nghe ná»n lá»p...",instruction:"Hãy giữ tráºt tá»± bình thưá»ng trong {{count}} giây Äá» há» thá»ng Äo ÄÆ°á»ng cÆ¡ sỠâm thanh chÃnh xác
518nhất.",unit:"giây",complete:"Xong! Bắt Äầu theo dõi...",skip:"Bá» qua · dùng ngưỡng mặc Äá»nh"},monitor$1={scoreLabel:"Äiá»m sá» / {{total}}",btn:{end:"Kết thúc sá»m",fullscreen:"Toà n mà n hình",exitFullscreen:"Thoát toà n mà n hình",mercy:"ðï¸ Khoan há»ng",mercyActive:"ðµ Äang khoan há»ng...",mercyTooltip:"Khoan há»ng â tắt cảnh báo 10 giây",mercyActiveTooltip:"Äang hoạt Äá»ng (10 giây)"}},dragon$1={state:{sleeping:"Rá»ng Äang ngá»§ ngon...",warning:"Rá»ng Äang khó chá»u...",angry:"Rá»NG THỨC GIẤC!"},mercyStatus:"KHOAN Há»NG (10s)"},summary$1={title:"Tá»ng kết tiết há»c",unit:{minutes:"phút",seconds:"giây"},grade:{excellent:"Xuất sắc!",good:"Tá»t",average:"Trung bình",needsImprovement:"Cần cải thiá»n"},stats:{angryCount:"Rá»ng thức giấc",pointsLost:"Äiá»m bá» trừ",mercyUsed:"Khoan há»ng dùng",noiseThreshold:"Ngưỡng á»n",countUnit:"lần",pointsUnit:"Äiá»m"},log:"Nháºt ký sá»± kiá»n",btn:{close:"Äóng",restart:"Bắt Äầu tiết má»i"}},events$1={angry:"Rá»ng thức giấc!",mercy:"Khoan há»ng (Giáo viên tắt cảnh báo)"},viNoiseTracker={featureTitle:featureTitle$3,sidebar:sidebar$b,setup:setup$1,calibration:calibration$1,monitor:monitor$1,dragon:dragon$1,summary:summary$1,events:events$1},heroTitle$5="Công cụ AI Giáo dục",warningEmail$1="â ï¸ Sá» dụng tà i khoản email công vụ có thá» bá» hạn chế Công cụ AI, hãy dùng tà i khoản @gmail.com cá»§a bạn",warningTrial$1='ð Hãy bấm "Dùng thá»" và xem kỹ Hưá»ng dẫn trưá»c khi quyết Äá»nh má» khóa!',tabs$5={paid:"AI trả phÃ",free:"AI miá»
n phÃ",bundle:"Má» nhiá»u công cụ cùng lúc (giảm giá)",fullAiRemaining:"FullAI · còn {{days}} ngà y",upgradeFullAi:"Nâng cấp FullAI",upgradeFullAiTitle:"Nâng cấp FullAI PLAN"},groups$3={report:"Há» sÆ¡ & Báo cáo",lesson:"Giáo án & Soạn giảng",exam:"Äá» thi",product:"Sản phẩm & Game"},groupBadge$1="Má»i công cụ 30,000Ä - 50.000Ä/nÄm · Mua nhiá»u nÄm, nhiá»u công cụ ÄÆ°á»£c giảm thêm",searchPlaceholder$1="Tìm công cụ...",contactAdmin$1="Liên há» admin",emptyHint$1="Không tìm thấy công cụ phù hợp.",freeSectionTitle$1="Bá» Công Cụ Miá»
n PhÃ",freeSectionBadge$1="⨠Trải nghiá»m sá» dụng AI hoà n toà n miá»
n phÃ",priceYear$1="{{price}}Ä/nÄm",openError$1="Không thá» má» công cụ, vui lòng thá» lại.",buttons$1={trial:"Dùng thá»",viewHelp:"Xem hưá»ng dẫn",helpTitle:"Hưá»ng dẫn: {{title}}",comingSoon:"ð Sắp có",opening:"â³ Äang má»...",freeUseNow:"⨠Miá»
n phà - Dùng ngay",useNowLifetime:"ð Sá» dụng ngay · VÄ©nh viá»
n",useNowDays:"ð Sá» dụng ngay · còn {{days}} ngà y",useNowDaysWarning:"ð Sá» dụng ngay · â ï¸ còn {{days}} ngà y",unlockPrice:"ð Má» khóa ({{price}}Ä/nÄm)",useNow:"ð Sá» dụng ngay"},bundle$1={hintSelect:"TÃch và o thẻ công cụ muá»n má» khóa Äá» thêm và o giá»",toolsCount:"ð {{count}} công cụ",discount:"Giảm {{percent}}%",checkout:"ð³ Thanh toán gá»p",cancel:"Há»§y",selected:"â Äã chá»n",addToCart:"+ Thêm và o giá»"},fullAiExtend$1={title:"FullAI PLAN · còn {{days}} ngà y",content:"Bạn còn {{days}} ngà y FullAI. Nếu thanh toán thêm sẽ ÄÆ°á»£c cá»ng dá»n sá» ngà y.",ok:"OK"},mathTypeWarning={title:"â ï¸ Lưu ý trưá»c khi mua công cụ tÃch hợp giáo án",content:"Nếu giáo án gá»c cá»§a bạn dùng <strong>MathType</strong> Äá» soạn công thức Toán / Hóa, thì sau khi tÃch hợp <strong>các công thức Äó sẽ bá» mất</strong> (công cụ chá» giữ ÄÆ°á»£c phần vÄn bản và ảnh).",note:"Nếu giáo án cá»§a bạn có nhiá»u công thức MathType, hãy cân nhắc trưá»c khi mua.",refund:"Chúng tôi chá» há» trợ hoà n lại 90% nếu Äã mua.",cancel:"Äá» tôi xem lại",ok:"Tôi Äã hiá»u, tiếp tục"},contactModal$1={title:"Liên há» Quản trá» viên",desc:"Nếu bạn gặp khó khÄn trong viá»c má» khóa hoặc sá» dụng công cụ, vui lòng liên há» Zalo/SÄT admin há» trợ:",ok:"Äã hiá»u"},tools$1={tool1:{title:"Viết sáng kiến kinh nghiá»m",description:"Viết sáng kiến kinh nghiá»m tá»± Äá»ng bằng AI"},tool2:{title:"Biá»n pháp giáo viên giá»i",description:"Biá»n pháp nâng cao chất lượng giảng dạy và chá»§ nhiá»m tá»± Äá»ng bằng AI"},tool4:{title:"AI Phân tÃch hạnh kiá»m",description:"Phân tÃch kết quả rèn luyá»n Äá» ÄÆ°a ra nháºn xét chuyên sâu bằng AI. Chú ý: Äây KHÃNG PHẢI công cụ nháºp CSDL, SMAS, VnEdu"},tool14:{title:"TÃch hợp NLS, NL AI và o KHGD, PPCT",description:"TÃch hợp Äá»ng thá»i (hoặc riêng lẻ)nÄng lá»±c sá» (NLS) và nÄng lá»±c AI và o KHGD, phân phá»i chương trình (PPCT)"},tool16:{title:"TÃch hợp tá»ng hợp (NLS, NL AI,...) và o giáo án",description:"Cho phép tÃch hợp Äá»NG THá»I hoặc RIÃNG LẺ các ná»i dung NLS, trà tuá» nhân tạo (AI), khuyết táºt hòa nháºp và o giáo án"},tool9:{title:"Soạn Giáo án MẦM NON tÃch hợp",description:"Cho phép tÃch hợp Äá»NG THá»I hoặc RIÃNG LẺ các ná»i dung NLS, trà tuá» nhân tạo (AI), khuyết táºt hòa nháºp và o giáo án â dà nh riêng cho cấp Mầm non"},tool13:{title:"Soạn Giáo án Chuyên Äá» AI",description:"Xây dá»±ng giáo án chuyên Äá» vá» AI theo các hưá»ng dẫn cá»§a QÄ 2422"},tool11:{title:"Tạo bảng tÃch hợp NL AI và o KHGD",description:"Tá»± Äá»ng tạo bảng tÃch hợp nÄng lá»±c AI và o kế hoạch giáo dục theo QÄ 2422"},tool17:{title:"Soạn giáo án ứng dụng CNTT",description:"Tải lên SGK hoặc giáo án gá»c, AI soạn giáo án kèm gợi ý hoạt Äá»ng sá» cụ thá» trên giaoviendoimoi.com và xuất sẵn JSON câu há»i Äá» dán và o bà i"},tool5:{title:"Tạo Äá» thi theo CV 7991",description:"Tạo Äá» thi, Äáp án, hưá»ng dẫn chấm chuẩn công vÄn 7991"},tool6:{title:"Tạo Äá» thi CV 7991 Tiếng Anh",description:"Tạo Äá» thi chuẩn CV 7991 dà nh riêng cho môn Tiếng Anh"},tool7:{title:"Tạo Äá» thi chuẩn Ngữ vÄn",description:"Soạn Äá» thi chuẩn cấu trúc, rubric môn Ngữ vÄn"},tool8:{title:"Tạo Äá» thi chuyên biá»t",description:"Tạo Äá» theo các ma tráºn, cấu trúc sẵn có, dà nh cho mục ÄÃch Äặc biá»t: Há»c sinh giá»i, luyá»n Äá»,..."},tool10:{title:"AI tạo sản phẩm phần má»m",description:"Công cụ AI há» trợ tạo ra các phần má»m giáo dục thông minh"},toolTtsVoice:{title:"AI Tạo giá»ng Äá»c",description:"Tạo file giá»ng Äá»c AI tá»± nhiên cho bà i g
518iảng: nháºp vÄn bản, chá»n giá»ng rá»i tải file âm thanh vá», dùng cho tÃnh nÄng có Giá»ng Äá»c AI hoặc chèn và o bà i giảng elearning. Má» khóa sẵn nếu bạn Äã có FullGame"},toolHtmlGame:{title:"AI Tạo Game nhanh",description:"Tạo game tương tác cá»±c nhanh từ giáo án cá»§a bạn, sá» dụng trên lá»p hoặc gắn và o bà i giảng elearning, scrom, sá» dụng là m thiết bá» sá», cÅ©ng có thá» dán code và o tÃnh nÄng Game tá»± tạo Äá» giao cho há»c sinh chÆ¡i ngay",unlockBadge:"Má» khóa Äá»ng thá»i",customGameName:"Game tá»± tạo"},free1:{title:"AI tạo câu há»i trắc nghiá»m",description:"Tá»± Äá»ng tạo câu há»i trắc nghiá»m từ ná»i dung giáo án bằng AI"},free2:{title:"Phân tÃch quá trình há»c",description:"Phân tÃch và Äánh giá lá» trình há»c táºp cá»§a há»c sinh bằng AI"},free4:{title:"Robot Dạy Há»c AI",description:"Robot AI thông minh há» trợ giảng dạy â trả lá»i câu há»i, giải thÃch ná»i dung bà i há»c tương tác vá»i há»c sinh"},free3:{title:"Tạo ảnh hưá»ng nghiá»p cho HS",description:"Sá» dụng AI Äá» tạo ảnh hưá»ng nghiá»p dá»±a trên sá» thÃch và kỹ nÄng cá»§a há»c sinh"},free5:{title:"Soạn giáo án ứng dụng CNTT",description:"Tải lên SGK hoặc giáo án gá»c, AI soạn giáo án kèm gợi ý hoạt Äá»ng sá» cụ thá» trên giaoviendoimoi.com và xuất sẵn JSON câu há»i Äá» dán và o bà i"}},viAiTools={heroTitle:heroTitle$5,warningEmail:warningEmail$1,warningTrial:warningTrial$1,tabs:tabs$5,groups:groups$3,groupBadge:groupBadge$1,searchPlaceholder:searchPlaceholder$1,contactAdmin:contactAdmin$1,emptyHint:emptyHint$1,freeSectionTitle:freeSectionTitle$1,freeSectionBadge:freeSectionBadge$1,priceYear:priceYear$1,openError:openError$1,buttons:buttons$1,bundle:bundle$1,fullAiExtend:fullAiExtend$1,mathTypeWarning,contactModal:contactModal$1,tools:tools$1},page$k={title:"ð SÄn Kho Báu",helpLabel:"Video hưá»ng dẫn",helpTitle:"Hưá»ng dẫn SÄn Kho Báu",createHuntBtn:"Tạo cuá»c sÄn má»i",loadError:"Không thá» tải dữ liá»u.",sidebar:{myHunts:"Cuá»c sÄn cá»§a tôi",sessions:"Phiên Äã giao",create:"Tạo má»i"}},myHunts$1={emptyTitle:"Chưa có cuá»c sÄn nà o",emptyDesc:"Tạo cuá»c sÄn Äầu tiên Äá» há»c sinh bắt Äầu phiêu lưu â hoặc chÆ¡i thá» bản mẫu bên dưá»i!",demoBadge:"Bản chạy thá»",monstersCount:"{{count}} quái váºt",playTrial:"ChÆ¡i thá»",assign:"Giao bà i",edit:"Sá»a",delete:"Xóa",teacherShare:"Chia sẻ GV",shareTooltipEnabled:"Chia sẻ cho giáo viên khác qua link",shareTooltipDisabled:"Chá» chia sẻ ÄÆ°á»£c cuá»c sÄn mà má»i quái váºt là câu há»i (không dùng bà i há»c)",deleteDialog:{title:"Xóa cuá»c sÄn?",content:'Xóa bà i gá»c "{{title}}"? Các phiên Äã giao từ bà i nà y vẫn giữ nguyên (có bản chụp riêng) â muá»n dừng thì xóa á» tab "Phiên Äã giao".',cancel:"Há»§y",confirm:"Xóa"}},sessions$1={emptyTitle:"Chưa giao phiên nà o",emptyDesc:"Và o <1>Cuá»c sÄn cá»§a tôi</1> và bấm <3>Giao bà i</3> Äá» tạo phiên cho há»c sinh.",statusEnded:"Äã kết thúc",statusExpired:"Äã hết hạn",statusOpen:"Äang má»",assignedDate:"Giao: {{assigned}} · Hạn: {{expires}}",copyCode:"Sao chép mã",copiedCode:"Äã chép mã",copyLink:"Sao chép link",copiedLink:"Äã chép link",play:"Và o chÆ¡i",results:"Kết quả",end:"Kết thúc",delete:"Xóa",deleteDialog:{title:"Xóa phiên Äã giao?",content:'Xóa phiên "{{title}}"{{label}}? Há»c sinh sẽ không và o ÄÆ°á»£c nữa và kết quả cá»§a phiên nà y cÅ©ng bá» gỡ.',cancel:"Há»§y",confirm:"Xóa"}},builder$1={createTitle:"Tạo cuá»c sÄn tìm má»i",updateTitle:"Cáºp nháºt cuá»c sÄn tìm",titleLabel:"Tên cuá»c sÄn tìm",titlePlaceholder:"VD: Hè 2026 - SÄn Kho Báu Toán Há»c",winModeLabel:"Kiá»u thắng:",winModeAllStages:"Trả lá»i hết là thắng",winModeKeyword:"SÄn từ khóa bà máºt",winModeKeywordDesc:"Má»i quái váºt giữ 1 chữ cái cá»
518§a từ khóa. HS hạ Äá»§ quái Äá» ghép ra từ khóa bà máºt thì thắng.",winModeAllStagesDesc:"HS cần hạ hết toà n bá» quái váºt là thắng â bạn tá»± chá»n sá» lượng quái. Má»i quái váºt là 1 câu há»i hoặc bà i táºp",keywordLabel:"Từ khóa bà máºt",keywordPlaceholder:"VD: Viá»t Nam",keywordHelper:"Từ khóa có {{count}} ký tá»± â cần Äiá»n Äúng {{count}} quái váºt (tá»i thiá»u {{min}}, tá»i Äa {{max}})",monsterCountLabel:"Sá» quái váºt (câu há»i/bà i há»c):",monsterCountRange:"Từ {{min}} Äến {{max}} quái váºt",dailyLimitLabel:"Má»i ngà y ÄÆ°á»£c Äánh bao nhiêu quái? (viá»c hạn chế nà y Äá» cho há»c sinh có ý thức là m bà i hà ng ngà y, chứ không phải táºp trung và o viá»c hoà n thà nh nhanh)",dailyLimitUnlimited:"Bao nhiêu cÅ©ng ÄÆ°á»£c",dailyLimitOption:"{{count}} quái / ngà y",dailyLimitUnlimitedDesc:"HS Äánh thoải mái con nà o trưá»c cÅ©ng ÄÆ°á»£c, không giá»i hạn sá» quái trong ngà y.",dailyLimitDesc:"Má»i ngà y HS chá» hạ ÄÆ°á»£c {{count}} quái váºt bất kỳ â Äánh Äá»§ là phần còn lại khoá tá»i ná»a Äêm. Không ép thứ tá»±.",monsterTypeLabel:"Quái váºt là :",monsterTypeQuestion:"â Câu há»i",monsterTypeGame:"ð® Bà i há»c",monsterTypeQuestionDesc:"Má»i quái váºt là 1 câu há»i, HS trả lá»i ngay trên bản Äá». Nháºp câu há»i á» danh sách bên dưá»i.",monsterTypeGameDesc:"Má»i quái váºt là 1 bà i há»c / trò chÆ¡i bạn Äã tạo. Chá»n riêng cho từng quái á» danh sách bên dưá»i.",shuffleAnswers:"ð Xáo trá»n Äáp án",shuffleAnswersDesc:"Má»i lần HS gặp lại cùng má»t quái váºt, thứ tá»± Äáp án sẽ Äảo khác Äi â HS phải thá»±c sá»± nắm kiến thức chứ không há»c vẹt kiá»u âÄáp án á» vá» trà thứ 2â. Ãp dụng cho cả câu Äúng/Sai nhiá»u má»nh Äá».",questionOrderKept:"Thứ tá»± câu há»i luôn giữ nguyên vì má»i câu gắn cứng vá»i má»t con quái{{suffix}}.",questionOrderSuffixKeyword:" và má»t chữ cái cá»§a từ khóa",questionsListTitle:"Danh sách câu há»i",filledCount:"Äã Äiá»n {{current}}/{{total}}",missingKeywordHint:"Nháºp từ khóa bà máºt á» trên Äá» biết cần bao nhiêu câu há»i.",missingStageCountHint:"Chá»n sá» quái váºt á» trên Äá» biết cần bao nhiêu câu há»i.",duplicateDisabledReason:"Äã Äá»§ {{targetCount}} câu (bằng sá» quái váºt)",duplicateDecoyDisabledReason:"Äã Äạt tá»i Äa {{max}} câu há»i bá» sung",qfLabels:{clearAll:"Xóa tất cả",pickFromBank:"ð Chá»n từ kho hoặc AI",pickFromLesson:"ð Từ bà i có sẵn",manualInput:"âï¸ Nháºp thá»§ công",note:"Cần Äúng {{targetCount}} câu há»i (bằng sá» quái váºt).{{suffix}} Há» trợ 4 dạng: Trắc nghiá»m, Äúng/Sai (nhiá»u má»nh Äá»), Nhiá»u Äáp án, Äiá»n từ.",noteKeywordSuffix:" Thứ tá»± câu = thứ tá»± chữ cái từ khóa.",noteAllStagesSuffix:" HS trả lá»i hết là thắng.",listHeader:"Danh sách câu há»i ({{count}})",emptyTitle:"Chưa có câu há»i nà o",emptyDesc:"Dùng các nút á» trên Äá» thêm câu há»i."},excessQuestionsAlert:"Thừa {{count}} câu â hãy xoá bá»t cho Äúng {{target}} câu, hoặc tÄng sá» quái váºt á» trên.",missingQuestionsAlert:"Còn thiếu {{count}} câu.",gamesListTitle:"Danh sách bà i há»c / trò chÆ¡i cho quái váºt",missingKeywordGameHint:"Nháºp từ khóa bà máºt á» trên Äá» tạo các quái váºt.",missingStageCountGameHint:"Chá»n sá» quái váºt á» trên Äá» bắt Äầu.",selectLessonForMonster:"Chá»n bà i há»c cho quái váºt nà y",deleteSlotTooltip:"Xoá ná»i dung ô nà y",close:"Äóng",decoySwitch:"ð» Thêm quái váºt bá» sung",decoyDesc:"Äây là những quái váºt KHÃNG giữ chữ cái nà o cá»
518§a từ khóa â thêm và o Äá» Äánh lạc hưá»ng. HS vẫn hạ ÄÆ°á»£c chúng nhưng không nháºn thêm chữ, khiến viá»c ghép từ khóa khó Äoán hÆ¡n. (Chá» dùng cho kiá»u thắng âSÄn từ khóa bà máºtâ.) Loại ná»i dung theo Äúng lá»±a chá»n âQuái váºt là â á» trên: ",decoyModeQuestion:"câu há»i",decoyModeGame:"bà i há»c",decoyQuestionsCount:"Äã nháºp {{count}}/{{max}} câu há»i bá» sung.",decoyQfLabels:{clearAll:"Xóa tất cả",pickFromBank:"ð Chá»n từ kho hoặc AI",pickFromLesson:"ð Từ bà i có sẵn",manualInput:"âï¸ Nháºp thá»§ công",note:"Tá»i Äa {{max}} câu há»i bá» sung. Những câu nà y KHÃNG giữ chữ cái từ khóa â HS trả lá»i Äúng cÅ©ng không nháºn thêm chữ. Há» trợ 4 dạng: Trắc nghiá»m, Äúng/Sai (nhiá»u má»nh Äá»), Nhiá»u Äáp án, Äiá»n từ.",listHeader:"Danh sách câu há»i bá» sung ({{count}})",emptyTitle:"Chưa có câu há»i bá» sung nà o",emptyDesc:"Dùng các nút á» trên Äá» thêm câu há»i."},decoyMaxAlert:"Äã Äạt tá»i Äa {{max}} câu há»i bá» sung.",decoyLessonsCount:"Äã chá»n {{count}}/{{max}} quái váºt bá» sung.",lessonTypeLabel:"Loại bà i há»c",noLessons:"Chưa có bà i há»c nà o.",loadMore:"Tải thêm ({{count}} bà i còn lại)",cancel:"Há»§y",createBtn:"Tạo cuá»c sÄn tìm",updateBtn:"Cáºp nháºt cuá»c sÄn tìm",confirmDeleteAll:"Xoá tất cả câu há»i?",confirmDeleteAllDecoy:"Xoá tất cả câu há»i bá» sung?",bankModalTitle:"Chá»n câu há»i từ Ngân hà ng",lessonModalTitle:"Lấy câu há»i từ bà i há»c Äã tạo",decoyBankModalTitle:"Chá»n câu há»i bá» sung từ Ngân hà ng",decoyLessonModalTitle:"Lấy câu há»i bá» sung từ bà i há»c Äã tạo",multiTypeHint:"Há» trợ 4 dạng câu há»i: Trắc nghiá»m, Äúng/Sai (nhiá»u má»nh Äá»), Nhiá»u Äáp án, và Äiá»n từ.",types:{shortAnswer:"Äiá»n khuyết",trueFalse:"Äúng / Sai",trueFalseMulti:"Äúng / Sai ⢠{{count}} má»nh Äá»",lessonChip:"Bà i há»c",questionChip:"Câu há»i"},messages:{skippedQuestions:"Äã bá» {{count}} câu không dùng ÄÆ°á»£c (thiếu ná»i dung hoặc thiếu Äáp án Äúng).",noMatchingQuestions:"Không có câu nà o phù hợp.",noLessonQuestions:'Không lấy ÄÆ°á»£c câu nà o phù hợp từ "{{title}}".',excelNoMatching:"Không có câu nà o phù hợp trong file (chá» nháºn trắc nghiá»m 1 Äáp án Äúng hoặc Äiá»n khuyết).",excelSkipped:"Äã bá» {{count}} câu không dùng ÄÆ°á»£c.",generalError:"Äã có lá»i xảy ra. Vui lòng thá» lại."}},questionStage$1={close:"Äóng",clickToClose:"Bấm Äá» Äóng",decoyTitle:"Quái váºt nà y không chứa từ khóa!",decoyDesc:"Bạn trả lá»i Äúng, nhưng Äây là quái váºt má»i nhá». Hãy tiếp tục tìm kiếm!",correctLetter:"ChÃnh xác! Bạn nháºn ÄÆ°á»£c chữ:",correctMonster:"ChÃnh xác! Äã hạ quái váºt #{{num}}!",incorrect:"Chưa Äúng!",monsterNumber:"QUÃI VẬT #{{num}}",typeAnswerPlaceholder:"Gõ câu trả lá»i...",chooseTrueFalse:"Chá»n Äúng hoặc Sai cho từng má»nh Äá»:",trueLabel:"Äúng",falseLabel:"Sai",multipleChoiceHint:"Có thá» có nhiá»u Äáp án Äúng â chá»n tất cả Äáp án Äúng:",flee:"Bá» chạy",attack:"Tấn công!"},play$5={trialStudentName:"ChÆ¡i thá»",defeatNotification:"ð¥ Quái váºt vẫn Äứng Äó. Rá»i Äi rá»i quay lại Äá» thá» lần nữa!",huntNotFound:"Không tìm thấy cuá»c sÄn tìm.",huntEnded:"Cuá»c sÄn tìm nà y Äã kết thúc.",huntExpired:"Cuá»c sÄn tìm nà y Äã hết hạn tham gia.",genericError:"Äã có lá»i xảy ra.",passportNotFound:"Không tìm thấy há» chiếu nà y. Kiá»m tra lại mã.",stagesChallenges:"{{count}} thá» thách",winModeAllStages:"Hạ hết quái váºt Äá» thắng",winModeKeyword:"Tìm từ khóa bà máºt",firstTimeTab:"Lần Äầu chÆ¡i",havePassportTab:"Có mã há» chiếu",nameLabel:"Tên cá»§a bạn",namePlaceholder:"Nháºp tên Äá» bắt Äầu...",startAdventure:"âï¸ Bắt Äầu phiêu lưu!",passportCodeLabel:"Mã há» chiếu (2 ký tá»±)",continueJourney:"ð§ Tiếp tục hà nh trình",exitBtn:"â Thoát",yourPassport:"Há» chiếu cá»§a bạn",passportSaveHint:"Lưu lại mã nà y Äá» tiếp tục trên thiết bá» khác hoặc lần sau",copied:"Äã sao chép!",readyGreeting:"Xin chà o, <1>{{name}}</1>! Sẵn sà ng phiêu lưu chưa?",letGoBtn:"ð© Lên ÄÆ°á»ng!",previewBanner:"𧪠Chế Äá» chÆ¡i thá» â không cần há» chiếu, không giá»i hạn sá» quái/ngà y, kết quả KHÃNG lưu và o phiên Äã giao.",exitPreview:"â Thoát chÆ¡i thá»",dailyLimitReached:"ð HÃM NAY BẠN Äà LÃM RẤT Tá»T â HÃY QUAY LẠI CHIẾN ÄẤU VÃO NGÃY MAI ð",moveInstruction:"ð¡ Dùng <1>W A S D</1> hoặc <3>phÃm mÅ©i tên</3> Äá» Äi â trên Äiá»n thoại thì chạm & giữ và o chá» muá»n tá»i. Bưá»c và o vòng tròn quanh quái váºt Äá» và o tráºn; Äi vòng qua vòng tròn nếu chưa muá»n Äánh.",exitConfirmTitle:"Thoát khá»i cuá»c sÄn?",exit
518ConfirmDesc:"Tiến Äá» Äã ÄÆ°á»£c lưu â bạn có thá» và o lại bất cứ lúc nà o bằng mã há» chiếu ",stayBtn:"á» lại",confirmExitBtn:"ðª Thoát"},treasureModal$1={tryAgain:"Chưa Äúng, thá» lại!",treasureAlt:"kho báu",congrats:"ð Chúc mừng!",completedDesc:"Bạn Äã hoà n thà nh SÄn Kho Báu!",attemptsCount:"Sá» lần thá»: {{count}}",awesomeBtn:"Tuyá»t vá»i! ð",openSecretChest:"ð Má» rương bà máºt",arrangeLettersDesc:"Sắp xếp {{count}} chữ cái Äã thu thà nh từ khóa bà máºt!",hint:'Gợi ý: Từ khóa có {{count}} chữ cái, bắt Äầu bằng "{{first}}"',inputLabel:"Nháºp từ khóa ({{count}} chữ cái)",openBtn:"Má» rương!"},stageModal$1={unsupportedType:"Game type nà y chưa ÄÆ°á»£c há» trợ trong Hunt.",close:"Äóng",closeAria:"Äóng",decoyTitle:"Quái váºt nà y không chứa từ khóa!",decoyDesc:"Bạn Äã chiến thắng nhưng Äây là quái váºt má»i nhá». Hãy tiếp tục tìm kiếm!",earnedLetterTitle:"Bạn nháºn ÄÆ°á»£c chữ:",letterStoredDesc:"Chữ cái Äã ÄÆ°á»£c cất và o túi Äá» cá»§a bạn"},hud$1={player:"Ngưá»i chÆ¡i:",passport:"Mã há» chiếu:",muteBgm:"Tắt nhạc ná»n",unmuteBgm:"Báºt nhạc ná»n",minimize:"Thu nhá»",fullscreen:"Toà n mà n hình",openedChest:"ð Äã má»!",openChest:"ð Má» rương!",chestLocked:"ð Rương",sidebarChestOpened:"ð Äã má» rương!",sidebarChestReady:"ð Bấm Äá» má» rương!",monstersCount:"quái",keywordsCount:"từ khóa",bgmOn:"Nhạc: Báºt",bgmOff:"Nhạc: Tắt",exitGame:"Thoát game",treasureFound:"ð Äã tìm ra kho báu!"},assignModal$1={title:"Giao bà i cho há»c sinh",huntFallback:"Cuá»c sÄn",mainStagesCount:"{{count}} ải chÃnh",keywordInfo:" · Từ khóa: {{keyword}}",labelField:"Nhãn Äợt giao (tùy chá»n)",labelPlaceholder:"VD: Lá»p 6A, Äợt 1...",labelHelper:"Giúp phân biá»t các Äợt giao cá»§a cùng má»t bà i trong 'Phiên Äã giao'.",expirationTitle:"Thá»i hạn tham gia",minDaysAlert:"Bà i nà y có {{count}} quái, má»i ngà y HS chá» hạ ÄÆ°á»£c {{perDay}} quái â cần tá»i thiá»u <strong>{{minDays}} ngà y</strong> Äá» hoà n thà nh. Các má»c ngắn hÆ¡n Äã bá» khóa.",minDaysError:"Bà i nà y cần tá»i thiá»u {{minDays}} ngà y Äá» HS hoà n thà nh. Vui lòng chá»n thá»i hạn dà i hÆ¡n.",extendedPermError:"Không kiá»m tra ÄÆ°á»£c quyá»n tạo link dà i. Vui lòng thá» lại.",assignFailed:"Giao bà i thất bại. Vui lòng thá» lại.",cancel:"Há»§y",assignBtn:"Giao bà i",assigningBtn:"Äang giao...",successTitle:"Äã giao bà i!",batchLabel:"Äợt: <1>{{label}}</1>",shareInstruction:"Chia sẻ mã hoặc link dưá»i Äây Äá» há»c sinh và o chÆ¡i.",joinCodeLabel:"Mã tham gia",copied:"Äã sao chép!",copyCode:"Sao chép mã",shareLinkLabel:"Link chia sẻ",copiedBtn:"Äã chép",copyBtn:"Sao chép",downloadQr:"Tải mã QR",close:"Äóng",days:{1:"1 ngà y",3:"3 ngà y",7:"7 ngà y",15:"15 ngà y",30:"30 ngà y",90:"90 ngà y",365:"1 nÄm",730:"2 nÄm",1095:"3 nÄm",1825:"5 nÄm"}},statsModal$1={title:"ð Kết quả: {{title}}",keywordInfo:"Từ khóa: <1>{{keyword}}</1> · {{count}} ải chÃnh",reloadTooltip:"Tải lại",studentsCount:"Há»c sinh tham gia",completedCount:"Hoà n thà nh",avgStages:"Trung bình ải qua",stagePassRateTitle:"Tá»· lá» vượt qua từng ải:",stageNum:"Ải {{num}}",chest:"ð Rương",searchPlaceholder:"Tìm theo tên hoặc mã há» chiếu...",noStudents:"Chưa có há»c sinh nà o tham gia.",notFound:"Không tìm thấy.",colIndex:"#",colName:"Tên",colPassport:"Há» chiếu",colStages:"Ải qua",colScore:"Äiá»m",colCompleted:"Hoà n thà nh",colStarted:"Bắt Äầu",colDelete:"Xóa",statusDone:"â
Xong",statusNotYet:"Chưa",deleteStudentTooltip:"Xóa kết quả há»c sinh nà y",deleteConfirm:'Bạn có chắc chắn muá»n xóa kết quả cá»§a há»c sinh "{{name}}" ({{code}})?',unplayedTooltip:"Chưa chÆ¡i",progressTooltip:"{{percent}}% · {{attempts}} lần thá»",footerStudents:"{{count}} há»c sinh",filteredFrom:" (lá»c từ {{total}})",close:"Äóng"},slotPicker$1={lessonType:"Loại bà i há»c",noLessons:"Chưa có bà i há»c nà o.",loadMore:"Tải thêm (còn lại {{count}} bà i)"},world$1={minutes:"{{count}} phút",days:"{{count}} ngà y",hours:"{{count}} giá»",notOpen:"Chưa má»",dailyLimitReachedTooltip:"ð¡ï¸ Hôm nay Äã Äánh Äá»§ {{count}} quái rá»i â quay lại sau {{cooldown}}",unlockAfterTooltip:"ð¡ï¸ Má» sau {{cooldown}}
518",retryTooltip:"Chưa Äạt â bưá»c và o Äá» thá» lại!",decoyTooltip:"Quái váºt bà ẩn...",monsterTooltip:"Quái váºt #{{num}}",introText:"âï¸ HÃY TÃM CÃC QUÃI VẬT Äá» CHIẾN ÄẤU âï¸"},viScavengerHunt={page:page$k,myHunts:myHunts$1,sessions:sessions$1,builder:builder$1,questionStage:questionStage$1,play:play$5,treasureModal:treasureModal$1,stageModal:stageModal$1,hud:hud$1,assignModal:assignModal$1,statsModal:statsModal$1,slotPicker:slotPicker$1,world:world$1},form$s={editTitle:"Sá»a bá» Flashcard",createTitle:"Tạo bá» Flashcard má»i",addCardAiExcel:"⨠Thêm thẻ bằng AI/Excel",titleLabel:"Tên bá» card",titlePlaceholder:"VD: Từ vá»±ng Unit 5, Lá»ch sá» Thế giá»i...",shuffleCards:"Xáo trá»n thẻ khi há»c",fontSizeLabel:"Cỡ chữ",fontSizes:{small:"Bé",regular:"Chuẩn",large:"Lá»n",xlarge:"Rất lá»n"},imageSizeLabel:"Cỡ ảnh",frontColorLabel:"Mà u mặt trưá»c",frontColors:{red:"ð¥ Äá»",indigo:"ð£ TÃm",blue:"ð¦ Xanh dương",teal:"𩵠Xanh mòng két",orange:"ð§ Cam",slate:"⬠Xám Äen",brown:"ð« Nâu Äất"},voiceLabel:"Giá»ng Äá»c",languages:{vi:"ð»ð³ Tiếng Viá»t",en:"ð¬ð§ Tiếng Anh"},cardFormatLabel:"Dạng thẻ",twoSides:"2 mặt",singleSide:"1 mặt",questionOnly:"Chá» có câu há»i",answerOnly:"Chá» có Äáp án",autoRead:"Tá»± Äá»ng Äá»c khi láºt/chuyá»n thẻ",showAllCards:"ð Hiá»n tất cả thẻ",hideAllCards:"ð Ẩn tất cả thẻ",cardNum:"Thẻ {{num}}",hasImage:"ð¼ Có ảnh",expand:"Má» rá»ng",collapse:"Thu gá»n",deleteCardTitle:"Xóa thẻ nà y",frontSide:"Mặt trưá»c",backSide:"Mặt sau",frontPlaceholder:"Câu há»i / từ / khái niá»m...",backPlaceholder:"Äáp án / nghÄ©a / giải thÃch...",pastingImage:"Äang dán ảnh...",imageLabel:"Ảnh",addCard:"+ Thêm thẻ",cancel:"Há»§y",saving:"Äang lưu...",update:"Cáºp nháºt",create:"Tạo bá» card"},aiModal$1={title:"⨠Thêm thẻ bằng AI / Excel",tabJson:"ð¤ Paste JSON (AI)",tabExcel:"ð Upload Excel",openAiTool:"ð Má» công cụ tạo Flashcard bằng AI",steps:{step1:'Bấm nút "ð Má» công cụ tạo Flashcard bằng AI" á» trên (má» tab má»i).',step2:'Trong công cụ, nháºp chá»§ Äá» (VD: "Từ vá»±ng Unit 5 Tiếng Anh 7") rá»i bấm nút Tạo.',step3:"Äợi AI sinh xong, bấm nút Copy sang Giáo viên Äá»i má»i",step4:'Quay lại Äây, dán (Ctrl+V) và o ô bên dưá»i rá»i bấm "Thêm và o bá» thẻ".'},jsonPlaceholder:`[ 519 {"front": "Quang hợp", "back": "Quá trình cây xanh tạo chất hữu cÆ¡"}, 520 {"front": "Hô hấp", "back": "Quá trình phân giải chất hữu cÆ¡"} 521]`,cancel:"Há»§y",apply:"Thêm và o bá» thẻ",excelHint:"File Excel cần có 2 cá»t: Mặt trưá»c và Mặt sau.",dlTemplate:"⬠Tải file mẫu (.xlsx)",pickExcel:"ð Chá»n file Excel"},messages$3={minOneCard:"Bá» card phải có Ãt nhất 1 thẻ",uploadImageError:"Không upload ÄÆ°á»£c ảnh, thá» lại",jsonMustBeArray:"Cần là má»t mảng JSON có Ãt nhất 1 phần tá»",jsonMissingFields:'Phần tá» {{index}} thiếu "front" hoặc "back"',jsonAdded:"Äã thêm {{count}} thẻ từ AI",jsonInvalid:"JSON không hợp lá»",excelEmpty:"File không có dữ liá»u",excelRowEmpty:"Dòng {{row}}: cả hai cá»t Äá»u trá»ng",excelAdded:"Äã thêm {{count}} thẻ từ Excel",excelReadError:"Không Äá»c ÄÆ°á»£c file Excel",emptyContentError:"Vui lòng thêm Ãt nhất 1 thẻ có ná»i dung",libraryFieldsRequired:"Vui lòng chá»n Äá»§ cấp há»c, môn há»c và khá»i lá»p Äá» ÄÄng lên thư viá»n",audioUploadError:"Tải tá»p âm thanh lên thất bại. Kiá»m tra kết ná»i rá»i bấm Lưu lại.",updateSuccess:"Äã cáºp nháºt bá» card",createSuccess:"Äã tạo bá» card má»i",snapshotTooLarge:"Bá» card quá lá»n Äá» ÄÄng lên thư viá»n",saveFailed:"Lưu thất bại, thá» lại sau"},excelTemplate$1={frontHeader:"Mặt trưá»c",backHeader:"Mặt sau",row1Front:"Quang hợp",row1Back:"Quá trình cây xanh tạo chất hữu cÆ¡ từ COâ và nưá»c",row2Front:"Hô hấp tế bà o",row2Back:"Quá trình phân giải chất hữu cÆ¡ Äá» giải phóng nÄng lượng",row3Front:"$\\frac{a}{b}$",row3Back:"Phân sá» a chia b (há» trợ công thức toán)",fileName:"mau-flashcard.xlsx"},viFlashcard={form:form$s,aiModal:aiModal$1,messages:messages$3,excelTemplate:excelTemplate$1},form$r={newTitle:"Tạo bà i há»c má»i",editTitle:"Chá»nh sá»a bà i há»c",generalInfo:"Thông tin chung",lessonTitle:"Tên bà i há»c",timeLimitPerQuestion:"Thá»i gian má»i câu (giây)",gameplay:"Cách chÆ¡i",gameMode:"Chế Äá» chÆ¡i",modeArrange:"Sắp xếp câu",modeFind:"Tìm từ Äúng",wordSpeed:"Tá»c Äá» bay",speedVerySlow:"Rất cháºm",speedSlow:"Cháºm",speedMedium:"Vừa",speedFast:"Nhanh",defaultCardFontSize:"Cỡ chữ thẻ từ mặc Äá»nh",fontSizes:{1:"Nhá»",2:"
521Vừa",3:"Lá»n",4:"Rất lá»n",5:"Cá»±c lá»n"},bgColor:"Mà u ná»n khung",cameraGesture:"ChÆ¡i bằng camera (cá» chá» tay)",scoring:"Chấm Äiá»m (tắt = thuần trình chiếu, không tÃnh Äiá»m)",bgMusic:"Nhạc ná»n (tắt = không tá»± phát nhạc ná»n, có thá» báºt lại trong game)",questionsList:"Danh sách câu ({{current}}/{{max}})",questionNum:"Câu {{num}}",moveUp:"Lên trên",moveDown:"Xuá»ng dưá»i",deleteQuestion:"Xóa câu nà y",completeSentenceAnswer:"Câu hoà n chá»nh (Äáp án)",hintFontSize:"Cỡ chữ câu gợi ý",sentencePlaceholder:"Nháºp câu hoà n chá»nh, và dụ: Hà Ná»i là thá»§ Äô cá»§a Viá»t Nam",mathFormulaHint:"Công thức Toán: má»i công thức phải nằm gá»n trong <1>má»t từ</1> (câu ÄÆ°á»£c tách theo khoảng trắng) â viết <3>$x^2$ $+$ $y^2$</3> (3 thẻ), không viết <5>$x^2 + y^2$</5> (sẽ bá» xé thà nh <7>$x^2$</7>, <9>+</9>, <11>y^2$</11> và hiá»n sai).",hintLabel:"Gợi ý cho câu nà y (tùy chá»n)",hintPlaceholderArrange:"Mặc Äá»nh: Sắp xếp các từ dưá»i Äây thà nh câu hoà n chá»nh",hintPlaceholderFind:"Mặc Äá»nh: Tìm và bắt các từ Äúng dưá»i Äây",findInstruction:"Bấm và o (các) từ Äúng cần há»c sinh tìm:",arrangeInstruction:"Há»c sinh sẽ phải ghép {{count}} từ thà nh câu Äúng â kiá»m tra các thẻ dưá»i Äây Äúng như ý:",maxQuestionsReached:"Äã Äạt sá» câu tá»i Äa.",aiSuggest:"Gợi ý bằng AI",addManualQuestion:"Thêm câu thá»§ công",communityLibrary:"Thư viá»n cá»ng Äá»ng",cancel:"Há»§y",saving:"Äang lưu...",saveLesson:"Lưu bà i há»c"},messages$2={loadError:"Không thá» tải bà i há»c",maxQuestionsError:"Bà i há»c chá» ÄÆ°á»£c tá»i Äa {{max}} câu",minOneQuestionError:"Bà i há»c phải có Ãt nhất 1 câu",aiImportWarning:"Äã thêm {{total}} câu, nhưng {{unmatched}} câu chưa Äánh dấu ÄÆ°á»£c từ Äúng â bạn bấm chá»n từ giúp nhé",aiImportSuccess:"Äã thêm {{total}} câu từ AI",timeLimitError:"Thá»i gian má»i câu tá»i thiá»u 7 giây",emptySentenceError:"Câu {{num}} không ÄÆ°á»£c Äá» trá»ng",minWordsError:"Câu {{num}} phải có Ãt nhất 2 từ",targetWordRequiredError:"Câu {{num}} phải Äánh dấu Ãt nhất 1 từ Äúng",libraryFieldsRequired:"Vui lòng chá»n Äầy Äá»§ cấp/môn/lá»p Äá» ÄÆ°a lên thư viá»n",audioUploadError:"Tải tá»p âm thanh lên thất bại. Kiá»m tra kết ná»i rá»i bấm Lưu lại.",genericError:"Äã xảy ra lá»i"},viFlyingWords={form:form$r,messages:messages$2},heroTitle$4="Tiá»n Ãch Giáo dục",heroSub$1="Các chức nÄng bá» sung cho giáo viên trên ná»n tảng web, giúp tiết kiá»m thá»i gian và nâng cao hiá»u quả giảng dạy.",fullTienIchRemaining$1="FullTienIch · còn {{days}} ngà y",upgradeFullTienIch$1="Nâng cấp FullTienIch",sectionExtensionsTitle$1="Tiá»n Ãch",sectionExtensionsBadge$1="Mua riêng · 30.000Ä/nÄm",nhanxetTitle$1="Nháºn xét CSDL ngà nh, VnEdu & SMAS",nhanxetDesc$1="Tá»± Äá»ng Äiá»n nháºn xét há»c sinh â tiết kiá»m hà ng giá» má»i kỳ.",usageGuide$1="ð Hưá»ng dẫn sá» dụng",licenseActive$1="â
Bản quyá»n còn hiá»u lá»±c · còn {{days}} ngà y",licenseInactiveNhanxet$1="â ï¸ Chưa kÃch hoạt · chá» nháºn xét ÄÆ°á»£c 5 há»c sinh",useBtn$1="Sá» dụng",downloadBtn$1="Tải vá»",extendBtn$1="Gia hạn thêm",activateBtn$1="KÃch hoạt",chuanNNTitle$1="Äánh giá chuẩn nghá» nghiá»p trên CSDL",chuanNNDesc$1="Tá»± Äá»ng Äiá»n phiếu Äánh giá chuẩn nghá» nghiá»p và xuất phiếu tá»± Äánh giá (.docx).",licenseInactiveChuanNN$1="â ï¸ Chưa kÃch hoạt · chá» Äiá»n ÄÆ°á»£c 6/15 tiêu chÃ",downloadSelfAssessmentDocx$1="ð Tải phiếu tá»± Äánh giá (.docx)",pasteAiTitle$1="Chuyá»n Äá»i AI sang DOCX",pasteAiDesc$1="Dán vÄn bản từ ChatGPT, Gemini, Claude⦠nháºn file Word vá»i bảng và công thức toán.",pasteAiFreeUntil$1="ð Miá»
n phà Äến hết ngà y 1/7/2026",licenseInactivePasteAi$1="â ï¸ Chưa kÃch hoạt · chá» dùng ÄÆ°á»£c 3 lần",sectionAddInTitle$1="Add-in Microsoft Word",
521sectionAddInBadge$1="Cà i và o Word · 50.000Ä/nÄm",addInWordTitle$1="Add-in Word GVDM",addInWordDesc$1="Chuẩn hóa công thức Toán, cÄn chá»nh NÄ30, trá»n Äá» thi trắc nghiá»m và các tÃnh nÄng khác ngay trong Word.",licenseInactiveAddInWord$1="â ï¸ Chưa mua · 50.000Ä/nÄm/máy",gettingToken$1="â³ Äang lấy...",getActivationCode$1="ð Lấy mã kÃch hoạt",buyAndActivate$1="ð Mua & kÃch hoạt",mathAssistantTitle$1="Trợ lý cho GV Toán",mathAssistantDesc$1="Há» trợ giáo viên dạy Toán các thao tác Äặc trưng: vẽ hình, chá»n kho hình mẫu, tùy chá»nh hình vẽ Toán há»câ¦",licenseInactiveMathAssistant$1="â ï¸ Chưa mua · dùng thá» 3 ngà y · 50.000Ä/nÄm",getActivationKey$1="ð Lấy key kÃch hoạt",buyAndGetKey$1="ð Mua & lấy key",mathKeyTitle$1="ð Key kÃch hoạt Trợ lý cho GV Toán",mathKeyInstruction$1="Má» Word â tab <1>Trợ lý cho GV Toán</1> â chá»n kÃch hoạt â dán key bên dưá»i và o ô nháºp.",mathKeyDuration$1="Thá»i hạn: {{years}} nÄm (tÃnh từ ngà y kÃch hoạt trong add-in)",mathKeyWarning$1='â ï¸ Key nà y gắn vá»i tà i khoản cá»§a bạn. Hãy lưu lại â và o Äây bấm lại nút "Lấy key kÃch hoạt" sẽ hiá»n Äúng key nà y, không cấp key má»i.',copied$1="â
Äã copy",copyKey$1="ð Copy key",close$4="Äóng",mathDownloadTitle$1="ð¥ Tải Trợ lý cho GV Toán",mathDownloadDesc$1="Tải file .zip â <1>giải nén</1> â chạy file cà i Äặt bên trong, sau Äó má» lại Word.",mathDownloadTrialNote$1="ð Add-in cho <1>dùng thá» 3 ngà y</1> â cà i và chạy thá» trưá»c, thấy hợp thì quay lại mua key.",windowsDefenderWarning$1='â ï¸ Nếu Windows hiá»n cảnh báo xanh <1>"Windows protected your PC"</1>, bấm <3>More info</3> â <5>Run anyway</5> (file an toà n, chá» do chưa mua chứng chá» thương mại).',cancel$6="Há»§y",confirmDownload$1="ð¥ Xác nháºn tải vá»",fullTienIchExtendTitle$1="FullTienIch · còn {{days}} ngà y",fullTienIchExtendMsg$1="Bạn còn {{days}} ngà y FullTienIch. Nếu thanh toán thêm sẽ ÄÆ°á»£c cá»ng dá»n sá» ngà y.",ok$1="OK",trialFirstTitle$1="ð¡ Hãy dùng thá» trưá»c khi mua",trialFirstDesc$1="Má»i máy tÃnh cà i Äặt khác nhau (há» Äiá»u hà nh, phiên bản Word, quyá»n cà i phần má»mâ¦) nên Add-in có thá» không cà i ÄÆ°á»£c trên má»t sá» máy. Äá» tránh mua xong rá»i không dùng ÄÆ°á»£c, bạn nên bấm nút <1>Tải vá»</1> bên cạnh và <3>cà i thá» trưá»c</3> â nếu cà i và chạy ÄÆ°á»£c trong Word, hãy quay lại mua & kÃch hoạt.",downloadTrial$1="ð¥ Tải vá» dùng thá»",stillBuyNow$1="Vẫn muá»n mua ngay",addInTokenTitle$1="ð Mã kÃch hoạt Add-in Word",addInTokenInstruction$1='Copy mã bên dưá»i, má» Word â tab "Giáo viên Äá»i má»i" â nhấn <1>KÃCH HOẠT Äá» SỬ DỤNG</1> â dán mã và o ô.',addInTokenExpireWarning$1="â ï¸ Mã nà y chá» dùng ÄÆ°á»£c 1 lần và hết hạn sau 24 giá».",copyCode$1="ð Copy mã",addInDownloadTitle$1="ð¥ Hưá»ng dẫn cà i Add-in Word",addInDownloadDesc$1="Tải file .zip â <1>giải nén</1> â bấm chạy file <3>bam-de-cai-add-in.exe</3>.",addInReadmeNote$1="Xem thêm file <1>HUONGDAN.txt</1> trong thư mục giải nén.",activationGuideAlt$1="Hưá»ng dẫn kÃch hoạt extension",understood$1="Äã hiá»u",mathKeyError$1="Không lấy ÄÆ°á»£c key. Vui lòng thá» lại.",tokenError$1="Không lấy ÄÆ°á»£c mã. Vui lòng thá» lại.",connectionError$1="Lá»i kết ná»i. Vui lòng thá» lại.",viEdutechExtensions={heroTitle:heroTitle$4,heroSub:heroSub$1,fullTienIchRemaining:fullTienIchRemaining$1,upgradeFullTienIch:upgradeFullTienIch$1,sectionExtensionsTitle:sectionExtensionsTitle$1,sectionExtensionsBadge:sectionExtensionsBadge$1,nhanxetTitle:nhanxetTitle$1,nhanxetDesc:nhanxetDesc$1,usageGuide:usageGuide$1,licenseActive:licenseActive$1,licenseInactiveNhanxet:licenseInactiveNhanxet$1,useBtn:useBtn$1,downloadBtn:downloadBtn$1,extendBtn:extendBtn$1,activateBtn:activateBtn$1,chuanNNTitle:chuanNNTitle$1,chuanNNDesc:chuanNNDesc$1,licenseInactiveChuanNN:licenseInactiveChuanNN$1,downloadSelfAssessmentDocx:downloadSelfAssessmentDocx$1,pasteAiTitle:pasteAiTitle$1,pasteAiDesc:pasteAiDesc$1,pasteAiFreeUntil:pasteAiFreeUntil$1,licenseInactivePasteAi:licenseInactivePasteAi$1,sectionAddInTitle:sectionAddInTitle$1,sectionAddInBadge:sectionAddInBadge$1,addInWordTitle:addInWordTitle$1,addInWordDesc:addInWordDesc$1,licenseInactiveAddInWord:licenseInactiveAddInWord$1,gettingToken:gettingToken$1,getActivationCode:getActivationCode$1,buyAndActivate:buyAndActivate$1,mathAssistantTitle:mathAssistantTitle$1,mathAssistantDesc:mathAssistantDesc$1,licenseInactiveMathAssistant:licenseInactiveMathAssistant$1,getActivationKey:getActivationKey$1,buyAndGetKey:buyAndGetKey$1,mathKeyTitle:mathKeyTitle$1,mathKeyInstruction:mathKeyInstruction$1,mathKeyDuration:mathKeyDuration$1,mathKeyWarning:mathKeyWarning$1,copied:copied$1,copyKey:copyKey$1,close:close$4,mathDownloadTitle:mathDownloadTitle$1,mathDownloadDesc:mathDownloadDesc$1,mathDownloadTrialNote:mathDownloadTrialNote$1,windowsDefenderWarning:windowsDefenderWarning$1,cancel:cancel$6,confirmDownload:confirmDownload$1,fullTienIc
521hExtendTitle:fullTienIchExtendTitle$1,fullTienIchExtendMsg:fullTienIchExtendMsg$1,ok:ok$1,trialFirstTitle:trialFirstTitle$1,trialFirstDesc:trialFirstDesc$1,downloadTrial:downloadTrial$1,stillBuyNow:stillBuyNow$1,addInTokenTitle:addInTokenTitle$1,addInTokenInstruction:addInTokenInstruction$1,addInTokenExpireWarning:addInTokenExpireWarning$1,copyCode:copyCode$1,addInDownloadTitle:addInDownloadTitle$1,addInDownloadDesc:addInDownloadDesc$1,addInReadmeNote:addInReadmeNote$1,activationGuideAlt:activationGuideAlt$1,understood:understood$1,mathKeyError:mathKeyError$1,tokenError:tokenError$1,connectionError:connectionError$1},cancel$5="Cancel",save$1="Save",nav$3={home:"Home",aiTools:"AI Tools",questionBank:"Question Bank",activities:"Activities",assignments:"Assigned",community:"Community",join:"Join",bugReport:"Report a Bug",logout:"Logout",logoName:"Innovative Teacher",logoTitle:"ð Innovative Teacher",edutech:"Edutech Tools",lessonSimulation:"Lesson Simulation",courses:"Courses",homeroom:"Homeroom",paymentHistory:"Payment History",joinForStudents:"Join (for Students)"},header$1={upgradePro:"Get FullGame",upgradePro_short:"FullGame",proAccount:"FullGame Account",proAccount_short:"FullGame",forever:"FullGame Lifetime",forever_short:"Lifetime",daysPro:"{{days}} days FullGame",daysPro_short:"{{days}}d FullGame",logoutBtn:"Logout"},proModal$1={title:"â UPGRADE TO FullGame PLAN â",description:"You don't have to get FullGame. You can purchase individual AI tools for only 30,000 VND each!",descriptionNote:"FullGame PLAN unlocks all interactive teaching features (excluding AI tools):",price:"ð° 200,000 VND",bankLabel:"ð¦ Bank:",accountLabel:"ð± Account:",ownerLabel:"ð¤ Name:",contentLabel:"ð Transfer note:",alertTitle:"â ï¸ After transferring, reload the page. If not activated, please contact Admin:",contactInfo:"ð 0363.357.745 | ð¬",zaloLink:"Zalo",benefitsTitle:"â
Benefits of FullGame:",offlineWarning:"This payment DOES NOT include Offline downloads and AI tools (available separately at 30,000 VND/tool on the AI Tools page).",benefit1:"Create unlimited lessons, games, videos,... across ALL interactive tools",benefit2:"Unlock tools with FullGame badge (cannot be used without FullGame)",benefit3:"Ability to upload/record audio for questions and generate Detailed Reports for student assessment features",closeBtn:"Close",contactAdmin:"Contact Admin",unlockBenefits:"â
FullGame unlocks:",unlimitedGames:"Create <strong>unlimited</strong> educational games, quizzes, videos,...",audioAndReport:"<strong>Upload/record audio</strong> for questions/answers. <strong>Receive detailed reports when assigning homework to students</strong>",notIncluded:"DOES NOT include",excludedServices:"<1>AI Tools, Edutech Tools</1> & <3>Lesson Simulations, Courses, Homeroom Teacher Tools</3>",buyAiTools:"Buy AI Tools",buyEdutech:"Buy Edutech Tools",compareProFree:"Compare FullGame vs Free",mayPromo:"ð SPECIAL PROMOTION",promoBonusNote:"Buy now â get an extra <strong>+{{bonus}} months</strong> free!",promoUntil:"Valid until {{date}}",groupPurchaseBtn:"ð¥ GROUP PURCHASE â BIGGER DISCOUNT",enterPromoCode:"Please enter a code",promoCodeInvalid:"Code does not exist or is invalid",promoCodeSpamError:"Code does not exist or is invalid! To avoid spam, please try again later.",promoDiscount:"code -{{discount}}%",multiYearDiscount:"{{year}} yrs -{{discount}}%",yearsUnit:"{{year}} year(s)",detailedReportRow:"Detailed Report on Assignment",scoreOnlyReport:"Score report only",perQuestionReport:"Report per question",audioRecordRow:"Upload/Record question & answer audio",noAudio:"No",hasAudio:"Yes",cannotUse:"Unavailable",unlimited:"Unlimited"},upgradeModal$1={title:"ð« Trial Limit Reached",offlineTitle:"Download for offline use",freeLimit:"Free plan only allows saving",differentClasses:"different classes",unlockRequired:"This feature requires unlocking to use",internationalBtn:"For international users",upgradeHint:"ð¡ To continue using {{name}}, you can upgrade:",aiUnlockHint:"ð¡ Unlock to use all AI Tools forever:",transferLabel:"Transfer note (Keep as is):",waitingPayment:"System is waiting for your payment...",contactTitle:"â ï¸ After transferring, contact Admin to activate:",closeBtn:"Close",contactBtn:"Contact Zalo",reloadBtn:"â
Paid - Reload Page",offlineBenefitTitle:"Download self-running Offline version forever (no internet needed)",offlineGuide:"Watch offline version tutorial",here:"here",offlineWarning:"Note: This offline version may lack some features compared to the original.",clickToView:"Click here to view",evaluationYear:"â³ Can be used for {{selectedYears}} year(s) from payment (until {{date}})",expiryDateInfo:"Extension added: You can use it unlimitedly until {{date}}",proPlanBenefit:"â¾ï¸ FullGame PLAN: {{price}} / year â transfer {{price2x}} = 2 years",expiryWarning:"â ï¸ After expiry, only {{count}} pinned (ð) lessons will remain usable â others will be locked.",expiryWarningNoAudio:"ð« This upgrade does NOT include Audio Download and Detailed Reports",promoPlaceholder:"Enter promo code (if any)...",deleteBtn:"Delete",applyBtn:"Apply",selectYears:"ð¡ Select extension years:",years:"years",tempAccess:{aiTitle:"
521ð¤ Upgrade AI",offlineTitle:"ð¾ Download Offline",aiContact:"To register AI Tools, please contact:",offlineContact:"To download the Offline version, please contact:",zaloLabel:"ð Zalo: 0363.357.745",zaloName:"(Thinh Tin Hoc)",openZalo:"Open Zalo now",close:"Close"},offlineWarningDialog:{title:"â ï¸ IMPORTANT WARNING ABOUT DATA & OFFLINE LIMITATIONS",pptWarning:"This download is NOT a PowerPoint file. You can only insert links, not paste directly into slides.",usageNote:"* The Offline version can be used WITHOUT INTERNET but has the following issues:",dataNoteTitle:"EXTREMELY IMPORTANT NOTES:",dataNote1:"Data is NOT synced between different devices.",dataNote2:"If you clear browsing data, lesson data may be lost.",dataNote3:'If you copy the product folder to another computer (or folder), data will NOT follow. You need to use "Export data (.json)" to backup and "Import file (.json)" to restore lessons in the new location.',dataNote4:"Please place the product folder in a fixed location on your computer.",limitationsTitle:"LIMITATIONS COMPARED TO THE ONLINE VERSION YOU ARE VIEWING:",limitationsDesc:"This offline product is limited in features compared to the original at {{url}}:",limit1:"Cannot share online play links for students.",limit2:"No cloud sync feature.",limit3:"Cannot assign homework and receive online result reports from students.",limit4:"Must manually type math formulas using Katex, no input support.",limit5:"No text formatting: font color, bold, italic, ...",gotIt:"Got it"},keepTransferNote:"KEEP THE TRANSFER CONTENT AS ABOVE (ABSOLUTELY NO EDITS)",singleAiToolHint:"Select the number of years below, pay once, and use immediately!",aiToolsGroupHint:"Pay once only to unlock the entire set of tools in this Group!",journeyHint:"This feature is for upgraded users only. Upgrade to create unlimited learning journeys.",versus1v1Hint:"This feature is for FullGame users only. Upgrade to let students battle 1v1 on their own devices.",assignment15DaysHint:"The free version only allows assignments up to 15 days.",genericUnlockRequired:"This feature requires unlocking to use!",extCommentsDesc:"Extension to auto-fill student comments into management software â 30,000 VND/year. After payment, log in with your Google account in the extension to use immediately.",extWordAddinDesc:"Word Add-in integrated with AI Gemini for lesson planning and document formatting â 50,000 VND/year.",extMathAddinDesc:"Word Add-in for Math teachers to draw geometry and formulas â 50,000 VND/year. Receive an activation key upon payment.",extAlignDocxDesc:"Auto-align fonts, margins, and line spacing for Word .docx documents per standard guidelines. 3 free trials, then 30,000 VND/year.",extAiToDocxDesc:"Paste AI chatbot responses (ChatGPT, Gemini, Claudeâ¦) to get clean formatted Word files with tables and math equations. 3 free trials, then 30,000 VND/year.",extTeacherStandardDesc:"Extension to auto-fill teacher professional evaluation forms and export .docx reports â 30,000 VND/year.",aiBundleDesc:"Unlock ALL current paid AI tools â AND FUTURE AI tools without extra charge! Only {{price}} VND/year.",edutechBundleDesc:"Unlock ALL Edutech Extensions (total value 140,000 VND/year) â for only {{price}} VND/year.",aiBundleHeader:"ð Unlock ALL Paid AI Tools â INCLUDING FUTURE TOOLS!",aiBundleFeatures:"⢠All existing paid AI tools + any newly launched tools in the future<br />⢠Yearly validity, stackable renewals",aiBundleExcludes:"ð« DOES NOT include: FullGame PLAN (games/interactive video), Edutech Extensions, Offline edition",edutechBundleHeader:"ð Unlock ALL Edutech Extensions!",edutechBundleFeatures:"⢠Student Comments, Teacher Standards, AIâDOCX (30,000 VND/year each)<br />⢠Word Add-in GVDM (50,000 VND/year) · Yearly validity, stackable renewals",edutechBundleExcludes:"ð« DOES NOT include: FullGame PLAN (games/interactive video), AI Tools, Offline edition",extendedLinkBenefit:"â° This plan lets you create assignment links valid up to {{tier}} years. Valid for all games with assignment feature.",downloadOfflineBenefit:'â¬ï¸ Also unlocks "Download" â export lessons as offline playable files without Internet or embed in LMS.',legacyAiUnlockHeader:"â ï¸ Upon unlocking, you own <u>PERMANENT LIFETIME ACCESS TO ALL</u> of the following tools:",aiGroup4Features:"⢠AI-integrated curriculum planning matrix<br />⢠AI Lesson Plan Creator<br />⢠Specialized AI Lesson Planning<br />⢠AI Competency Training Materials (free)",aiGroup3Features:"⢠Technical research report writing<br />⢠AI Software Product builder",aiGroup1Features:"⢠Pedagogical initiatives writing<br />⢠Exemplary teacher method reports<br />⢠Digital-competency integrated lesson plans<br />⢠Student report card analysis",aiGroup2Features:"⢠Test generator per standard Circular 7991<br />⢠English test generator per Circular 7991<br />⢠Standard Literature test generator<br />⢠Exam Analysis Tool",interactiveVideoDownload:"Additionally, you can also DOWNLOAD interactive videos",postExpiryWarning:"After expiration, you will temporarily be unable to use this feature until unlocked.",compareAiBundle:"Compare AI Tools Bundle vs Free",compareFeature:"Compare {{name}} vs Free",compareUpgradeFeature:"Compare Upgraded {{name}} vs Free",paidColumnLabel:"Purchased",qrAlt:"Payment QR Code",promoMayTitle:"
521ð MAY SPECIAL PROMOTION",promoBonusDesc:"Buy now â get an extra <strong>+{{bonus}} months</strong> free!",promoValidUntil:"Valid until {{date}}",promoCodeFormat:"code -{{discount}}%",multiYearDiscountFormat:"{{years}} years -{{discount}}%",groupBuyBtn:"ð¥ GROUP PURCHASE â EXTRA DISCOUNT",promoCodeRequired:"Please enter a promo code",promoCodeInvalidToast:"Code does not exist or is invalid! To prevent spam, please try again later.",promoCodeInvalid:"Code does not exist or is invalid",forever:"/ lifetime",perExtendedLink:"/ all links valid up to {{tier}} years",perYears:"/ {{years}} year(s)",paymentSuccess:"Payment successful! Feature has been unlocked.",bundleSelectedCount:"Selected {{count}} tools bundle:",bundleSelectedHint:"Select the number of years below, pay once, and unlock all selected tools!",notUnlocked:"Not unlocked",unlockForever:"Unlocked forever",assignment15DaysComparison:"Assignment links valid up to 15 days",assignmentMaxTierComparison:"Assignment links valid up to {{tier}} years",unlimitedDuration:"Unlimited â {{duration}}",unlockDuration:"Unlocked â {{duration}}",maxYearsDuration:"up to {{tier}} years",yearsDuration:"{{years}} year(s)",foreverDuration:"forever"},internationalModal$1={title:"⨠FullGame PLAN - $12/Year",description:"Unlock all interactive teaching tools for international teachers.",pricingTitle:"What You Get:",features:["Create unlimited lessons with ALL interactive tools","Record & upload audio to your content","Detailed student progress reports","AI Tools Group 1 forever (Lesson planning, Teaching strategies, Research writing, AI Assistant)","Store lessons permanently in the cloud"],howToTitle:"How to Subscribe:",step1:"Click the payment button below.",step2:"Enter the amount: $12.",step3:'â ï¸ IMPORTANT: In the "Say something nice..." box (BMAC), write your registered email on this website.',note:"Your account will be manually upgraded within 24 hours after payment.",payBtn:"Pay with Buy Me a Coffee â",closeBtn:"Close",hasVnAccount:"Have a Vietnamese bank account?"},language$1={switchTo:"VI",current:"EN",dateLocale:"en-US"},externalTools$1={title:"Links to external tools",warning:"These are external links for quick access. Payments on Innovative Teacher will NOT apply to these websites.",accessTooltip:"Access {{name}}",categories:{teaching:"Teaching/Management Software",ai:"AI Software",aiGeneral:"General AI",aiImage:"Image Generation AI",aiVideo:"Video Generation AI",aiAudio:"Audio/Music Generation AI",education:"Educational Information Sites"}},usage$1={unlimited:"â
Unlimited",used:"Used {{current}}/{{limit}} lessons",expired:"â ï¸ Plan expired",noiseTrackerTrial:"Trial: Max 10 mins/session",proForever:"FullGame Lifetime",proDaysRemaining:"{{days}} FullGame days left"},sidebar$a={upgradeBtn:"Upgrade Individually",upgradeTooltip:"Upgrade to unlock limits",helpBtn:"User Guide",helpTooltip:"View user guide",noticeTitle:"Note:",poseQuizNotice:"This game is intended for whole-class projection for students to <strong>PERFORM MOVEMENTS</strong>, NOT to use the camera for answer verification. The projection is controlled by the teacher or set to automatic timing.",upgradeLabel:"Upgrade",helpLabel:"Help",bugReportLabel:"Report Bug"},offline$1={downloadBtn:"Download Offline",linkBtn:"Offline Link",buyTooltip:"Buy lifetime Offline version",viewLinkTooltip:"Click to view offline download link"},pin$1={note:"ð Pin your favorite {{item}} â you will always be able to use them for free",room:"rooms",wheel:"wheels",lesson:"lessons",image:"images",crossword:"crosswords",robot:"robots",pinned:"ð Pinned!",unpinned:"ð Unpinned",limitReached:"ð Only a maximum of {{limit}} {{item}} can be pinned",pinnedLabel:"pinned"},form$q={answer:"Answer",question:"Question",questionContent:"Question Content",timeLimit:"Time limit per question (sec)",timeLimitHelper:"Minimum 7 sec. Recommended: 15-25 sec.",errorMinTimeLimit:"Minimum time limit per question is 7 seconds."},library$3={errorMetadataRequired:"Please select School Level, Subject, and Grade to publish to the Community Library."},status$1={notEntered:"Empty",notFound:"Not found"},error$7={occurred:"An error occurred"},tts={listenBtn:"Listen",stopBtn:"Stop",notSupportedTooltip:"Your browser does not support Vietnamese text-to-speech. Try Chrome or Edge.",deviceN
521ote:"The read-aloud feature depends on your browser and device",notAvailable:"Your device does not yet support Vietnamese voice reading. This is a browser limitation, not a website issue. Try using Google Chrome."},actions$6={assign:"Assign",teacherShare:"Share with Teachers",renew:"Renew",prevPage:"â Previous",nextPage:"Next â",pageInfo:"Page {{page}}",edit:"Edit",delete:"Delete",play:"Play",view:"View",share:"Share"},listTools$1={searchPlaceholder:"Search lessons...",clear:"Clear search",sortLabel:"Sort",sortNewest:"Newest",sortOldest:"Oldest",sortNameAsc:"Name AâZ",sortNameDesc:"Name ZâA",sortMostQuestions:"Most questions",noResults:"No matching lessons found"},shuffleQuestions$1={label:"Shuffle question order",desc:"Questions appear in a different order each time you play"},groups$2={createButton:"+ New group",createTitle:"Create new group",renameTitle:"Rename group",namePlaceholder:"Group name (e.g. IT Grade 6)",save:"Save",cancel:"Cancel",createSuccess:"Group created",createError:"Could not create group",renameSuccess:"Group renamed",deleteConfirm:"Delete this group? Lessons inside will be moved out, not deleted.",deleteSuccess:"Group deleted",deleteError:"Could not delete group",countLabel:"{{count}} lessons",back:"â Back",moveToGroup:"Move to group",moveSuccess:"Lesson moved",moveError:"Could not move lesson",removeFromGroup:"Move out",noGroup:"Ungrouped",rename:"Rename",delete:"Delete group",emptyGroup:"This group has no lessons yet. Move lessons in from the menu on each lesson card.",inGroupLabel:"ð {{name}}"},search$1={tab:"Search",title:"Search your lessons",placeholder:"Type a lesson name (all tools)...",loading:"Loading your lessons...",noResults:"No matching results found",empty:"You have no lessons yet",untitled:"(Untitled)",groupFeatures:"Features",groupLessons:"My lessons",labelFeature:"Open"},ttsModal$1={title:"⨠Requirements for AI Voiceover Feature",langModeTitle:"Which language should AI read the content in?",langVi:"AI reads Vietnamese",langViDesc:"Questions containing accented Vietnamese",langEn:"AI reads English",langEnDesc:"Questions in English (English subject...)",skipForEn:"â
Skip when reading English",step1SkippedDesc:"No Vietnamese voice needed when AI reads English.",checking:"Checking...",step1Title:"1. Vietnamese language pack installed on your system",step1TitleEn:"1. English voice pack on your system",step1Success:"System has Vietnamese voice installed",step1SuccessEn:"â
System has an English voice installed",step1Needed:"You need to install the Vietnamese language pack in Windows so the browser can read it.",step1NeededEn:"Your browser doesn't have an English voice yet. Try using Microsoft Edge.",step1GuideBtn:"Add AI Voice (Video Guide)",step2Title:"2. Use Microsoft Edge browser",recommended:"Recommended",step2Using:"â
You are using {{name}}",step2Warning:"â ï¸ You are currently using {{name}}",step2EdgeOk:"Edge has the most natural AI voice and doesn't use data bandwidth.",step2EdgeHint:"Microsoft Edge has more natural voices than Chrome and doesn't use data bandwidth.",step3Title:"3. FullGame account required",step3Success:"You are a FullGame PLAN user",step3Needed:"This feature requires a FullGame PLAN subscription.",step3UpgradeBtn:"Get FullGame now",toolTitle:"Or use our AI voice generator tool",toolDesc:"You can also generate speech using our dedicated AI tool, download the .mp3 file, and upload it manually to each question.",toolBtn:"AI Voice Generator Tool",proRequired:"FullGame account required",closeBtn:"Close",gotItBtn:"Got it"},classManager$1={title:"Class manager",subtitle:"This class list is shared across every feature that uses classes. Click a class to edit details and attach student photos.",detailTitle:"Class details",emptyDesc:"You have no classes yet. Create one from a feature page (Wheel Quiz or Paper Mode), then come back here to manage it in detail.",studentCount:"{{count}} students",labelClassName:"Class name",labelClassPhoto:"Class group photo",labelStudents:"Student list",hintShared:"Edits here show up in every feature that uses this class.",warnTooManyClasse
521s:"You have more than {{max}} classes, which may limit how some features work. Consider deleting classes you no longer use.",hintUnsaved:"You have unsaved changes. Leaving now will discard them (including photos you just picked).",placeholderName:"Full name",emptyRows:'No students yet. Click "Add student" or "Paste from Excel".',btnSave:"Save",btnSaving:"Saving...",btnCancel:"Cancel",btnOpen:"Open class",btnPlayGame:"Run a game",playGameHint:"Pick a feature to open, then select this class there",playGameWheel:"Wheel Quiz / Duck Race",playGameFaceRandom:"Photo Roll Call",playGamePaperMode:"Paper Mode",btnDeleteClass:"Delete class",confirmDeleteTitle:"Delete this class?",confirmDeleteMsg:'Class "{{name}}" will be permanently deleted, along with its student list and all attached photos. This cannot be undone.',successDeleteClass:"Class deleted",errorDeleteClass:"Could not delete the class. Please try again.",btnAddStudent:"Add student",btnAdd:"Add",btnClose:"Close",addTitle:"Add student",addHint:"{{current}}/{{max}} students so far. Press Enter to keep adding.",labelStudentName:"Student full name",tooltipMoveUp:"Move up",tooltipMoveDown:"Move down",btnShowPhotos:"Show photos",btnHidePhotos:"Hide photos",chipHasPhoto:"Has photo",chipPhotoPending:"Pending save",notePhotoOptional:"Student photos are only needed for a few specific features â they are entirely optional.",btnSplitPhoto:"Cut student photos from class photo",splitTitle:"Cut student photos from the class photo",splitHint:"Drag the slider to set the ring size, then click each student's face to pick their name. If faces look too small, scroll on the photo to zoom in, then drag to move around. Cut photos wait for you to press Save.",splitSize:"Ring size",splitZoomIn:"Zoom in (or scroll up)",splitZoomOut:"Zoom out (or scroll down)",splitZoomReset:"Fit to frame",splitPxHint:"Actual size of the crop area. {{out}}px or more stays sharp; below that the photo gets enlarged and looks soft.",splitBigExtra:"That photo is quite large, so panning and zooming may feel slow. That is expected â the closer to the original, the sharper the cut faces.",infoBigPhoto:"That photo is {{mb}}MB, so it takes a moment to process. Please wait â a larger original gives sharper cut photos.",splitLowRes:'The selected area is only {{px}}px, so the cut photo will look soft. To fix: drag the slider for a bigger ring, or click "Add photo to cut" and pick the ORIGINAL file from your device â originals keep full detail and cut far better than the saved class photo.',splitNoStudent:"This class has no students yet",splitErrorLoad:"Could not read the class photo for cutting. Try re-uploading the class photo, then cut right away.",btnFullscreen:"Fullscreen",btnExitFullscreen:"Exit fullscreen",splitAddSource:"Add photo to cut from",splitSourceMain:"Class photo",splitSourceExtra:"Extra",splitExtraNote:"Extra photos are only used for cutting â they are not saved.",splitDoneHint:"{{n}} photo(s) cut â remember to press Save on the page to keep them.",btnDone:"Done",tooltipPhotoPending:"Newly picked photo â press Save to upload",confirmLeave:"You have unsaved changes (including photos you just picked). Leaving will discard them. Leave anyway?",errorEmptyName:"Please enter a student name",btnPaste:"Paste from Excel",btnApplyPaste:"Apply",btnAddClassPhoto:"Add class photo",btnPrune:"Clean up {{count}} unused photos",tooltipPrune:"{{count}} photos belong to students no longer in the list. Click to delete them.",tooltipPhoto:"Click to pick a photo for this student",tooltipRemovePhoto:"Remove student photo",tooltipRevealPhoto:"Click to view this student's photo",tooltipHidePhoto:"Click to hide the photo again",tooltipRemoveRow:"Remove student from class",uploading:"Uploading...",pasteTitle:"Paste list from Excel",pasteWarning:"The pasted list REPLACES the entire current list. Students with matching names keep their photos.",pastePlaceholder:"Paste the name column here, one student per line...",successSave:"Class saved",successPrune:"Cleaned up {{count}} unused photos",prunedNone:"No unused photos",errorLoad:"Could not load classes",errorNotFound:"Class not found",errorSave:"Failed to save class",errorName:"Please enter a class name",errorMinStudent:"A class needs at least 1 student",errorOverLimit:"Exceeds the limit of {{max}} students per class",errorPhoto:"Photo operation failed",errorPasteEmpty:"No names found in the pasted text",errorConsent:"Could not save your commitment. Please try again.",btnPurge:"Delete all photos",tooltipPurge:"Delete every portrait and the group photo of this class",confirmPurgeTitle:"Delete all photos of this class?",confirmPurgeMsg:"Every student portrait and the class group photo will be permanently deleted. The student list and class
521name stay unchanged. This cannot be undone.",successPurge:"All photos of this class have been deleted."},photoConsent$1={title:"Commitment on using student photos",forClass:"Class: {{name}}",warning:"Student portrait photos are sensitive personal data. For students under 16, the law requires consent from a parent or legal guardian.",intro:"By continuing, you confirm that:",item1:"You have obtained consent from the studentâs parent or legal guardian to use their photo for teaching activities.",item2:"The photos are used only for teaching activities in this class â not published publicly, not used for commercial purposes.",item3:"You will delete the photos when a parent withdraws consent, or when they are no longer needed for teaching.",item4:"Only your account can view these photos â the platform does not share them with other users.",checkbox:"I confirm I have parental/guardian consent and take responsibility for the commitments above.",btnCancel:"Cancel",btnAgree:"I commit & continue",btnSaving:"Saving..."},mathKeyboard={title:"Insert Formula",tabs:{symbols:"Symbols",expression:"ð§© Expression",latex:"LaTeX"},groups:{basic:"Basic",geometry:"Geometry",sets:"Sets",logic:"Arrows & Logic",greek:"Greek"},symbols:{plusMinus:"Plus-minus",times:"Multiply",divide:"Divide",notEqual:"Not equal",approx:"Approximately equal",lessEqual:"Less than or equal to",greaterEqual:"Greater than or equal to",infinity:"Infinity",pi:"Pi",degree:"Degree",angle:"Angle",triangle:"Triangle",perp:"Perpendicular",parallel:"Parallel",circle:"Circle",vector:"Vector",in:"Element of",notIn:"Not an element of",subset:"Subset",cup:"Union",cap:"Intersection",emptySet:"Empty set",reals:"Real numbers",integers:"Integers",naturals:"Natural numbers",implies:"Implies",leadsTo:"Yields",equiv:"Equivalent",forAll:"For all",exists:"Exists"},templates:{frac:{name:"Fraction",num:"Numerator",den:"Denominator"},pow:{name:"Exponent",base:"Base",exp:"Power"},sub:{name:"Subscript",base:"Expression",sub:"Index"},subsup:{name:"Sub+Superscript",base:"Expression",sub:"Subscript",sup:"Superscript"},sqrt:{name:"Square root",inner:"Expression"},nrt:{name:"N-th root",n:"Degree",inner:"Expression"},lim:{name:"Limit",var:"VarâValue",expr:"Expression"},sum:{name:"Sum",from:"From",to:"To",expr:"Expr"},int:{name:"Integral",from:"Lower",to:"Upper",expr:"Expr"}},textSegment:"Text",textPlaceholder:"e.g.: + , = , ...",emptyPreview:"Click buttons below to start building expression...",quickInsert:"Quick insert:",selectElementToAdd:"Select element type to add:",addElement:"ï¼ Add element",hint:"Tab to navigate · Ctrl+Enter to insert · Supports LaTeX in slots (e.g., x+1, \\alpha)",clearAll:"Clear all",insertFormula:"Insert formula",latexPlaceholder:"Enter LaTeX directly, e.g.: \\frac{a}{b} + \\sqrt{c}",ctrlEnterHint:"Ctrl+Enter to insert",deleteTitle:"Delete",addTitle:"Add element",cancel:"Cancel"},groupPurchaseModal={title:"Group Purchase â Extra Discounts",stepEmail:"Enter emails",stepConfirm:"Confirm",stepPayment:"Payment",infoAlert:"Purchase <strong>{{featureName}}</strong> for multiple users â your email is automatically included.",buyerLabel:"{{email}} (you)",memberCount:"+ {{count}} other emails = <strong>{{total}} people</strong>",placeholder:`Enter colleague emails separated by commas or new lines... 522Example: 523[email protected] 524[email protected], [email protected]`,uploadBtn:"ð Upload Excel/CSV",exportTemplateBtn:"ð¥ Export Template",invalidEmail
524s:"Skipped {{count}} invalid emails: {{emails}}",overLimit:"Maximum {{max}} people (excluding yourself). Please remove some emails.",promoPlaceholder:"Discount code (if any)...",promoDelete:"Delete",promoApply:"Apply",promoRequired:"Please enter a code",promoInvalid:"Invalid or non-existent promo code!",promoApplied:"â
Code {{code}}: -{{discount}}%",summaryTitle:"ð° Discount Summary",originalPrice:"Original price: {{price}}Ä",promoDiscount:"Promo code: -{{discount}}%",multiYearDiscount:"{{years}} years: -{{discount}}%",groupDiscount:"Group of {{count}} people: -{{discount}}%",bonusMonths:"ð Month {{month}} special: +{{count}} months/person",totalDiscount:"Total discount: <strong>-{{discount}}%</strong> â Per person: <strong>{{price}}Ä/{{period}}{{bonus}}</strong>",yearPeriod:"year",multiYearPeriod:"{{years}} years",bonusSuffix:" +{{count}}mo",totalPayment:"Total payment: {{price}}Ä",yearsTitle:"Subscription duration",yearsButton:"{{years}} years",yearsDiscountBadge:"-{{discount}}%",groupTableTitle:"Additional group discounts",groupPeople:"{{count}} people",confirmListTitle:"List of {{total}} people who will be granted access to <strong>{{featureName}}</strong> ({{years}} years):",youSuffix:" (you)",confirmTotal:"ð³ Total: {{price}}Ä",perPersonSummary:"Per person: {{price}}Ä / {{years}} years{{bonus}}",bonusMonthsSuffix:" +{{count}} months",unregisteredHint:"Unregistered emails will automatically be activated when they log in for the first time.",transferLabel:"â ï¸ Transfer reference (DO NOT modify):",paymentSummary:"{{count}} people à {{years}} years â total discount {{discount}}%",bankLabel:"Bank:",accountNoLabel:"Account No:",accountNameLabel:"Account Name:",waitingText:"Waiting for payment â system will process automatically...",successTitle:"Unlocked for {{processed}}/{{total}} people!",failedEmails:"{{count}} failed emails: {{emails}}",reloadHint:"Page will reload in 2 seconds...",close:"Close",previewNext:"Preview & Confirm â",back:"â Back",confirmCreating:"Creating...",confirmCreateQR:"Confirm â Generate Payment QR",paidReload:"PAID (RELOAD)",errorPrefix:"Error: {{message}}",unlockSuccessToast:"Unlocked for {{processed}}/{{total}} people!",templateFileName:"group-purchase-email-list.xlsx",sheetName:"Email list"},btn={cancel:"Cancel",upgrade:"Upgrade",backToList:"Back to list"},confirmDeleteAll$3="Are you sure you want to delete all questions?",expiredBanner={title:"â ï¸ Your plan has expired!",upgrade:"Renew"},questionPicker={title:"Select questions for {{feature}}"},enCommon={cancel:cancel$5,save:save$1,nav:nav$3,header:header$1,proModal:proModal$1,upgradeModal:upgradeModal$1,internationalModal:internationalModal$1,language:language$1,externalTools:externalTools$1,usage:usage$1,sidebar:sidebar$a,offline:offline$1,pin:pin$1,form:form$q,library:library$3,status:status$1,error:error$7,tts,actions:actions$6,listTools:listTools$1,shuffleQuestions:shuffleQuestions$1,groups:groups$2,search:search$1,ttsModal:ttsModal$1,classManager:classManager$1,photoConsent:photoConsent$1,mathKeyboard,groupPurchaseModal,btn,confirmDeleteAll:confirmDeleteAll$3,expiredBanner,questionPicker},nav$2={logo:"Innovative Teacher",aiTools:"AI Tools",joinBtn:"ð® Join (for students)",loginBtn:"Login",bugReportBtn:"Report a Bug"},hero$5={title:"Innovative Teacher",subtitle:"Teaching games, AI tools and more",description:"A platform for tech-savvy teachers, providing smart teaching tools to optimize classroom instruction",loginCta:"Login Now - No registration needed!",joinCta:"ð® Join (for students)",qrScanCta:"Scan QR code"},features$3={sectionTitle:"Teaching Tools",sectionSubtitle:"Explore modern educational tools to enhance your teaching quality",tools:{aiTools:{title:"AI Tools",description:"AI tools for writing reports, lesson plans, integration with NLS, and many other AI features"},aiSpecialist:{title:"Specialized AI",description:"AI designed for advanced educational tasks"},interactiveVideo:{title:"Interactive Video",description:"Create learning videos with interactive multiple-choice questions"},interactiveImage:{title:"Interactive Image",description:"Add touch points on images with Quiz questions or worksheets â students interact directly on the image"},panoramaMuseum:{title:"Panorama Museum - 3D Art Gallery",description:"View 3D exhibitions with interactive 360° panorama images"},quizGame:{title:"Drag & Drop - Matching",description:"Create drag-and-drop label quizzes on images or match items by dragging"},companionRobot:{title:"Companion Robot",description:"Smart AI robot that accompanies students throughout the lesson"},wheelQuiz:{title:"Spin Wheel - Duck Race",description:"Spin the wheel or race ducks to pick random students, combined with fun multiple-choice questions"},handSlashQuiz:{title:"Fruit Ninja Quiz",description:"Interactive multiple-choice game using hand gestures in Fruit Ninja style"},flipPuzzleGame:{title:"Flip Puzzle Game",description:"Students answer questions to reveal puzzle pieces, guess the picture name to win"},turnBasedGame:{title:"Turn-Based Game",description:"Roll the dice, move characters, and overcome obstacles with questions. Suitable for 2-4 players on a
524single device."},versusGame:{title:"Versus Game",description:"Students compete 1v1 on their own devices â answer correctly to push the opponent back. Teachers open rooms and monitor live."},tugOfWarGame:{title:"Tug of War - Dragon Boat",description:"Two teams compete by answering questions to win in an exciting traditional game"},pacedQuiz:{title:"Paced Quiz",description:"Teacher creates a quiz and controls the pace on the projector screen"},crosswordPuzzle:{title:"Crossword",description:"Create crosswords with multiple-choice questions, students answer to unlock rows and find keywords"},flyingWordsGame:{title:"Flying Words",description:"Catch the flying words (by hand or mouse) to arrange/find the right words to form a complete sentence"},headTiltQuiz:{title:"Head Tilt Quiz",description:"Students tilt their head left or right to choose answers, detected via camera"},starBagGame:{title:"Star Bag",description:"Two teams compete by raising fingers to choose answers â answer correctly to collect stars and win"},poseQuiz:{title:"ABC Exercise",description:"Students perform exercise poses based on illustrations while answering multiple-choice questions"},noiseTracker:{title:"Sleeping Dragon - Class Manager",description:"A dragon sleeps in a quiet class and wakes up when it's noisy â a fun classroom management game using the microphone"},journey:{title:"Learning Journey",description:"Create learning journeys with stages and quizzes â students compete along a path"},paperMode:{title:"Paper Mode",description:"Scan paper cards for quick checks and roll calls â Plickers-style"},faceRandom:{title:"Lucky Lens",description:"Scan student faces to randomly call on them and combine with multiple-choice questions"},htmlEmbedGame:{title:"Custom Game",description:"Paste an HTML game's code and let students play it instantly â no coding needed"},"scavenger-hunt":{title:"Scavenger Hunt",description:"Combine multiple lessons into one scavenger hunt â students collect letters to solve the secret keyword"}}},paperModeBeta$3="Scan A/B/C/D paper cards with your camera â grade the whole class in seconds, no student devices needed",betaBadge$3="𧪠Testing Mode",footer$5={ownerLabel:"Owner",ownerName:"Ban Van Thinh",ownerAddress:"Vinh Tuy, Tuyen Quang province, Vietnam",ownerTax:"Tax ID: 002090004198",connectLabel:"Connect",legalLabel:"Legal",policy1:"ð° Pricing",policy2:"ð Privacy Policy",policy3:"ð Terms of Use",policy4:"ð Delivery Policy",policy5:"ð¤ Owner Info",copyright:"© 2025 Developed by Thầy Giáo Tin",buildTime:"Updated at {{time}} on {{date}}",facebook:"Facebook",tiktok:"TikTok",youtube:"Youtube",zalo:"Zalo",zaloCommunity:"Zalo Community",email:"Email",guide:"Guide",guideTooltip:"View user guide"},webviewModal$1={title:"â ï¸ Cannot login in this app",intro:"You are opening the page via Zalo / Messenger. To log in, please open in a external browser as instructed below:",step1:"Step 1: Tap the â® menu in the top right",step2:'Step 2: Choose "Open in browser"',btnClose:"Close"},emailModal$3={title:"Email address",btnClose:"Close"},loading$1="Loading tool...",enLanding={nav:nav$2,hero:hero$5,features:features$3,paperModeBeta:paperModeBeta$3,betaBadge:betaBadge$3,footer:footer$5,webviewModal:webviewModal$1,emailModal:emailModal$3,loading:loading$1},heroTitle$3="Innovate teaching and working methods together",modules$1={"ai-tools":{title:"AI Tools",description:"AI tools for writing action research, teaching measures, integrating NLS,... and many other AIs"},"ai-specialist":{title:"Specialized AI",description:"AI for writing scientific research reports, describing AI products and supporting the creation of educational products"},"interactive-video":{title:"Interactive Video",description:"Create learning videos with interactive multiple-choice questions"},"interactive-image":{title:"Interactive Image",description:"Place touch points on images with Quiz questions or worksheets â students interact directly on the image"},"panorama-museum":{title:"Panorama Museum - 3D Art Gallery",description:"View 3D exhibitions with interactive 360-degree panorama images"},"quiz-game":{title:"Drag & Drop - Matching",description:"Create drag-and-drop label quizzes on images or match items by dragging"},"wheel-quiz":{title:"Spin Wheel - Duck Race",description:"Spin the wheel or race ducks to pick random students, combined with fun multiple-choice questions"},"hand-slash-quiz":{title:"Fruit Ninja Quiz",description:"Interactive multiple-choice game using hand gestures in Fruit Ninja style"},"flip-puzzle-game":{title:"Flip Puzzle Game",description:"Students answer questions to reveal puzzle pieces, guess the picture name to win"},"knowledge-train-game":{title:"Knowledge Train",description:"Drag and drop the wagons into the correct order â match each answer to the next question"},"turn-based-game":{title:"Turn-Based Game",description:"Roll the dice, move characters, and overcome obstacles with questions. Suitable for 2-4 players on a
524single device."},"versus-game":{title:"Versus Game",description:"Students compete 1v1 on their own devices â answer correctly to push the opponent back. Teachers open rooms and monitor live."},"tug-of-war-game":{title:"Tug of War - Dragon Boat",description:"Two teams compete by answering questions to win in an exciting traditional game"},"paced-quiz":{title:"Paced Quiz",description:"Teachers create multiple-choice quizzes, controlling the pace on the projector"},"crossword-puzzle":{title:"Crossword",description:"Create crosswords with multiple-choice questions, students answer to unlock rows and find keywords"},"head-tilt-quiz":{title:"Head Tilt Quiz",description:"Students tilt their head left or right to choose answers, detected via camera"},"star-bag-game":{title:"Star Bag",description:"Two teams compete by raising fingers to choose answers â answer correctly to collect stars and win"},minesweeper:{title:"Minesweeper",description:"Students choose the tile with the correct answer to cross the minefield â adventure quiz with 3 lives; step on a mine and it blows up"},flashcard:{title:"Flip Cards (Flashcard)",description:"Create flashcard decks with audio & images â flip cards, self-assess, study until mastered"},"mind-map":{title:"Mind Map Builder",description:"Capture knowledge live during class via a floating sticker â auto-generates a complete mind map at the end, zoomable & exportable"},"pose-quiz":{title:"ABC Exercise",description:"Students perform exercise poses based on illustrations while answering multiple-choice questions"},"noise-tracker":{title:"Sleeping Dragon - Class Manager",description:"A dragon sleeps in a quiet class and wakes up when it's noisy â a fun classroom management game using the microphone"},"flying-words-game":{title:"Flying Words",description:"Catch the flying words (by hand or mouse) to arrange/find the right words to form a complete sentence"},"teaching-materials":{title:"Mr. Tin's Courses",description:"Repository of lesson plans, slides, and reference materials for teachers"},journey:{title:"Learning Journey",description:"Create learning journeys with stages and quizzes â students compete along a path"},"paper-mode":{title:"Paper Mode",description:"Scan paper cards for quick checks and roll calls â Plickers-style"},"face-random":{title:"Lucky Lens",description:"Scan student faces to randomly call on them and combine with multiple-choice questions"},"html-embed-game":{title:"Custom Game",description:"Paste HTML game code and assign it to students to play instantly â no coding required"},"scavenger-hunt":{title:"Scavenger Hunt",description:"Combine multiple lessons into one scavenger hunt â students collect letters to solve the secret keyword"}},comingSoon$1="Coming soon",startBtn$1="Start",lockedBtn$1="Locked",trialBtn$1="ð Free trial",updatingBadge$1="ð§ Feature updating",journeyModal$1={title:"Learning Journey",lockLabel:"ð Premium Feature",intro:"Learning Journey allows teachers to create interactive paths with multiple stages, each containing a set of multiple-choice questions. Students compete through each stage to complete the journey.",featuresTitle:"⨠Key Features:",feature1:"Create journeys with multiple stages",feature2:"4 question types: Multiple Choice, Multiple Answers, True/False, Fill in Blank",feature3:"Assign via room code",feature4:"Detailed results for each student",feature5:"Auto-save to Question Bank",videoTitle:"ð¬ Tutorial Video:",upgradeBtn:"ð Upgrade Now â 30,000Ä/year"},versusModal$1={title:"Versus Game",lockLabel:"ð FullGame Feature",intro:"Versus Game allows students to compete 1v1 directly on their own devices. Answer correctly to push the opponent back â first to reach the goal wins!",featuresTitle:"⨠Key Features:",feature1:"Students use separate devices â no screen-sharing needed",feature2:"Teachers open rooms, share codes, and monitor live",feature3:"Real-time stick-pushing effects based on scores",feature4:"Teachers see both sides' questions simultaneously",feature5:"Auto-save results to submission list",videoTitle:"
524ð¬ Video Guide:",upgradeBtn:"ð Upgrade Now â 30,000Ä/year"},htmlEmbedModal={title:"HTML Embed Game",lockLabel:"ð FullGame Feature",intro:"The HTML Embed Game feature allows you to directly embed HTML code of games or iSpring, Articulate Storyline files so students can play directly on the system without leaving the classroom.",featuresTitle:"⨠Key Features:",feature1:"Quickly embed HTML game code from other sources",feature2:"Support SCORM, iSpring, Articulate packages",feature3:"Students play directly on the platform interface",feature4:"Flexible and precise full-screen zoom",feature5:"Assign tasks to students to experience right on the system",videoTitle:"ð¬ Video Guide:",upgradeBtn:"ð Upgrade Now â 30,000Ä/year"},footer$4={ownerLabel:"Owner",ownerName:"Ban Van Thinh",ownerAddress:"Vinh Tuy, Tuyen Quang province, Vietnam",ownerTax:"Tax ID: 002090004198",connectLabel:"Connect",legalLabel:"Support & Legal",utilsLabel:"Utilities",policy1:"ð° Pricing",policy2:"ð Privacy Policy",policy3:"ð Terms of Use",policy4:"ð Delivery Policy",policy5:"ð¤ Owner Info",guide:"Guide",guideTooltip:"View user guide",fixError:"Fix error",fixErrorTooltip:"Use when stuck on old version or loading error",confirmReset:"This will clear old data and reload the latest version (login required). Are you sure?",copyright:"© 2025 Developed by Thầy Giáo Tin",buildTime:"Updated at {{time}} on {{date}}"},emailModal$2={title:"Email address",btnClose:"Close"},helpModal$2={title:"Home Page Guide",description:"Learn about the features and tools available on the platform"},paperModeBeta$2="Scan A/B/C/D paper cards with your camera â grade the whole class in seconds, no student devices needed",betaBadge$2="𧪠Testing Mode",enHome={heroTitle:heroTitle$3,modules:modules$1,comingSoon:comingSoon$1,startBtn:startBtn$1,lockedBtn:lockedBtn$1,trialBtn:trialBtn$1,updatingBadge:updatingBadge$1,journeyModal:journeyModal$1,versusModal:versusModal$1,htmlEmbedModal,footer:footer$4,emailModal:emailModal$2,helpModal:helpModal$2,paperModeBeta:paperModeBeta$2,betaBadge:betaBadge$2},logoText$1="Innovative Teacher",logoSubtitle$1="Videos, educational games and more",loginTitle$1="Log in",loginDescription$1="Log in to start creating interactive lessons for your students",loggingInBtn$1="Logging in...",loginGoogleBtn$1="Log in with Google",loginNote$1="By logging in, you agree to our Terms of Service and Privacy Policy.",loginFooterText$1="For teachers and students",highlightTools$1="A library of interactive teaching tools",highlightAI$1="AI assistant for lesson planning, integration, writing reports, ...",highlightSimulation$1="Visual simulations (3D, 2D, motion, ...) for your lessons",highlightClassroom$1="Homeroom class management",highlightFree$1="Ready to use, no installation needed",loginFailed$1="Login failed: {{error}}",pleaseTryAgain$1="Please try again.",loginNotePrefix$1="By logging in, you agree to our",loginNoteTerms$1="Terms of Service",loginNoteAnd$1="and",loginNotePrivacy$1="Privacy Policy",loginNoteSuffix$1=".",disclaimerCopyright$1="By uploading any image, audio, or data file, you confirm that you legally own it or have permission from the copyright holder. The system has full authority to remove, without prior notice, any content that is reported, suspected of infringement, or in violation of the law or copyright. The platform disclaims all liability for violations caused by users.",disclaimerConsent$1="By logging in, you agree to the above terms.",consentCheckboxLabel$1="I have read and agree to the Terms of Service, Privacy Policy, the content copyright commitments, and the responsibilities regarding student photos and information stated above.",consentRequired$1="Please check the consent box before logging in.",disclaimerStudentPhoto$1="If you upload student photos or names, you confirm you have consent from a parent or legal guardian (required for students under 16), that you will use them only for teaching activities in your own class, and that you will delete them once no longer needed.",popupHint$1="If you don't see the sign-in window, check the taskbar at the bottom of your screen",errInvalidCredential$1="Your Google session in this browser has expired. Please clear your cookies and sign in again.",errPopupBlocked$1="Your browser blocked the Google sign-in window. Click the blocked-popup icon at the right of the address bar, choose Always allow, then try again.",errPopupClosed$1="You closed the Google sign-in window before choosing an account. Please click Sign in with Google again.",errCookiesBlocked$1="Your browser is blocking cookies, so Google sign-in cannot complete. Please clear your cookies and try again.",errNetwork$1="The connection dropped during sign-in. Please check your Wi-Fi or mobile data and try again.",errTooManyRequests$1="Too many sign-in attempts. Please wait a few minutes and try again.",errUserDisabled$1="This account has been disabled. Please contact an administrator for help.",errWebView$1="You opened this page inside the Zalo/Facebook app, where Google sign-in is not allowed. Tap the three dots in the top right, choose Open in browser, then sign in again.",errUnknown$1="Sign-in failed. The most common cause is stale browser cookies. Try clearing your cookies and signing in again.",errCodeHint$1="Error code: {{code}}",cookieHelpBtn$1="ð How to clear cookies",cookieHelpTitle$1="HOW TO CLEAR COOKIES",cookieHelpStep1$1="Open the page that is failing.",co
524okieHelpStep2$1="Press <b>Ctrl + Shift + Del</b> (the Delete key).",cookieHelpStep3$1="The <b>Delete browsing data</b> panel opens (see image below). Uncheck everything and <b>leave only the second row checked</b>.",cookieHelpStep4$1="At the top right of the panel choose <b>More</b>, then <b>All time</b>. Then click <b>Delete data</b> at the bottom right.",cookieHelpStep5$1="When finished, <b>close Chrome/Cá»c Cá»c completely</b>, then open it again.",cookieHelpImgAlt$1="Screenshot of the Chrome Delete browsing data panel",cookieHelpClose$1="Got it",enLogin={logoText:logoText$1,logoSubtitle:logoSubtitle$1,loginTitle:loginTitle$1,loginDescription:loginDescription$1,loggingInBtn:loggingInBtn$1,loginGoogleBtn:loginGoogleBtn$1,loginNote:loginNote$1,loginFooterText:loginFooterText$1,highlightTools:highlightTools$1,highlightAI:highlightAI$1,highlightSimulation:highlightSimulation$1,highlightClassroom:highlightClassroom$1,highlightFree:highlightFree$1,loginFailed:loginFailed$1,pleaseTryAgain:pleaseTryAgain$1,loginNotePrefix:loginNotePrefix$1,loginNoteTerms:loginNoteTerms$1,loginNoteAnd:loginNoteAnd$1,loginNotePrivacy:loginNotePrivacy$1,loginNoteSuffix:loginNoteSuffix$1,disclaimerCopyright:disclaimerCopyright$1,disclaimerConsent:disclaimerConsent$1,consentCheckboxLabel:consentCheckboxLabel$1,consentRequired:consentRequired$1,disclaimerStudentPhoto:disclaimerStudentPhoto$1,popupHint:popupHint$1,errInvalidCredential:errInvalidCredential$1,errPopupBlocked:errPopupBlocked$1,errPopupClosed:errPopupClosed$1,errCookiesBlocked:errCookiesBlocked$1,errNetwork:errNetwork$1,errTooManyRequests:errTooManyRequests$1,errUserDisabled:errUserDisabled$1,errWebView:errWebView$1,errUnknown:errUnknown$1,errCodeHint:errCodeHint$1,cookieHelpBtn:cookieHelpBtn$1,cookieHelpTitle:cookieHelpTitle$1,cookieHelpStep1:cookieHelpStep1$1,cookieHelpStep2:cookieHelpStep2$1,cookieHelpStep3:cookieHelpStep3$1,cookieHelpStep4:cookieHelpStep4$1,cookieHelpStep5:cookieHelpStep5$1,cookieHelpImgAlt:cookieHelpImgAlt$1,cookieHelpClose:cookieHelpClose$1},page$j={sidebarTitle:"𪢠Knowledge Tug of War",newGame:"Create New Game",myGames:"My Tug of Wars",viewGuideTooltip:"View user guide",guideLabel:"User Guide",guideLabelShort:"Guide",guideTitle:"Tug of War Guide",guideDesc:"Learn how to create Tug of War games for students to compete"},share$7={loadingGame:"Loading Tug of War game...",loadError:"Could not load the game. The link may have expired or been deleted.",notFound:"Game not found",backHome:"Back to Home"},myGames$e={loadListError:"â Error loading game list",deleteConfirm:"Are you sure you want to delete this game?",deleteSuccess:"â
Game deleted",deleteError:"â Error deleting game",loadingList:"â³ Loading game list...",myGamesCount:"𪢠My Games ({{count}})",noGames:"ð No games yet",createFirstGame:"â Create First Game",questionCount:"{{count}} questions",playTest:"Play test",assign:"Assign task",edit:"Edit",delete:"Delete",lockedTip:"Upgrade to unlock this game",extendSubscription:"Renew 30k/year",expiredLabel:"Subscription expired!",downloadOffline:"Download",downloadOfflineUpgrade:"Upgrade to download",downloading:"Downloading...",downloadOfflineError:"â Could not create the download file, please try again",demo:{title:"Tug of War - Demo",badge:"Demo",hint:"Try this demo to experience the game before creating your own"}},teamPlay$1={loading:"Loading...",teamBlue:"Blue Team",teamRed:"Red Team",freeze:"Frozen!",punishment:"Penalty for wrong answer"},form$p={addQuestionSuccess:"â
Added {{count}} questions (Total: {{total}})",updateQuestionSuccess:"â
Question updated",removeQuestionMsg:"ðï¸ Deleted question {{index}}",clearAllConfirm:"Delete all questions?",clearAllSuccess:"ðï¸ Deleted all questions",titleRequired:"â Please enter a game title",minQuestionsRequired:"â Please add at least 5 questions (current: {{count}})",updateGameSuccess:"â
Game updated!",createGameSuccess:"â
New Tug of War game created!",limitReached:"â ï¸ You have used up your free Tug of War quota. Please upgrade to continue.",saveError:"â Error saving game: {{error}}",testRequireQuestions:"â ï¸ Please add questions before testing",untitledGame:"Untitled Tug of War",editGameTitle:"Edit Tug of War",createGameTitle:"Create new Tug of War",trialCount:"ð Used {{current}}/{{limit}} creations",premiumStatus:"â
You are on Premium mode - Unlimited",proStatus:"â
You are on FullGame mode - Unlimited",formTitleLabel:"Game Title:",formTitlePlaceholder:"Enter title...",configSectionTitle:"âï¸ Game Configuration",team1NameLabel:"Team 1 Name:",team2NameLabel:"Team 2 Name:",timeLimitLabel:"Time Limit (seconds):",time30s:"30 seconds",time60s:"60 seconds (Standard)",time90s:"90 seconds",time120s:"120 seconds",time180s:"3 minutes",time300s:"5 minutes",time600s:"10 minutes",time900s:"15 minutes",time1200s:"20 minutes",winDiffLabel:"Point difference to win:",wrongFreezeTimeLabel:"Freeze time for error (seconds):",gameModeLabel:"Game Mode",modeDefault:"Default",modeDefaultDesc:"Each team has its own set of questions, answering independently. The team that reaches the score difference wins.",modeSame:"Same Question Mode",modeSameDesc:"Both teams answer the same question. Correct answer pulls the rope and advances the question. Wrong answer freezes. Win by point difference.",modeTarget:"First to target wins",modeTargetDesc:"Questions repeat infinitely. The first team to reach the target number of correct answers wins immediately.",targetScoreLabel:"Correct answers to win:",noShuffleA:"Do not shuffle answers",noShuffleADesc:"Answers will be displayed in the original order without shuffling",questionOrderLabel:"Question Order",shuffleQDefault:"Shuffle randomly (default)",shuffleQDefaultDesc:"Questions will be shuffled randomly each game",noShuffleQ:"Keep original order",noShuffleQDesc:"Questions will appear in the exact order they were entered in the list",endOnLast:"End game on last question",endOnLastDesc:"When a team finishes the question set, the game ends immediately â the team with the higher score wins",controlModeLabel:"Control Method",controlTouch:"Use touch/click",controlKeyboard:"Use keyboard (Blue: Q W A S - Red: O P K L)",questionsSectionTitle:"â Question Set ({{count}} questions)",clearAllBtn:"ðï¸ Clear all",pickFromBankBtn:"ðï¸ Pick from Bank or AI",manualInputBtn:"âï¸ Manual input",questionsNote:"* Needs at least 5 questions. Questions will repeat if exhausted.",questionListHeader:"Question List",answersCountLbl:"{{count}} answers",editQuestionTooltip:"Edit this question",deleteQuestionTooltip:"Delete this question",noQuestionsLbl:"ð No questions yet",noQuestionsDesc:"Pick from Bank or AI, or use Manual input to start",playTestBtn:"â¶ï¸ Test Play",savingBtn:"ð¾ Saving...",saveBtn:"ð¾ Save Game",selectQuestionsTitle:"Select questions (You can choose as many as you like)",pickFromLessonBtn:"From lesson",lessonPickerTitle:"Select lesson to pick questions",aiAudioHint:"ð Question audio is supported in 'Same Question' mode",noAiAudioHint:"ð Question audio is not supported in this mode",bgmLabel:"
524ðµ Default Background Music",bgmDefault:"Default (Track 4)",bgmTrack:"Track {{n}}",bgmUploadHint:"Students can still change music during the game.",bgmPrivateLabel:"Or upload custom (FullGame):",competitionLabel:"ð® Competition Sport",tugOfWarOption:"𪢠Tug of War",dragonBoatOption:"ð£ Dragon Boat Racing",defaultHint:"Default",newHint:"New",missingLibraryFields:"Please select Grade, Subject and Level to publish to library.",aiAudioWarning:"Select 'Same Question' mode in settings to enable question audio",lessonPickerNoMatch:"No matching questions (skipped {{count}}).",lessonPickerAdded:'Added {{added}} questions from "{{title}}". Skipped {{skipped}} incompatible ones.',lessonPickerAddedOnly:'Added {{added}} questions from "{{title}}".'},player$f={unmute:"ð Unmute",mute:"ð Mute",fullscreen:"â¶ Fullscreen",exit:"Exit",gameOver:"Game Over!",draw:"It's a Draw!",winnerLbl:"Winning Team:",finalScoreLbl:"Score: {{score1}} - {{score2}}",playAgainBtn:"ð Play Again",viewReportBtn:"ð View Report",exitBtn:"â Exit",reportTitle:"ð Result Report",reportDraw:"Draw",reportWinnerBlue:"ð Blue Team Won",reportWinnerRed:"ð Red Team Won",reportWinnerSuffix:"won",reportScoreSuffix:"pts",closeBtn:"â Close",reportTeamBlue:"ðµ Blue Team ({{score}} points)",reportTeamRed:"ð´ Red Team ({{score}} points)",reportEmpty:"No answers yet.",reportQuestionNum:"Q{{index}}",reportChosen:"Chosen:",reportImage:"(image)",reportCorrectHint:"Correct answer:",audioStop:"â¹ï¸ Stop",audioReplay:"ð Replay",assignmentIntro:"Enter team member names before starting",exampleNames:"Example: Alex, Ben, Chris...",startTugCta:"ð© Start Tug of War!",introStartBtn:"Start",introRuleTime:"Match duration: {{seconds}} seconds",introRuleDiff:"First team to lead by {{diff}} points wins instantly",introRuleTarget:"First team to reach {{score}} points wins",introRuleShared:"Both teams answer the same question â first correct answer scores and both advance",introRuleIndep:"Each team has {{count}} questions, answered independently",introRuleFreeze:"Wrong answer freezes your team for {{seconds}} seconds",introRuleKeyboard:"Keyboard controls: Blue Q W A S â Red O P K L",introRuleTouch:"Tap or click an answer to respond"},enTugOfWar={page:page$j,share:share$7,myGames:myGames$e,teamPlay:teamPlay$1,form:form$p,player:player$f},sidebar$9={title:"Interactive Video",upgradePro:"Get FullGame",upgradeProTitle:"Get FullGame to unlock limits",createNew:"Create new video",myLessons:"My lessons",allowSeeking:"Allow video seeking",saving:"Saving...",update:"Update",saveLesson:"Save lesson",preview:"Preview",guide:"Guide",guideTitle:"View usage guide",guideUsage:"Usage guide",trialUsed:"Used",trialLimit:"times",unlimited:"Unlimited"},helpModal$1={title:"Interactive Video Guide",description:"Learn how to create and manage interactive videos with quiz questions"},myLessons$3={title:"My Videos",subtitle:"Manage your interactive videos",emptyTitle:"No videos yet",emptyHint:'Click "Create new video" from the left menu to get started!',questionCount:"questions",updatedAt:"Updated:",startFrom:"Starts at:",viewOriginal:"View original video",confirmDelete:"Are you sure you want to delete this video?",deleteSuccess:"Video deleted successfully",deleteFail:"Cannot delete video",loadFail:"Cannot load video list",localVideoWarning:"Uploaded videos can only be viewed on the original computer and cannot be assigned",btnView:"View video",btnEdit:"Edit",btnAssign:"Assign to students",btnDelete:"Delete",defaultTitle:"Interactive video",demo:{title:"Interactive Video - Demo",badge:"Demo",hint:"Try the interactive video to see how it works before creating your own"},localVideoShareWarning:"Only lessons using YouTube can be shared. Lessons with local video cannot be shared.",createFirstBtn:"Create your first video"},quizForm={titlePlaceholder:"Enter video name...",noTitle:"Untitled â click to edit",youtubeHint:"Use YouTube link",localHint:"Upload video from device",youtubeUrlPlaceholder:"Paste YouTube link hereâ¦",localModeHint:"Currently in local video upload mode",localReady:"Video uploaded",localChangeFile:"Change file",localMissing:`Video is no longer in cache, 525please re-upload`,localPrompt:"Click to select video file",localPromptSub:"MP4, WebM, MOV⦠â
525stored on this device only",localInfoBanner:"Uploaded videos can only be used on this computer. Cannot be assigned to students.",ytPlaceholder:"Enter a YouTube link to preview",localPlaceholder:"Select a video file to preview",playerLoading:"Loadingâ¦",addAtTime:"Add at",panelTitle:"Timeline events",noQuestions:"No questions yet",noQuestionsHint:"Play video â click on timeline â press the add button",errorNoUrl:"Please enter a YouTube link",errorNoFile:"Please select a video file",errorIncomplete:"Please fill in all information for every question",saveSuccess:"Video saved successfully!",updateSuccess:"Video updated successfully!",limitReached:"You have used all your free Video sessions.",saveFail:"Cannot save video. Please try again.",copiedLink:"Link copied!",saveLinkFirst:"Please save the video first!",indexedDbFail:"Cannot save video to cache. Your browser may not support it.",minLessons:"There must be at least one question!",modalAddTitle:"+ Add new question",modalEditTitle:"Edit question",modalManual:"Enter manually",modalBank:"Choose from Bank or AI",modalAI:"Generate with AI",modalBankHint:"Select a question from the Question Bank or generate with AI, then review and save.",modalOpenBank:"Open Question Bank / AI",modalCancel:"Cancel",modalSave:"Save question",importedFromBank:"Question imported from Bank. Review then click Save.",questionPickerTitle:"Select question for Interactive Video",modalOpenLesson:"From existing lesson",lessonPickerTitle:"Select a lesson to get questions from",lessonPickerNoMatch:"No matching questions.",upgradeTitle:"Upgrade Account",upgradeMsg1:"You have used all 5 free Interactive Video sessions.",upgradeMsg2:"Upgrade to use without limits.",upgradePrice:"50,000 VND â one-time purchase, use forever",upgradeBankInfo:"BIDV: 8611283666 â HO KINH DOANH BAN VAN THINH",upgradeTransferNote:"Note: VIDEO",upgradeWarning:"After transfer:",upgradeUnderstood:"Got it"},quizOverlay={question:"Question",rewind:"Rewatch video",correct:"Correct! Well done!",incorrect:"Try again!"},videoPlayer={back:"Go back",backEditor:"Back to editor",notFoundTitle:"Video not found",notFoundMsg:"Uploaded videos can only be viewed on the original computer. The cache (IndexedDB) was cleared or you are using a different device.",notFoundHint:"Go back to re-upload the video on this device.",loading:"Loading video from cacheâ¦"},quizEntry={question:"Question",answer:"Answer",timeClick:"Click to edit time",noContent:"No content yet",questionPlaceholder:"Enter question... (supports math formulas)"},lockedTip$6="Renew to unlock this lesson",enInteractiveVideo={sidebar:sidebar$9,helpModal:helpModal$1,myLessons:myLessons$3,quizForm,quizOverlay,videoPlayer,quizEntry,lockedTip:lockedTip$6},hero$4={title:"ð° Pricing",sub:"Free trial available â pay only when you need more. No hidden fees."},proPlan$1={title:"FullGame PLAN â Unlock All",badge:"Most Popular",price:"200,000â«",unit:"/ year",description:"Unlock all features, including AI Tools & AI Specialist",features:["Upload audio and record voice into lesson content","Receive detailed reports on each student's progress","Unlimited use of all interactive teaching tools","Store lessons forever","AI tools sold separately at 30,000â« per tool â not included in FullGame PLAN"]},singularFeatures$1={title:"Individual Feature Purchase",price:"30,000â«",unit:"/ year / feature",line1:"Each feature can be bought individually for 30,000â«/year.",line2:"Transfer 60,000â« = 2 years, 90,000â« = 3 years â calculated automatically.",list:["Individual features (Crossword, Tug of War, Paced Quiz, etc.)"]},extendedLink$1={title:"Extended Assignment Link (Lifetime Storage)",price:"100,000â«",unit:"/ 1 year",description:"For teachers needing long-term validity for research, certifications, or extended projects.",features:["Assignment links valid for up to 1 year instead of the default 30 days","Applicable to all games that support assignments"]},aiTools$1={title:"In-Depth AI Toolkit",group1Title:"Buy tools individually",group1Price:"30,000â«",group1Unit:"/ tool / lifetime",group2Title:"Bundle multiple tools",group2Price:"Up to 20% off",group2Unit:"",group3Title:"Included with FullGame PLAN",group3Price:"2 tools",group3Unit:"free",line1:"One-time payment, use forever.",noteLabel:"Note:",line2:"The more tools you bundle, the bigger the discount (2% more per extra tool, up to 20%). FullGame PLAN includes the first 2 tools for free.",features:["14 in-depth AI tools for teachers â from lesson planning to test generation","30,000â«/tool individually, or bundle for a discount","Unlocked forever â unlimited use"]},freeTrial$1={title:"Free Trial",intro:"New accounts can try all interactive features for <0>free</0> with a 05 missions/feature limit. AI Specialist and AI Tools are not eligible for trialâplease watch the tutorial videos before upgrading.",table:{feature:"Feature",limit:"Trial Limit"},note:"Items created during trial are kept and accessible after expiration."},multiYear$1={title:"Multi-Year Discounts",intro:"Applies to <0>FullGame PLAN</0> and <2>individual features</2> for 2+ year registrations:",table:{years:"Years",discount:"Discount"},yearUnit_one:"1 year",yearUnit_other:"{{count}} years",noDiscount:"No discount",discountValue:"{{percent}}% OFF",note:"Discount applied before manual coupon codes."}
525,notes$1={title:"ð Notes:",item1:"Payment via <0>bank transfer</0> (via auto-generated QR in-app).",item2:"Automatic upgrade after confirmation â usually within minutes.",item3:"For support, contact Zalo <0>{{phone}}</0>."},cta$1={title:"Start Today",sub:"Try for free â upgrade anytime within the app.",btn:"Contact Zalo for consultation"},enPricing={hero:hero$4,proPlan:proPlan$1,singularFeatures:singularFeatures$1,extendedLink:extendedLink$1,aiTools:aiTools$1,freeTrial:freeTrial$1,multiYear:multiYear$1,notes:notes$1,cta:cta$1},shipping$1={hero:{title:"Shipping & Fulfillment Policy",sub:"Guide for digital service activation process on <1>{{url}}</1>",lastUpdated:"Last updated: {{date}}"},digitalNote:{title:"ð¦ Important Note:",content:"<1>{{name}}</1> is a platform providing <1>software as a service (SaaS)</1>. We <1>do not ship physical goods</1>. All products/services are provided entirely online via user accounts."},ordering:{title:"1. Ordering & Transaction Confirmation Process",intro:"To upgrade your account, follow these steps:",steps:[{title:"Login",desc:"Login to your account at giaoviendoimoi.com using Google"},{title:"Select Plan",desc:"Select the appropriate upgrade package (FullGame, AI Tools, Individual features...)"},{title:"Payment",desc:"Bank transfer via the QR code provided on the upgrade page"},{title:"Activation",desc:"System automatically confirms and activates the service"}]},activation:{title:"2. Service Activation Time",intro:"After successful payment, the service will be activated according to the following timeframes:",timeline:[{title:"Automatic Activation â Under 5 minutes",desc:"When paying via <1>VietQR (BIDV)</1> with the correct transfer content. The SePay system automatically confirms and updates the account immediately, without manual approval."},{title:"Within 2â4 business hours",desc:"In case the system hasn't automatically confirmed, we will verify and activate manually during business hours (8:00â22:00 daily)."},{title:"Maximum 24 hours",desc:"In case of payment outside business hours or if additional verification is needed. If activation exceeds 24 hours, please contact support via Zalo or email."}]},scope:{title:"3. Service Availability",items:["Services are provided online, no geographical limits â accessible from anywhere","Requires only an internet-connected device and a web browser (Chrome, Edge, Firefox, Safari)","No software installation required (except Offline package)","Compatible with PC, tablets, and smartphones"]},confirmation:{title:"4. Transaction Confirmation",intro:"After the transaction is completed and activated successfully:",items:["Account status will update immediately on the website interface (top right corner)","All purchased features will be unlocked and ready for use","Service package information and expiration date displayed in account management","Users can contact via email or Zalo to request a written confirmation if needed"]},refund:{title:"5. Refund Policy",intro:"Due to the nature of <1>digital services</1> (instant activation after payment), the refund policy is as follows:",validCases:{title:"â
Cases eligible for refund:",items:["Service does not perform as described within 7 days after activation","Duplicate payments (paying twice for the same package)","Incorrect package activated due to system error"]},warning:"<1>â ï¸ Note:</1> We <1>do not offer refunds</1> if the user changes their mind after using the service, or if the account is terminated for violating Terms of Service. Please read service descriptions carefully before paying.",requestInfo:"To request a refund, please contact via email <1>{{email}}</1> within <1>7 days</1> of payment, including proof of transaction."}
525,technicalSupport:{title:"6. Post-Activation Technical Support",items:["Zalo Support: 0363 357 745 â response within business hours (8:00â22:00)","Email Support: [email protected] â response within 2â3 business days","Usage guides via official YouTube and TikTok channels","Facebook and Zalo community support groups for teachers"]},relatedLinks:{label:"ð Related Documents:",privacy:"ð Privacy Policy",terms:"ð Terms of Service",about:"ð¤ Owner Information"},contact:{title:"Contact Support",sub:"If you haven't received your service within the specified time, or need transaction support, please contact us immediately:",note:"Or contact Zalo: <1>{{phone}}</1> for faster assistance."},footer:{copyright:"© {{year}} {{name}}. All rights reserved.",privacy:"Privacy Policy",terms:"Terms"}},privacy$1={hero:{title:"Privacy Policy",sub:"Commitment from <1>{{name}}</1> to protecting your privacy and personal data.",lastUpdated:"Last updated: {{date}}"},intro:{p1:"Welcome to <1>{{name}}</1> (giaoviendoimoi.com) â a platform supporting teachers in creating interactive lessons, educational games, and efficient classroom management. We understand that your privacy is extremely important. This policy explains clearly how we
525collect, use, store, and protect your information.",summary:{title:"ð Quick Summary:",content:"We collect only the minimum information needed to operate the service. We <1>do not sell</1>, do not share without authorization, and do not use your data for third-party advertising. For student photos and names entered by teachers, see <1>Section 10</1>."}},section1:{title:"1. Information We Collect",sub1:"1.1. Google Sign-In",p1:"When you log in with your Google account via Firebase Authentication, we only receive the following information:",items1:["Email Address â used for identification and communication if needed","Display Name â used to personalize the interface","Profile Picture â public image URL from your Google account"],scopes:{title:"Scopes (Permissions):",pre:"We only request basic scopes (",mid:"). We do",not:"NOT",post:"request access to Gmail, Google Drive, Contacts, or any other sensitive data."},sub2:"1.2. Student data",p2:"Students have <1>no accounts</1> and never register themselves. There are two distinct data flows: (a) students joining via PIN code â processed <1>anonymously</1>, storing only a self-chosen nickname and activity scores; (b) class rosters <1>entered by the teacher</1> â which may include full names and portrait photos. Flow (b) is personal data and is governed separately in Section 10.",sub3:"1.3. Usage Data",p3:"We may record technical information such as: browser type, IP address, access time for performance analysis and service improvement. This data is not used for personal identification."},section2:{title:"2. How We Use Information",items:["Identifying and granting account access","Storing quizzes, wheels, games, and teaching content you create","Tracking game history and learning progress (anonymous data)","Managing service packages and account payment history","Sending important technical notifications related to your account","Improving and developing new platform features"]},section3:{title:"3. Data Storage & Security",sub1:"3.1. Data Storage Location",p1:"All user data is securely stored on <1>Google Firebase</1> infrastructure (Firestore, Authentication, Storage) â complying with ISO 27001 and SOC 2/3 standards.",items1:["Quizzes and teaching content you create","Game history and class activity results","Learning progress (anonymous data of students joining by PIN)","Class rosters entered by the teacher: student names and portrait photos (if the teacher uses them)","Subscription plan and expiry information"],sub2:"3.2. Security Measures",items2:["Data encrypted in transit via HTTPS/TLS","Role-based access control (teachers can only see their own data)","Student photos stored in each accountâs private area; security rules block access from any other account","Multi-layer authentication through Firebase Authentication","Regular backups under Google Firebase policy"],warning:"<1>â ï¸ Note:</1> Despite implementing best security measures, no system can guarantee 100% absolute safety. Please secure your Google account."},section4:{title:"4. Payments & Account Upgrades",p1:"Upgrading to a FullGame account is processed via bank transfer (<1>VietQR</1>) or Buy Me a Coffee for international users.",commitment:{title:"ð Payment Commitment:",content:"Our system <1>DOES NOT</1> store any credit card, debit card, or bank account information. Bank transfers are made directly through your banking app, or via Buy Me a Coffee."},items:["Only store service package status (Free/FullGame) and renewal dates","Transfer reference note (matching code) used to confirm payment","Payment history for customer support when needed"]},section5:{title:'5. Our Three "NO" Commitments',commits:[{title:"NO selling data",desc:"We never sell, rent or trade your personal information to any third party for commercial purposes."},{title:"NO email spam",desc:"Email is used only for authentication and important technical notices. No junk marketing email."},{title:"NO use of student photos",desc:"Student photos and names are never used for advertising, AI training, or any purpose beyond showing them back to that same teacher."}]},section6:{title:"6. Sharing Information with Third Parties",p1:"We share information only with the following partners in order to operate the service. Student photos and names are <1>never shared</1>
525 with any partner beyond the Google Firebase storage infrastructure.",table:{partner:"Partner",purpose:"Purpose",data:"Shared Data",rows:[["Google Firebase","Storage & authentication","Teacher email, name, avatar; student photos/names (storage only, no other use)"],["Bank / Buy Me a Coffee","Payment processing","Name, email (for invoices)"],["Google Analytics","Anonymous performance analytics","Anonymous data (excludes student photos/names)"]]}},section7:{title:"7. Your Rights",items:["Right of access: See the personal information we store about you","Right to rectification: Correct inaccurate personal information","Right to erasure: Request deletion of all your account data","Right to withdraw consent: Revoke Google OAuth access at any time","Right to data portability: Receive a copy of your data in a readable format","Rights of parents/students: Request access to, correction of, or deletion of student photos and information (see Section 10)"],requestInfo:"To exercise any rights, please contact us via email <1>{{email}}</1>. We will process within <1>7 business days</1>."},section8:{title:"8. Cookies & Tracking Technology",items:["Required Cookies: Maintaining login sessions (necessary for service operation)","Optional Cookies: Saving interface settings like language, theme","Analytics: Analyzing anonymous traffic to improve performance"],p1:"You can delete cookies anytime in your browser settings. However, disabling required cookies may affect login functionality."},section9:{title:"9. Protection of Children",p1:"The service is intended to be used by <1>teachers</1>. Students have no accounts of their own and never register on the platform themselves.",sub1:"Students joining by PIN code",p2:"No registration, no email, no personal information required. Students only enter a nickname they choose themselves, shown on the leaderboard. We recommend teachers instruct students not to use their full name as a nickname.",sub2:"Class rosters entered by teachers",p3:"Some features (attendance, random name picking, group splitting) require the teacher to enter a class roster, optionally with student portrait photos. This is childrenâs personal data and is governed in detail in Section 10."},section10:{title:"11. Policy Changes",p1:"Important changes will be notified via:",items:["Prominent notices on the website at least 30 days before taking effect","Notification emails sent to the registered address (for major changes)",'Updating the "Last updated" date at the top of this page'],p2:"Continued use of the service after policy changes take effect constitutes your agreement to those changes."},sectionExt:{title:"12. Chrome Extensions (School Database Comment Tool & Professional Standards Evaluation)",p1:'The Chrome extensions developed by Giáo viên Äá»i má»i â including "Nháºn xét môn há»c, há»c bạ VnEdu, CSDL ngà nh GD" and "Äánh giá chuẩn nghá» nghiá»p giáo viên" (Teacher Professional Standards Evaluation) â collect and process the following information:',items:["Your Google name and email address â used to verify your account and subscription status","Subscription status (active / expired) â cached locally in the browser for up to 12 hours","The extension does NOT collect, store, or transmit any student data or page content to any server","The extension only runs on the software page when you actively click a button â it does not run in the background"],note:"Authentication data is sent over HTTPS to Google OAuth 2.0 and our secure Cloud Function for subscription verification. No data is shared with third parties."},section11:{title:"13. Contact & Data Deletion Requests",sub:"If you have questions about the privacy policy, or wish to request full account data deletion, please contact us:",note:'Specify subject: "Data Deletion Request" and the registered email. We will process within <1>7 business days</1>.'},footer:{copyright:"© {{year}} {{name}}. All rights reserved.",login:"Login"},sectionPhotos:{title:"10. Student Photos & Information Entered by Teachers",p1:"Some features let a teacher build a class roster with student names and portrait photos, for activities such as attendance, random name picking and group splitting. This is optional â the platform is fully usable without uploading any photo.",warning:"<1>â ï¸ Student portrait photos are sensitive personal data.</1> For students under 16, processing requires the consent of a parent or legal guardian under applicable personal data protection law.",sub1:"10.1. Roles of each party & legal basis",p2:"The teacher (or school) decides to collect and use student photos and is responsible for obtaining consent from parents or legal guardians. The platform acts only as storage, displaying the photos back at that teacherâs request. Before the first upload for a class, the system requires the teacher to confirm that such consent exists;
525 that confirmation is recorded per class with a timestamp.",sub2:"10.2. Who can see the photos",items2:["Only the teacher account that uploaded them â security rules block every other account","Photos never appear in activities where students join by PIN code","Photos are not published publicly and are not indexed by search engines","Operations staff access them only for requested technical support or where required by law"],sub3:"10.3. What we do NOT do with student photos",items3:["Never used for advertising or marketing of any kind","Never used to train artificial intelligence models","Never sold, rented, traded or shared with third parties","No facial recognition to identify students beyond that teacherâs own classroom"],sub4:"10.4. Retention period & right to erasure",p4:"Photos are kept until the teacher deletes them, or until the account is deleted. In the class management page a teacher can delete individual photos or all photos of a class at any time â deletion is permanent. We recommend deleting photos at the end of the school year or when they are no longer needed for teaching. When an account is deleted on request, all photos and rosters are deleted with it.",parentRights:"Parents, legal guardians or the students themselves may request access to, correction of, or deletion of photos and related information. Please contact the class teacher first â they can delete them immediately in the app. If that is not possible, email <1>{{email}}</1> and we will respond within <1>7 working days</1>."}},terms$1={hero:{title:"Terms of Service",sub:"Please read carefully before using the services of <1>{{name}}</1> ({{url}}).",lastUpdated:"Last updated: {{date}}"},intro:{p1:'These Terms of Service ("Terms") are a legal agreement between you ("User") and <1>{{name}}</1> ("we", "us", or "our") governing access to and use of the platform at <3>{{url}}</3>. By registering, logging in, or using any features of the service, you acknowledge that you have read, understood, and <5>agree</5> to be bound by these Terms.',summary:{title:"ð Scope of Application:",content:"These Terms apply to all users who register an account, including teachers, educators, and anyone using the service. Students participating via PIN (anonymously) are not bound by these Terms."}},section1:{title:"1. Age & Acceptance of Terms",teacher:{title:"For Teachers (Account creators and classroom managers)",content:"You must be <1>at least 18 years old</1> to register an account, use the services, and perform account upgrades (if applicable). By logging in with Google Sign-In, you confirm that you have read, understood, and <3>fully agree</3> to all Terms of Service and our <5>Privacy Policy</5>."},student:{title:"For Students (Participants)",content:"There is <b>no minimum age limit</b> when students participate in games, tests (such as Tug of War, Head Tilt Quiz, etc.) via a <b>room PIN</b> or <b>shared link</b>. However, students using the platform must be under the <b>guidance, supervision, and consent</b> of the classroom Teacher or Parent/Legal Guardian."},note:"ð¡ Note: These Terms may be updated. Continued use of the service after changes constitutes acceptance of the latest version. If you do not agree, please stop using the service and contact us to delete your account."},section2:{title:"2. Right to Use Service",intro:"We provide two types of accounts with different privileges:",plans:[{title:"Trial Account",items:["Access basic features with limitations","Create a limited amount of content per month","Support via documentation","Can upgrade to FullGame anytime"]},{badge:"â FullGame",title:"FullGame / Premium Account",items:["Access all features without limits","Create and store unlimited content","Priority technical support","Receive new features earliest"]}],sub1:"2.1. Intellectual Property & Usage Limits",p1:"All source code, interface design, game algorithms, and platform content are the intellectual property of <1>{{name}}</1>, protected under Vietnamese law and international copyright conventions.",ipWarning:{title:"ð« Copyright and Intellectual Property",content:"All interface designs (UI/UX), graphics, effects, and source code of tools on the platform (including <1>Tug of War, Head Tilt Quiz, Crossword</1>...) are owned by <3>giaoviendoimoi.com</3>. Users <5>are not permitted</5> to use software tools to extract, reverse engineer, or directly copy source code or steal graphic resources of the platform for commercial purposes.",exception:"Permitted Exception: Being inspired to program similar game mechanics <1>is not considered a violation</1> of this term."},sub2:"2.2. Content You Create",p2:"You retain ownership of the <1>question content, exercises, and teaching materials</1> you create on the platform. By uploading or creating content, you grant us the right to store and display that content to provide the service to you."},section3:{title:"3. User Responsibilities",sub1:"3.1. Content Responsibility",p1:"Teachers and users <1>assume full responsibility</1> for the accuracy, correctness, and legality of all question content, exercises, and teaching materials created or shared on the platform.",items1:["Ensure content is appropriate for the educational program and student age","Responsible for copyright of images, sounds, and texts used","Do not use the service for unauthorized commercial purposes"],sub2:"3.2. Prohibited Content",prohibits:[{title:"Legal Violations",desc:"Content that violates Vietnamese law and international treaties."},{title:"18+ Content",desc:"Pornography, violence, content inappropriate for students."},{title:"Hate Speech",desc:"Discrimination based on ethnicity, religion, gender."},{title:"Spam & Advertising",desc:"Using the platform to spread unauthorized advertising or spam."}],sub3:"3.3. Account Security",items3:["You are responsible for the security of your login information and Google account.","Do not share accounts with others or allow multiple people to use a single account.","Notify us immediately if unauthorized access to your account is detected."],sub4:"3.4. Uploaded Content Copyright & Safe Harbor Mechanism",p4:"Users are <1>solely responsible</1> for the copyright of all images, audio, video, and data files uploaded to the system. The platform acts as a <3>
525hosting intermediary</3> and does not pre-screen content before publication.",safeHarbor:{title:"ð¡ï¸ Copyright Complaint & Takedown Mechanism (Safe Harbor)",intro:"In accordance with Vietnamese Intellectual Property Law (Article 198b) on the liability of hosting intermediaries, the platform follows a 5-step process to receive and handle copyright complaints:",steps:["Step 1 â Receive the infringement report: The rights holder (or authorized representative) sends a complaint to the copyright email below, including: (a) identification of the infringing content and its specific link on the platform, (b) evidence of lawful ownership, (c) the complainant's contact information, and (d) a good-faith statement as to the accuracy of the complaint. The platform acknowledges receipt within 24 business hours","Step 2 â Provisional takedown: If the complaint contains sufficient valid initial information, the platform will proactively hide (remove from public view) the reported content within 48 business hours of acknowledgment, to prevent further harm while the matter is being verified","Step 3 â Verification: The platform reviews evidence from both sides â notifying the user who uploaded the content about the complaint, and allowing that user to submit a counter-notice with supporting evidence within 7 business days of being notified","Step 4 â Decision: Based on the verification outcome, the platform issues one of two decisions: (a) if the complaint is confirmed valid, or the user fails to provide a valid response within the deadline â the content is permanently removed; (b) if the user proves lawful ownership or right of use â the content is restored and the complaint is dismissed","Step 5 â Permanent removal & account action: For content confirmed to be infringing, the platform permanently deletes it from the system (including backups, to the extent technically feasible) and may take action against the violating account (warning, suspension, or termination) according to the severity and frequency of violations as set out in these Terms"],contactLabel:"Copyright complaint channel:",contactNote:'Email subject: "Copyright Complaint" + name of infringing content. Please attach valid proof of ownership.',legalNote:"âï¸ Legal basis: This mechanism is established in accordance with Vietnamese Intellectual Property Law (amended 2022) on the liability of hosting intermediaries. By promptly handling valid complaints, the platform is exempt from liability for damages related to user-uploaded content."},sub5:"3.5. Student Photos & Information",p5:"When uploading portrait photos or entering student names, you confirm that you are the party <1>deciding on the collection and use</1> of that data, and that you <1>have obtained consent</1> from a parent or legal guardian for students under 16. The platform acts solely as storage, displaying the data back at your request.",items5:["You are responsible for obtaining and retaining parental/guardian consent, in line with your schoolâs rules and applicable law","Use photos only for teaching activities in that class â never published publicly, never shared beyond the class, never for commercial purposes","Delete photos as soon as consent is withdrawn, when a student changes class/school, or when no longer needed for teaching","Do not upload photos of anyone outside the class you are responsible for","Forward to us any parent request you cannot handle yourself within the app"],photoNote:"â ï¸ Childrenâs portrait photos are sensitive personal data. Breaching the commitments above may lead to account suspension, and you bear any resulting legal liability. How we store and protect this data is described in Section 10 of the Privacy Policy."},section4:{title:"4. Limitation of Liability",p1:"<1>{{name}}</1> is committed to making every effort to ensure the platform operates stably, safely, and continuously. However, we <3>cannot guarantee</3> that the service will always be 100% available and assume no legal responsibility in the following cases:",items:["Service interruption due to technical issues from Google Firebase (hosting server)","Interruption due to internet connection issues from the user or service provider","Loss or corruption of data due to natural disasters, cyber attacks, or force majeure events","Indirect damages arising from the use or inability to use the service"],recommendation:"â ï¸ Recommendation: For important teaching content, you should backup periodically by exp
525orting data to local files. We perform periodic system backups but do not commit to full recovery in all cases.",sub1:"4.1. Third-Party Services",p2:"The platform integrates third-party services (Google Firebase, Google AI, Buy Me a Coffee, etc.). We are not responsible for interruptions, policy changes, or issues from these third-party service providers.",sub2:"4.2. Compensation Limit",p3:"To the maximum extent permitted by law, our liability for any claim shall not exceed the amount you paid for the service in the <1>last 3 months</1>."},section5:{title:"5. Payment & Refunds",items:["FullGame service fees are charged periodically (monthly/annually) and automatically renew unless canceled.","Service prices may change and will be notified at least 30 days in advance.","Refunds: We support refunds within 7 days of payment if the service does not function as committed.","Violation of Terms leading to account termination will not be refunded."]},section6:{title:"6. Account Termination",p1:"We reserve the right to <1>suspend or terminate</1> your account without prior notice in cases of:",items:["Violation of one or more terms in this agreement","Fraudulent activity, service abuse, or harm to other users","Accounts inactive for a long period (more than 24 months)","Requests from competent legal authorities"],p2:"You can request account deletion anytime by contacting us via email. After deletion, data will be removed from the system within <1>30 business days</1>."},section7:{title:"7. Modification of Terms",p1:"<1>{{name}}</1> reserves the right to update or modify these Terms of Service at any time to reflect service changes, legal requirements, or operational policies. Notification will be made via:",items:["Prominent notices on the website at least 30 days before new terms take effect","Notification emails sent to the registered address (for important changes)",'Updating the "Last updated" date at the top of this page'],note:"After the notification period, continued use of the service constitutes <1>acceptance of the latest version of the Terms</1>. If you do not agree, you have the right to request account deletion before the new terms take effect."},section8:{title:"8. Governing Law & Dispute Resolution",p1:"These Terms are governed by <1>the laws of the Socialist Republic of Vietnam</1>. Any disputes arising from or related to these Terms will be resolved through the following process:",items:["Priority: Direct negotiation between parties within 30 days","If no agreement reached: Mediation or arbitration as per legal regulations","Final Option: Lawsuit at a competent People's Court in Vietnam"]},relatedLinks:{label:"ð Related Documents â See our Privacy Policy for more information:",privacy:"ð Privacy Policy â"},contact:{title:"Contact & Support",sub:"If you have questions about the Terms of Service, want to report a violation, or need support with account deletion, please contact us:",note:"We will respond within <1>2â3 business days</1>."},footer:{copyright:"© {{year}} {{name}}. All rights reserved.",privacy:"Privacy Policy",login:"Login"}},enLegal={shipping:shipping$1,privacy:privacy$1,terms:terms$1},hero$3={title:"Owner Information",sub:"Information about the owner and operator of the website <1>{{url}}</1>",lastUpdated:"Last updated: {{date}}"},ownerInfo$1={title:"Owner Information",labelName:"Full name of owner",labelDob:"Year of birth",labelNationality:"Nationality",nationalityValue:"Vietnam",labelAddress:"Address",labelEmail:"Contact Email",labelPhone:"Phone / Zalo",labelTax:"Tax Identification Number",labelType:"Business Type",typeValue:"Online Individual Merchant (no legal entity)"},websiteInfo$1={title:"Website Information",labelName:"Website Name",labelDomain:"Domain Address",labelField:"Field of Activity",fieldValue:"Providing online educational software/tools (EdTech)",labelAudience:"Target Audience",audienceValue:"Teachers, educators in Vietnam and internationally",labelLang:"Primary Language",langValue:"Vietnamese",labelServer:"Hosting Server",serverValue:"Google Firebase (Google LLC, USA)"},mission$1={title:"Mission & Introduction",p1:"<1>{{name}}</1> is an EdTech platform built by a teacher with the desire to bring creative, modern, and user-friendly teaching tools to the Vietnamese teacher community.",p2:"We believe technology can make learning more exciting, and every teacher deserves professional tools to create memorable lessons.",cards:[{title:"Artificial Intelligence",desc:"Integrated AI to assist in lesson planning, question generation, and personalized learning"},{title:"Gamification",desc:"Turning lessons into interactive games that stimulate student engagement"},{title:"Progress Tracking",desc:"Assessment and real-time tracking of student progress"},{title:"Easy Access",desc:"Students participate without needing an account, just a PIN or shareable link"}]},channels$1={title:"Official Channels",intro:"Official social media channels for <1>{{name}}</1>:"},relatedLinks$1={label:"ð Related Documents:",privacy:"ð Privacy Policy",terms:"ð Terms of Service",shipping:"ð Shipping Policy"}
525,contact$1={title:"Direct Contact",sub:"For any inquiries, complaints, or cooperation proposals, please contact:",note:"Responses within <1>2â3 business days</1>. Or contact Zalo: <1>{{phone}}</1>"},footer$3={copyright:"© {{year}} {{name}}. All rights reserved.",privacy:"Privacy Policy",terms:"Terms"},enAbout={hero:hero$3,ownerInfo:ownerInfo$1,websiteInfo:websiteInfo$1,mission:mission$1,channels:channels$1,relatedLinks:relatedLinks$1,contact:contact$1,footer:footer$3},page$i={alert:{onlyImage:"Only image files are allowed (jpg, png, webp, gif...)",imageTooLarge:"Image is too large. Please select an image under 10MB."},error:{uploadFailed:"Error uploading image: ",emptyTitle:"Please enter a title",emptyImage:"Please upload a background image",limitReached:"You have reached your free creation limit. Please upgrade your account.",saveFailed:"Error saving: ",loadFailed:"Could not load image list. Please try again.",deleteFailed:"Error deleting: ",shareFailed:"Error creating share link: ",unshareFailed:"Error: ",lockedTip:"Renew to unlock this image",notFound:"Interactive image not found",invalidLink:"Share link is invalid or has been deleted.",libraryCategoryRequired:"Please select Grade level, Subject, and Class grade before publishing to the Community Library."},confirm:{delete:'Delete "{{title}}"?'},sidebar:{title:"ð¼ï¸ Interactive Image",upgrade:"Individual Upgrade",upgradeHint:"Upgrade to unlock limits",create:"Create interactive image",createBinocular:"Create binocular image",myImages:"My images"},create:{title:"â Create New Interactive Image",section1:{title:"ð Basic Information"},titleLabel:"Title",titlePlaceholder:"e.g., Plant Cell Structure",modeLabel:"ð® Lesson Mode",modeQuiz:"Quiz",modeQuizDesc:"Multiple choice, fill in the blank",modeWorksheet:"Worksheet",modeWorksheetDesc:"Students fill out the worksheet",maxScoreLabel:"
525ð Maximum Score",scoreUnit:"points",scoreHintEmpty:"Divided equally among markers",scoreHintFilled:"â {{points}} points/question ({{count}} questions)",section2:{title:"ð¼ï¸ Background Image"},uploading:"Uploading image...",clickToUpload:"Click to select image",uploadHint:"Supports JPG, PNG, WebP, GIF (max 10MB)",replaceImage:"ð Replace image",section3:{title:"ð Markers"},cancel:"Cancel",saving:"â³ Saving...",saveButton:"ð¾ Save Interactive Image"},edit:{back:"â Back",title:"âï¸ Edit: {{title}}",titleLabel:"Title",modeLabel:"ð® Lesson Mode",modeWarning:"â ï¸ Changing mode will delete all current markers.",imageLabel:"Background Image",uploading:"â³ Uploading...",replaceBtn:"ð Change image",replaceWarning:"Changing image will reset old markers' coordinates on the new image",markersLabel:"ð Markers",cancel:"Cancel",saving:"â³ Saving...",saveBtn:"ð¾ Save Changes"},preview:{back:"â Back",title:"ðï¸ Preview: {{title}}",maxScore:"ð Maximum Score",scoreUnit:"points",exitFullscreen:"Exit fullscreen",enterFullscreen:"Enter fullscreen",exitFullscreenBtn:"â Exit fullscreen",enterFullscreenBtn:"Fullscreen â¶"},list:{subBannerTrial:"ð Used {{current}}/{{limit}} Interactive Image creations",subBannerPro:"â
{{mode}} Mode â Unlimited",title:"ð¼ï¸ My Images ({{count}})",createBtn:"+ Create New",loading:"Loading...",emptyTitle:"No interactive images yet",emptySubtitle:"Create your first image to get started!",emptyCreateBtn:"+ Create Interactive Image",demo:{title:"Interactive Image - Demo",badge:"Demo",hint:"Try the interactive image to see all 4 hotspot types before creating your own"}},card:{modeWorksheet:"Worksheet",modeQuiz:"Quiz",markersCount:"{{count}} markers",isShared:"Sharing",viewBtn:"View",editBtn:"Edit",unshareBtn:"ð Stop sharing",shareBtn:"ð Share",deleteBtn:"Delete"},share:{loading:"Loading interactive image...",btnHome:"Back to Home",playerSubtitle:"Interactive Image â Click on markers to explore",legendTitle:"ð Marker Legend:",legendInfo:"Information",legendQuiz:"Multiple Choice",legendFill:"Fill in the Blank",legendWorksheet:"Worksheet"}},editor$4={instruction:"Click anywhere on the image to add a Marker. Currently ",count:" markers.",markerTooltip:"Click to edit: {{title}}",markerDeleteTooltip:"Delete marker",empty:"No markers yet. Click on the image to get started!",confirmDelete:"Delete this marker?"},player$e={empty:"No image",score:{label:"ð Score",sub:"({{correct}}/{{total}} correct · {{remaining}})",remaining:"{{count}} remaining",completed:"completed!"},markerViewAgain:"Click to view again",canvasEmptyMarker:"(Image has no markers)"},markerModal={type:{info:"Information",quiz_mc:"Multiple Choice",quiz_fill:"Fill in the Blank",open_input:"Worksheet"},frozen:{locked:"ð Answered",correctTitle:"You answered correctly!",wrongTitle:"You answered incorrectly.",lockedSub:"This question is locked â cannot be answered again."},info:{empty:"(No content)",content:"Information content",placeholder:"Describe or explain this location on the image..."},btn:{checkMC:"Check Answer",checkFill:"Check",doneOpen:"ð Complete",close:"Close",pickBank:"ðï¸ Pick from Bank / AI",removeAnswer:"Remove",addAnswer:"+ Add Answer",cancel:"Cancel",update:"ð¾ Update",add:"ð Add Marker"},feedback:{correct:"ð Correct!",wrongMC:"â Incorrect! Correct answer:",wrongFill:"â Incorrect! Correct answer:",doneOpen:"â
Answer recorded!"},input:{placeholder:"Enter your answer...",hintLabel:"ð¡ Hint:"},error:{infoContent:"Please enter information content",quizMCQuestion:"Please enter a question",quizMCAnswers:"Need at least 2 answers with content",quizMCCorrect:"Please select the correct answer",quizFillQuestion:"Please enter a question",quizFillAnswer:"Please enter the correct answer",openPrompt:"Please enter a prompt/instruction"},defaultTitle:"Marker",field:{question:"Question",answers:"Answers (select the correct answer on the left)",correctAnswer:"Correct Answer",hint:"Hint (optional)",prompt:"Prompt / Instruction for students",placeholder:"Input placeholder (optional)",type:"Marker Type"},placeholder:{questionMC:"Enter your question...",answerX:"Answer {{num}}",questionFill:"Example: The capital of Vietnam is ___?",correctAnswer:"Enter correct answer...",hint:"Hint for students if needed...",prompt:"e.g., Observe and describe what you see at this location...",placeholder:"e.g., Enter your answer..."},tooltip:{correctAnswer:"Correct Answer"},note:{openInput:"ð Students will type in this box. Content is not graded â used for discussion only."},title:{edit:"âï¸ Edit Marker",add:"ð Add Marker"},bank:{title:"Select 1 question from Bank"}},binocular={createTitle:"ð Create Binocular Game",infoTitle:"Information",titlePlaceholder:"Enter lesson titleâ¦",uploading:"Uploadingâ¦",dropOrClick:"Click to add images (multiple allowed)",settingsTitle:"Binocular Settings",shapeLabel:"Aperture Shape",shapes:{binocular:"Binocular",circle:"Circle",square:"Square",hexagon:"Hexagon"},sizeLabel:"Aperture Size ({{size}}px)",sizes:{small:"Small",medium:"Medium",large:"Large"}
525,overlayColorLabel:"Cover Background Color",colors:{black:"Black",darkGreen:"Dark Green",darkBlue:"Dark Blue",darkPurple:"Dark Purple",darkBrown:"Dark Brown",custom:"Custom"},opacityLabel:"Cover Opacity ({{percent}}%)",bgmLabel:"Background Music",bgmHint:"Music plays in binocular mode, turns off when image is revealed.",bgmOptions:{none:"None",bgm1:"Track 1",bgm2:"Track 2",bgm3:"Track 3",bgm4:"Track 4",bgm5:"Track 5"},revealAudioLabel:"Reveal Sound Effect",revealAudioHint:"Plays when teacher presses Enter/Space to reveal the full image.",autoRevealLabel:"Auto-reveal image after",secondsUnit:"sec",autoRevealHint:"Disabled by default. Enable to reveal automatically after countdown.",photosCount:"Photo List ({{count}} photos)",slidesTitle:"Photo List",slidesUnit:"photo(s)",slideNamePlaceholder:"Photo",removeSlide:"Delete this photo",photoNamePlaceholder:"Photo {{num}} nameâ¦",deletePhotoTooltip:"Delete this photo",minOnePhotoWarning:"Please add at least 1 image.",uploadAudioError:"Failed to upload audio file. Check your connection and try saving again."},formatting={title:"ð Presentation Font & Image Sizes",questionFontSize:"Question Font Size",answerFontSize:"Answer Font Size",imageSize:"Illustration Image Size",sizes:{small:"Small",standard:"Standard",large:"Large",extraLarge:"Extra Large",maximum:"Maximum"}},myImages={downloadFailed:"â Could not create download file, please try again",downloadTooltip:"Download",downloadTooltipUpgrade:"Upgrade to download",downloading:"Downloading...",downloadBtn:"Download",expiredWarning:"â ï¸ Plan expired! ",binocularBadge:"ð Binocular",scoreRemaining:"· {{count}} left",scoreDone:"· done"}
525,enInteractiveImage={page:page$i,editor:editor$4,player:player$e,markerModal,binocular,formatting,myImages},page$h={title:"ð§ 3D Panorama Museum",upgradeTooltip:"Get FullGame to unlock limits",upgradeBtn:"Upgrade Individually",helpTooltip:"View user guide",helpBtn:"User Guide",quotaTrial:"ð Used <1>{{currentCount}}/{{limit}}</1> room creations",quotaUnlimited:"â
Unlimited"},sidebar$8={create:"Create Exhibition Room",createRoom:"Create 360 Room",createWalkable:"Create 3D Exhibition",myRooms:"My Rooms"},content={title:"ð§ My Rooms",subtitle:"Manage your 360 gallery rooms",loading:"Loading rooms..."},empty$5={title:"No rooms yet",subtitle:"Start by creating your first 3D gallery",createFirstBtn:"⨠Create First Room"},demo$a={title:"3D Exhibition - Demo",badge:"Demo",hint:"Step into a 3D exhibition with 8 Vietnam landscape paintings. Use arrow keys to move, drag mouse to look around.",btnPlay:"Try Demo"},error$6={delete:"Failed to delete room. Please try again.",save:"Failed to save data. Please try again.",share:"Failed to share",shareSuccess:"Link copied",loadStatus:"Failed to load status",hotspotUpload:"An error occurred: "},card$3={dateUnknown:"Unknown date",confirmDelete:'Are you sure you want to delete room "{{title}}"?',createdAt:"Created:",framesCount:"Frames:",btnView:"View",btnShare:"Create student link",btnShareCopied:"Link copied!",btnEdit:"Edit",btnDelete:"Delete",btnDeleting:"Deleting...",renewToOpen:"ð Renew to open this room"},modal$3={error:{emptyName:"Please enter a room name",shortName:"Room name must be at least 2 characters"},title:{create:"⨠Create New Room",createWalkable:"⨠Create 3D Exhibition",edit:"âï¸ Edit Room Info"},field:{name:"Room Name *",type:"Room Type *"},placeholder:{name:"E.g: Technology Room, History Room..."},btnCancel:"Cancel",btnCreating:"Creating...",btnUpdating:"Updating...",btnCreate:"⨠Create Room",btnUpdate:"âï¸ Update",walkableWarning:"â ï¸ Cannot change to another room type once this mode is selected! This mode also requires a relatively good computer configuration!"},hotspotModal={title:"Edit Frame {{index}}",uploadError:"Upload error: ",validationError:"Please enter an image link, upload an image, or enter a YouTube video URL",previewLabel:"â
Image to display on wall:",uploadLabel:"ð¸ Choose image from computer:",uploading:"â³ Processing and uploading image...",orLink:"Or enter an external link",urlLabel:"Image URL:",whatIsExternalLink:"What is an external link?",urlPlaceholder:"https://...",secureLink:"ð¡ï¸ Secure link from your storage (Auto-filled)",videoUrlLabel:"YouTube URL (To display video on wall):",titleLabel:"Artwork title:",titlePlaceholder:"e.g. Sunrise over the hills (falls back to Description)",authorLabel:"Author:",authorPlaceholder:"e.g. John Doe (optional)",descLabel:"Artwork description:",descPlaceholder:"Enter image description...",btnDelete:"ðï¸ Delete Frame",btnCancel:"Cancel",btnSaving:"Saving...",btnUploading:"Uploading...",btnSave:"ð¾ Save",fontSizeLabel:"Font size:",hour:"{{count}} hour",hour_plural:"{{count}} hours"},pinBanner={count:"{{pinned}}/{{limit}} pinned",expired:"â ï¸ Plan expired!",renew:"Renew"},editor$3={typeChanged:"â Panorama type changed",nameChanged:"â Room name updated",nameEmpty:"Room name cannot be empty",confirmDeleteFrame:"Are you sure you want to delete this frame?",showNumbers:"Show frame numbers",btnBackAndSave:"â Save & Go Back",toolsBtn:"Tools",title:"Edit: {{name}}",changeTypeTooltip:"Change panorama image type",frameIndex:"Frame {{index}}",hotspotsList:"Hotspots",hasImage:"â Image exists",prev:"â Prev",next:"Next â",pageOf:"Page {{current}} / {{total}}",btnEditFrame:"Edit frame",btnAddFrame:"Add image/video"},viewer={rotateHint:"Please rotate your phone to landscape for the best view",loading:"Loading room...",notFound:"Room not found",btnBackList:"Back to list",btnBack:"â Back",btnFullscreen:"â¶ Fullscreen",btnShare:"ð Share",btnExitFullscreen:"â Exit",frameInfoTitle:"Details",frameNoDesc:"No description available for this frame",shareSuccess:"â Link copied",shareError:"â Failed to share",mobileHint:"3D Room ⢠Mobile View",mobile3DHelp:"Virtual 3D space is not supported on mobile devices",tooltipShare:"Share",emptyGallery:"Gallery has no artworks yet."},share$6={embedExpiredTitle:"This content is currently unavailable",embedExpiredHint:"Please contact the person who shared it to regain access.",notFound:"Room does not exist or has been deleted",btnBackList:"Go back"},roomType={tech:"ð¥ï¸ Technology",normal:"ð¿ Nature",history:"ð History",edu:"ð« Classroom",walkable:"⨠Immersive 3D Exhibition"},walkable={restoring:"Artwork is being restored...",desktopOnly:"Free Movement 3D Mode",desktopOnlyDesc:"This feature currently only supports Desktop for the best experience.",btnBack:"Go Back",title:"Digital 3D Exhibition",controls:"Use <1>Arrow Keys</1> to move ⢠<3>Mouse</3> to look around",controlsMobile:"<0>Swipe</0> to look around ⢠Hold the <2>ð£</2>
525 button to walk",walkButton:"Walk forward",walkBackButton:"Walk backward",shareTooltip:"Share Exhibition",hideHint:"Hide hint",showHint:"Show hint",closeDetail:"Click outside to close details",externalLinkBtn:"View related page",emptyArtwork:"No Artwork",noDescription:"No description...",frameIndex:"Frame {{index}}",doorEnter:"Tap to enter",muteBgm:"Mute background music",unmuteBgm:"Unmute background music",autoTour:"Auto tour",autoTourStop:"Stop tour",autoTourShort:"Auto",autoTourStopShort:"Stop",tourSpeed:"Tour speed",tourModeWalk:"Looking where you walk â tap to gaze at artworks",tourModeGaze:"Gazing at artworks while walking â tap to look ahead",tourModeWalkShort:"Ahead",tourModeGazeShort:"Gaze",doorEnterNext:"VISIT NEXT ROOM",showMap:"Show map",hideMap:"Hide map",portalVisit:"VISIT",portalNext:"NEXT ROOM",clickToOpenLink:"ð Click to open link"},bgm$3={title:"Gallery Background Music",desc:"Music plays automatically (looped) when viewers enter the 3D gallery. Max 5MB, mp3/wav/ogg/m4a.",menuItem:"Background music",uploadBtn:"Upload music",uploadBtnPro:"Upload music (FullGame required)",replaceBtn:"Replace music",deleteBtn:"Remove music",useBtn:"Use this music",uploading:"Uploading...",saved:"Background music saved!",deleted:"Background music removed.",proOnly:"Uploading background music is a FullGame-only feature.",errorType:"Unsupported format. Use mp3/wav/ogg/m4a.",errorSize:"File too large ({{size}}MB). Max 5MB.",errorGeneric:"Upload failed, please try again."},roomLinks={btn:"Connect Galleries",title:"Gallery Link Settings",hint:"Pick a room for each slot, then drag from a room's ð handle onto another room to connect them (or tap ð then tap the target room). Links are two-way â each room can have up to 3 doors, shown right inside the 3D gallery. The room in Slot 1 is the entry room â you can enable a cover page for it below.",slotLabel:"Slot {{index}}",slotEmpty:"â Select room â",linkingHint:'Linking from "{{name}}" â tap the target room to connect',dragToLink:"Drag onto another room to connect",removeLink:"Remove link",save:"Save links",cancel:"Cancel",saved:"Links saved! Doors will appear inside the 3D gallery.",saveError:"Failed to save links, please try again.",needTwoRooms:"You need at least 2 walkable 3D galleries to connect rooms.",needRoomFirst:"Pick a room for this slot first!",maxLinks:"Each room can connect to at most 3 rooms!",maxLinksRoom:'Room "{{name}}" exceeds 3 links (including links to rooms outside this map).',thumbBtn:"Cover photo",thumbTooltip:"Upload a cover photo â shown on the connecting door in 3D",thumbSaved:"Room cover photo saved!",thumbError:"Failed to upload photo, please try again.",chip:"Connected ({{total}})"},session$2={btnCollect:"ð¨ Assign Students",btnStop:"â¹ï¸ Stop Collecting",btnDismiss:"â Dismiss Session",expiredLabel:"Expired",btnReload:"ð Collect Work",btnReloadLoading:"â³...",codeLabel:"Join Code:",qrTooltip:"Students scan QR code or visit the link above to submit artwork",stopConfirm:"Are you sure you want to stop collecting? (The code will be invalidated, students can no longer submit artwork to this room)",stopError:"An error occurred while stopping collection.",bulkUpload:"ð¤ Upload Images (Tr.)",bulkLimit:"Room is full (45/45). Please delete some to upload more.",bulkSuccess:"Successfully uploaded {{count}} images!",bulkError:"An error occurred during bulk upload. Please try again.",reloadNoSession:'No active "Assign Students" session found.',reloadNoUploads:"Students haven't uploaded any images in this session.",reloadNoNew:"All student images are already in the gallery.",reloadFull:"Room is full (45/45). Delete some to receive more student work.",reloadSuccess:"Reloaded {{count}} student artworks!{{skipped}}",reloadSkipped:" (Skipped {{count}} images due to no available slots)",reloadError:"Error reloading images. Please try again.",studentArtwork:"Artwork by {{name}}",modalTitle:"Assign Students Artwork",modalInfo:"The system will generate a 5-digit code for students to upload images to this gallery. <1>Maximum 45 images total</1> per room.",maxPerStudent:"Images per student:",unitTranh:"images / student",duration:"Code expiration time:",durationUnit:"{{count}} hours",createLoading:"Creating...",btnCreate:"Create Session & Get Code",readyTitle:"Submission Session Ready!",readySubtitle:"Students upload max <1>{{max}}</1> images · Expires in <3>{{hours}} hours</3>",codeInstruction:"JOIN CODE (Click to copy)",copied:"Copied!",copyCode:"Copy Code",qrInstru
525ction:"Students scan QR or enter code",shareLabel:"Or share via link:",btnCopy:"Copy",btnCopied:"Copied",btnCloseKeep:"Close (keep session active)",creating:"Creating...",createError:"An error occurred while creating the submission session.",artworkUnit:"images / student",codeHint:"JOIN CODE (Click to copy)",qrHelp:"Students scan QR code or visit the link below to submit artwork",shareOrPaste:"Or share via link / Paste in browser:",copyBtn:"Copy",successTitle:"Submission Session Ready!",successSubtitle:"Students upload max {{count}} images · Expires in {{hours}} hours",modalAlert:"The system will generate a 5-digit code for students to upload images to this gallery. <strong>Total max 45 images</strong> per room.",maxPerStudentLabel:"Number of images each student can upload (per submission):",expirationLabel:"Code expiration duration:",allowMultipleLabel:"Allow students to submit multiple times on the same device (unchecked: each device can submit only ONCE â missing images cannot be added later)"},map={title:"Exhibition Map",btnShow:"Room Map",btnHide:"Hide Map",lockedDuringSession:"Cannot rearrange map while collecting student work",hint:"Click on a frame to move it",north:"North Wall",south:"South Wall",west:"West Wall",east:"East Wall",p1w:"Partition 1 (Left)",p1e:"Partition 1 (Right)",p2w:"Partition 2 (Left)",p2e:"Partition 2 (Right)",shortNorth:"NORTH",shortSouth:"SOUTH",shortWest:"WEST",shortEast:"EAST",moveTitle:"Move Artwork",labelFrom
525:"From slot",labelTo:"To slot",placeholderTo:"1â45",btnMove:"Move",btnCancel:"Cancel",legendFilled:"Occupied",legendEmpty:"Empty",legendSelected:"Selected",guideTitle:"ð How to move artwork:",guideStep1:"Click on a <1>purple</1> dot to move",guideStep2:"Enter target slot (1â45) â press <1>Move</1> or <3>Enter</3>",guideStep3:"Target slot must be <1>empty</1>",btnSave:"Save Map",btnSaving:"â³ Saving...",btnSaved:"â Saved",errorRange:"Position must be between 1 and 45",errorSame:"That is the current position",errorOccupied:"Slot {{index}} is already occupied",errorSave:"Error saving map. Please try again."},student$1={sessionNotFound:"Exhibition session does not exist or has ended.",sessionExpired:"Exhibition session has expired.",loadError:"Failed to load session info. Please try again.",noFileError:"Please select at least 1 image.",uploadError:"An error occurred while uploading. Please try again.",loading:"Loading session information...",notAvailableTitle:"Session Not Available",notAvailableDesc:"Please contact your teacher for a new code.",thanks:"ð¨ Thank you for participating!",alreadySubmittedTitle:"You've already submitted!",alreadySubmittedDesc:"This device has already submitted artwork for this session. Your work is waiting for teacher approval.",successTitle:"Artwork Submitted!",successDesc:"<bold>{{count}}</bold> of your images have been sent to the 3D gallery.<br/>The teacher will review and place them in the room.",successBadge:"ð¼ï¸ Congratulations on having artwork in the exhibition!",title:"3D Exhibition",subtitle:"Upload up to <1>{{max}}</1> of your artworks",nameLabel:"Your full name (for credit)",namePlaceholder:"E.g: John Doe (optional)",imageTitleLabel:"Image {{index}} title",imageTitlePlaceholder:"E.g: Northwest Mountains (optional)",imageAuthorLabel:"Image {{index}} author",imageAuthorPlaceholder:"E.g: John Doe (optional)",imageDescLabel:"Image {{index}} description",imageDescPlaceholder:"E.g: Watercolour, inspired by my hometown (optional)",btnSelect:"Click to select images",uploadHint:"Max {{max}} images · JPG, PNG, WEBP",compressionHint:"Images will be automatically compressed",selectedCount:"Selected: {{current}}/{{max}} images",btnAddMore:"+ Add More",uploading:"Uploading...",btnUploading:"â³ Sending ({{current}}/{{total}})...",btnConfirm:"ð¼ï¸ Confirm placing {{count}} images in the gallery",footerNote:"Auto-compressed · Only one submission per device",pageForCode:"This page is for submitting artwork for join code: <bold>{{code}}</bold>",errorNoFiles:"Please select at least 1 image to send.",loadingInfo:"Loading session information...",unavailableTitle:"Session Not Available",contactTeacher:"Please contact your teacher for a new code.",thanksParticipating:"Thank you for participating!",congratsTask:"Congratulations on completing the artwork submission!",uploadLimit:"Upload up to {{count}} of your artworks",clickToSelect:"Click to select images",fileFormatHint:"Max {{max}} images · JPG, PNG, WEBP",uploadingStatus:"Sending images to the system...",btnUploadingProgress:"â³ Sending ({{current}}/{{total}})...",btnSubmit:"ð¼ï¸ Confirm placing {{count}} images",maxSubmissionsReached:"You have reached the maximum number of submissions on this device. Please ask your teacher to allow more.",errorTooManyFiles:"Removed {{dropped}} image(s) â you can submit at most {{max}} more.",imageLimitExceeded:"You can submit only {{remaining}} more image(s) (max {{limit}} for this session).",quotaUsedUpDesc:"You have submitted all {{count}} artwork(s) for this session. They are waiting for your teacher to place them in the room."},banner={menuItem:"Wall banners",title:"Slogan banners per wall",hint:"Enter slogan text for each wall (always shown UPPERCASE in 3D). The banner hangs above the row of artworks and auto-sizes to the text length. Leave empty to skip.",empty:"No banner",upload:"Upload",change:"Change",saved:"Banner saved!",removed:"Banner removed.",error:"Something went wrong, try again.",textPlaceholder:"e.g. SOCIALIST REPUBLIC OF VIETNAM",textColor:"Text color",bgColor:"Backgroun
525d",previewEmpty:"(slogan preview)",saveOne:"ð¾ Save this wall"},cover={enterTour:"ENTER TOUR",switchLabel:"Add a cover page for the exhibition",switchHint:"Enable to add an intro cover page (title + 3 images). When opening the exhibition, visitors see the cover first, then tap ENTER TOUR to enter the first room.",titleLabel:"Exhibition title",titlePlaceholder:"e.g. 3D Art Exhibition - Cultural Space...",titleFromName:"The cover title is the Exhibition name above."},coverEditor={slotMain:"Large frame (center)",slotLeft:"Small frame (left)",slotRight:"Small frame (right)"},exhibition={createBtn:"Create Exhibition",badge:"ðï¸ Exhibition",createTitle:"Create Exhibition",editTitle:"Edit Exhibition",nameLabel:"Exhibition name",namePlaceholder:"e.g. 3D Photo Exhibition - Cultural Space...",roomsLabel:"Pick showcase rooms (3D rooms)",roomsHint:"Tick the 3D rooms in this exhibition. Reorder with â²â¼ â room #1 is the entry room. While touring, doors in each room lead to the other member rooms.",entryRoom:"Entry",moveUp:"Move up",moveDown:"Move down",remove:"Remove from exhibition",noWalkable:"No 3D exhibition rooms yet. Create a 3D exhibition room first.",needName:"Please enter an exhibition name.",needRoom:"You need at least one 3D room to create an exhibition.",save:"Save exhibition",saved:"Exhibition saved!",roomChip:"{{total}} rooms",confirmDelete:'Delete exhibition "{{name}}"? (member 3D rooms are NOT deleted)',notFound:"Exhibition not found or has no rooms."},enPanorama={page:page$h,sidebar:sidebar$8,content,empty:empty$5,demo:demo$a,error:error$6,card:card$3,modal:modal$3,hotspotModal,pinBanner,editor:editor$3,viewer,share:share$6,roomType,walkable,bgm:bgm$3,roomLinks,session:session$2,map,student:student$1,banner,cover,coverEditor,exhibition},sidebar$7={title:"Quiz Nghiêng Äầu",upgradePro:"Nâng Cấp Lẻ",create:"Tạo bà i má»i",myLessons:"Bà i há»c cá»§a tôi",tutorial:"Video hưá»ng dẫn"},quota$2={used:"Äã dùng {{count}}/{{limit}} lượt tạo bà i",limitReached:"Äã hết lượt miá»
n phÃ",proPermanent:"Ko giá»i hạn vÄ©nh viá»
n",proDaysRemaining:"{{days}} ngà y ko giá»i hạn"},form$o={createTitle:"Tạo bà i há»c má»i",editTitle:"Chá»nh sá»a bà i há»c",titleLabel:"Tên bà i há»c",questionsCount:"Câu há»i ({{count}}/{{max}})",questionLabel:"Câu {{index}}",questionEmpty:"(Chưa nháºp)",questionContent:"Ná»i dung câu há»i:",questionPlaceholder:"Nháºp câu há»i...",answerALabel:"Äáp án A (há»c sinh nghiêng trái):",answerAPlaceholder:"Nháºp Äáp án A...",answerBLabel:"Äáp án B (há»c sinh nghiêng phải):",answerBPlaceholder:"Nháºp Äáp án B...",correctAnswerLabel:"Äáp án Äúng:",addQuestion:"Thêm câu há»i",save:"Lưu bà i há»c",saving:"Äang lưu...",cancel:"Há»§y",errorTitle:"Vui lòng nháºp tên bà i há»c",errorNoQuestion:"Phải có Ãt nhất 1 câu há»i",errorQuestionEmpty:"Câu há»i {{index}} không ÄÆ°á»£c Äá» trá»ng",errorAnswerA:"Câu há»i {{index}}: Äáp án A không ÄÆ°á»£c Äá» trá»ng",errorAnswerB:"Câu há»i {{index}}: Äáp án B không ÄÆ°á»£c Äá» trá»ng",errorCorrect:"Câu há»i {{index}}: Phải chá»n Äáp án Äúng",errorLoad:"Không thá» tải bà i há»c",errorSave:"Có lá»i xảy ra",maxQuestionsAlert:"Chá» ÄÆ°á»£c tá»i Äa {{max}} câu há»i",minQuestionsAlert:"Phải có Ãt nhất 1 câu há»i",questionsSectionTitle:"Câu há»i ({{count}})",pickFromBankBtn:"ðï¸ Chá»n từ Kho hoặc AI",manualInputBtn:"âï¸ Nháºp thá»§ công",questionsNote:"Má»i câu há»i cần có Äáp án A (nghiêng trái) và Äáp án B (nghiêng phải), chá»n Äáp án Äúng.",questionListHeader:"Danh sách câu há»i",noQuestionsLbl:"Chưa có câu há»i nà o",noQuestionsDesc:"Chá»n từ Kho câu há»i hoặc nháºp thá»§ công Äá» thêm câu há»i.",editQuestionTooltip:"Chá»nh sá»a câu há»i",deleteQuestionTooltip:"Xóa câu há»i",removeQuestionMsg:"Äã xóa câu há»i sá» {{index}}",clearAllBtn:"Xóa tất cả",clearAllConfirm:"Bạn có chắc muá»n xóa tất cả câu há»i?",clearAllSuccess:"Äã xóa tất cả câu há»i",addQuestionSuccess:"Äã thêm {{count}} câu há»i (tá»ng: {{total}})",updateQuestionSuccess:"Äã cáºp nháºt câu há»i",selectQuestionsTitle:"Chá»n câu há»i từ Kho",skippedNot2Answers:"Äã bá» qua {{count}} câu không có Äúng 2 Äáp án (không phù hợp vá»i Quiz Nghiêng Äầu)",noValidQuestions:"Không có câu nà o phù hợp â Quiz Nghiêng Äầu chá» dùng câu há»i có Äúng 2 Äáp án",importSummary:"Äã thêm {{added}} câu | Bá» qua {{skipped}} câu (không có Äúng 2 Äáp án)",allowRetryLabel:"Cho phép là m lại (Äá»i vá»i bà i g
525iao vá» nhà )",allowRetryDesc:"Há»c sinh có thá» chÆ¡i lại nhiá»u lần trên cùng trình duyá»t. Kết quả cuá»i cùng sẽ ÄÆ°á»£c gá»i vá».",sensitivityLabel:"Äá» nhạy nghiêng Äầu (sá» Äá»): {{value}}°",sensitivityDesc:"Góc nghiêng Äá» há» thá»ng nháºn diá»n viá»c chá»n Äáp án. Giá trá» cà ng nhá» cà ng nhạy (mặc Äá»nh 20°).",autoNextDelayLabel:"Thá»i gian tá»± Äá»ng chuyá»n câu: {{value}} giây",autoNextDelayDesc:"Sau khi trả lá»i, há» thá»ng tá»± Äá»ng chuyá»n sang câu tiếp theo sau thá»i gian nà y (mặc Äá»nh 3 giây).",shuffleAnswers:"ð Äảo Äáp án khi và o chÆ¡i",shuffleAnswersDesc:"Hoán Äá»i vá» trà A/B ngẫu nhiên má»i câu â không ảnh hưá»ng Äến Äáp án Äúng",noCameraMode:"ð· Dùng camera (nghiêng Äầu chá»n Äáp án)",noCameraModeDesc:"Báºt: há»c sinh nghiêng Äầu trưá»c camera. Tắt: bấm tay và o Äáp án, không cần camera.",ttsLabel:"ð Giá»ng Äá»c AI",ttsReady:"â
Sẵn sà ng",ttsNeeded:"â ï¸ Cần cà i Äặt",ttsDesc:"Tá»± Äá»ng Äá»c câu há»i bằng AI nếu câu há»i không có audio upload",bgmDefault:"ðµ Nhạc ná»n mặc Äá»nh",bgmNone:"Mặc Äá»nh (Bà i 1)",bgmTrack:"Bà i {{n}}",bgmDesc:"Há»c sinh vẫn có thá» chuyá»n bà i nhạc khác trong khi chÆ¡i.",bgmCustom:"Tải nhạc riêng (FullGame):",bgmMyMusic:"Nhạc cá»§a tôi",bgColorLabel:"ð¨ Mà u ná»n khung",bgQuestion:"â Khung câu há»i",bgAnswerA:"ð Khung Äáp án A",bgAnswerB:"ð Khung Äáp án B",bgReset:"Mặc Äá»nh",importLesson:"ð Từ bà i có sẵn",importLessonTitle:"Thêm câu từ bà i có sẵn",errorLibrarySelection:"Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng.",libraryLargeAlert:"Bà i quá lá»n, không thá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng. Bà i Äã ÄÆ°á»£c lưu thà nh công."},myLessons$2={title:"Bà i Há»c Cá»§a Tôi",subtitle:"Quản lý các bà i Quiz Nghiêng Äầu cá»§a bạn",empty:"Bạn chưa có bà i há»c nà o. Hãy tạo bà i há»c má»i từ menu bên trái Äá» bắt Äầu.",questionsCount:"{{count}} câu há»i",updatedAt:"Cáºp nháºt: {{date}}",sharedBadge:"Äã chia sẻ",play:"ChÆ¡i",edit:"Sá»a",assign:"Giao bà i",share:"Chia sẻ",copyLink:"Copy link",unshare:"Há»§y chia sẻ",deleteTitle:"Xác Nháºn Xóa",deleteMessage:"Bạn có chắc chắn muá»n xóa bà i há»c nà y? Hà nh Äá»ng nà y không thá» hoà n tác.",deleteCancel:"Há»§y",deleteConfirm:"Xóa",toastDeleteSuccess:"Xóa bà i há»c thà nh công",toastDeleteError:"Không thá» xóa bà i há»c",back:"Quay lại",toastLoadError:"Không thá» tải danh sách bà i há»c",toastShareSuccess:"Äã sao chép link chia sẻ!",toastShareError:"Không thá» chia sẻ bà i há»c",toastCopySuccess:"Äã sao chép link!",toastUnshareSuccess:"Äã há»§y chia sẻ",toastUnshareError:"Không thá» há»§y chia sẻ",lockedTip:"Gia hạn Äá» má» bà i nà y",pinExpired:"â ï¸ Gói Äã hết hạn!",createNewFirst:"â Tạo bà i Äầu tiên",demo:{title:"Quiz Nghiêng Äầu - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"}},game$4={questionCounter:"Câu {{current}}/{{total}}",scoreCorrect:"Äúng:",scoreIncorrect:"Sai:",tiltLeft:"Nghiêng trái",tiltRight:"Nghiêng phải",holdNeutral:"Giữ Äầu thẳng Äá» tiếp tục...",feedbackCorrect:"Äúng rá»i!",feedbackIncorrect:"Sai rá»i!",correctAnswerIs:"Äáp án Äúng: {{answer}}",nextQuestion:"Câu tiếp theo",finish:"Kết thúc",loadingCamera:"Äang khá»i Äá»ng camera...",calibrating:"Giữ Äầu thẳng, Äang Äo góc chuẩn...",exit:"Thoát",doneTitle:"Hoà n thà nh!",doneScore:"Trả lá»i Äúng: {{correct}}/{{total}} câu",doneIncorrect:"Sai: {{count}} câu",doneExit:"Thoát",doneRestart:"ChÆ¡i lại",reportBtn:"ð Xem Báo Cáo",reportTitle:"ð Báo Cáo",reportStats:"{{correctCount}}/{{questionsCount}} Äúng",back:"Quay lại",questionLabel:"Câu {{n}}",chosenLabel:"Chá»n:",correctLabel:"Äúng:",tiltContextTip:"ð Bấm hoặc nghiêng Äầu Äá» chá»n",emojiContextTip:"ð Biá»u cảm khuôn mặt Äá» chá»n",bgmOn:"Nhạc: BẬT",bgmOff:"Nhạc: TẮT",nextShort:"Câu tiếp",errorWebGL:"Trình duyá»t không há» trợ WebGL. Thá» dùng Chrome.",errorDenied:"Camera bá» từ chá»i. Hãy cấp quyá»n camera trong cà i Äặt trình duyá»t.",errorZaloBlocked:'Má» trong Zalo/Messenger bá» chặn Camera. Bấm và o nút 3 chấm góc phải trên cùng và chá»n "Má» trong trình duyá»t" Äá» chÆ¡i!',faceTheCamera:"Hưá»ng mặt và o camera",noCameraTip:"ð· Không thấy camera, nhấn và o Äây",errorCamera:"Không truy cáºp ÄÆ°á»£c camera. Hãy kiá»m tra quyá»n camera cá»§a trình duyá»t."},instructions$4={title:"Cách chÆ¡i Quiz Nghiêng Äầu",step1Title:"1. Cho phép truy cáºp camera",step1Desc:'Trò chÆ¡i cần camera Äá» nháºn diá»n khuôn mặt. Bấm "Cho phép" (Allow) á» góc trên trình duyá»t.',step2Title:"2. Nghiêng Äầu Äá» chá»n Äáp án",step2Desc:"Nghiêng sang trái hoặc phải Äá» chá»n Äáp án. Cần nghiêng hÆ¡n 15° Äá» xác nháºn.",step3Title:"3. (Tùy chá»n)Má»i câu có thá» cho má
525»t há»c sinh khác nhau",step3Desc:'Sau má»i câu, há»c sinh tiếp theo lên thay thế. Giáo viên bấm "Câu tiếp theo" Äá» chuyá»n.',tip:"Gá»m {{count}} câu há»i",fullscreen:"Toà n mà n hình",ready:"Sẵn sà ng chÆ¡i!",loading:"Äang tải...",startCameraTip:'Nhấn "Bắt Äầu" Äá» khá»i Äá»ng camera',modeTilt:"âï¸ Nghiêng Äầu",modeEmoji:"ð Biá»u cảm mặt",emojiStep1Title:"Camera nháºn diá»n khuôn mặt",emojiStep1Desc:"Äảm bảo ánh sáng tá»t và hưá»ng mặt và o camera.",emojiStep2Title:"Hai emoji hiá»n bên trái và phải",emojiStep2Desc:"Má»i emoji tương ứng má»t Äáp án. Emoji thay Äá»i ngẫu nhiên má»i câu.",emojiStep3Title:"Biá»u cảm tương ứng emoji muá»n chá»n",emojiStep3Desc:"Giữ biá»u cảm khoảng 1 giây cho Äến khi thanh tiến trình Äầy."},share$5={lessonBy:"Bà i há»c cá»§a {{name}}",notFound:"Không tìm thấy bà i há»c",linkInvalid:"Link chia sẻ không hợp lá» hoặc Äã bá» xóa.",loading:"Äang tải bà i há»c...",goHome:"Trá» vá» trang chá»§"},viHeadTiltQuiz={sidebar:sidebar$7,quota:quota$2,form:form$o,myLessons:myLessons$2,game:game$4,instructions:instructions$4,share:share$5},sidebar$6={title:"Head Tilt Quiz",upgradePro:"Get FullGame",create:"Create new lesson",myLessons:"My Lessons",tutorial:"Tutorial Video"},quota$1={used:"Used {{count}}/{{limit}} lessons",limitReached:"Free limit reached",proPermanent:"FullGame Permanent",proDaysRemaining:"{{days}} FullGame days left"},form$n={createTitle:"Create new lesson",editTitle:"Edit lesson",titleLabel:"Lesson title",questionsCount:"Questions ({{count}}/{{max}})",questionLabel:"Question {{index}}",questionEmpty:"(Not entered)",questionContent:"Question content:",questionPlaceholder:"Enter question...",answerALabel:"Answer A (tilt left):",answerAPlaceholder:"Enter answer A...",answerBLabel:"Answer B (tilt right):",answerBPlaceholder:"Enter answer B...",correctAnswerLabel:"Correct answer:",addQuestion:"Add question",save:"Save lesson",saving:"Saving...",cancel:"Cancel",errorTitle:"Please enter a lesson title",errorNoQuestion:"Must have at least 1 question",errorQuestionEmpty:"Question {{index}} cannot be empty",errorAnswerA:"Question {{index}}: Answer A cannot be empty",errorAnswerB:"Question {{index}}: Answer B cannot be empty",errorCorrect:"Question {{index}}: Must select the correct answer",errorLoad:"Cannot load lesson",errorSave:"An error occurred",maxQuestionsAlert:"Maximum {{max}} questions allowed",minQuestionsAlert:"Must have at least 1 question",questionsSectionTitle:"Questions ({{count}})",pickFromBankBtn:"ðï¸ Pick from Bank or AI",manualInputBtn:"âï¸ Enter manually",questionsNote:"Each question needs answer A (tilt left) and answer B (tilt right), then select the correct one.",questionListHeader:"Question list",noQuestionsLbl:"No questions yet",noQuestionsDesc:"Pick from Question Bank or enter manually to add questions.",editQuestionTooltip:"Edit question",deleteQuestionTooltip:"Delete question",removeQuestionMsg:"Removed question {{index}}",clearAllBtn:"Clear all",clearAllConfirm:"Are you sure you want to clear all questions?",clearAllSuccess:"All questions cleared",addQuestionSuccess:"Added {{count}} questions (total: {{total}})",updateQuestionSuccess:"Question updated",selectQuestionsTitle:"Select questions from Bank",skippedNot2Answers:"Skipped {{count}} questions that don't have exactly 2 answers (not compatible with Head Tilt Quiz)",noValidQuestions:"No compatible questions found â Head Tilt Quiz only supports questions with exactly 2 answers",importSummary:"Added {{added}} questions | Skipped {{skipped}} (not exactly 2 answers)",allowRetryLabel:"Allow retry (for home assignments)",allowRetryDesc:"Students can play multiple times on the same browser. The final result will be submitted.",sensitivityLabel:"Head tilt sensitivity (degrees): {{value}}°",sensitivityDesc:"The tilt angle to detect answer selection. Smaller values are more sensitive (default 20°).",autoNextDelayLabel:"Auto-advance delay: {{value}} seconds",autoNextDelayDesc:"After answering, the system automatically moves to the next question after this delay (default 3 seconds).",shuffleAnswers:"ð Shuffle answers",shuffleAnswersDesc:"Randomly swap A/B positions for each question â doesn't affect the correct answer.",noCameraMode:"ð· Use camera (tilt head to answer)",noCameraModeDesc:"On: students tilt their head in front of the camera. Off: they tap the answer, no camera needed.",ttsLabel:"ð AI Voiceover",ttsReady:"â
Ready",ttsNeeded:"â ï¸ Setup required",ttsDesc:"Automatically read questions using AI if no audio is uploaded.",bgmDefault:"ðµ Default background music",bgmNone:"Default (Track 1)",bgmTrack:"Track {{n}}",bgmDesc:"Students can still switch to other music while playing.",bgmCustom:"Upload custom music (FullGame):",bgmMyMusic:"My music",bgColorLabel:"
525ð¨ Frame background color",bgQuestion:"â Question frame",bgAnswerA:"ð Answer A frame",bgAnswerB:"ð Answer B frame",bgReset:"Default",importLesson:"ð From existing lesson",importLessonTitle:"Add questions from another lesson",errorLibrarySelection:"Please select Level, Subject, and Grade to publish to Community Library.",libraryLargeAlert:"Lesson is too large to publish to Community Library. However, it was saved successfully."},myLessons$1={title:"My Lessons",subtitle:"Manage your Head Tilt Quiz lessons",empty:"No lessons yet. Create a new lesson from the left menu.",questionsCount:"{{count}} questions",updatedAt:"Updated: {{date}}",sharedBadge:"Shared",play:"Play",edit:"Edit",assign:"Assign",share:"Share",copyLink:"Copy link",unshare:"Unshare",deleteTitle:"Confirm Delete",deleteMessage:"Are you sure you want to delete this lesson? This action cannot be undone.",deleteCancel:"Cancel",deleteConfirm:"Delete",toastDeleteSuccess:"Lesson deleted successfully",toastDeleteError:"Cannot delete lesson",back:"Back",toastLoadError:"Cannot load lessons",toastShareSuccess:"Share link copied!",toastShareError:"Cannot share lesson",toastCopySuccess:"Link copied!",toastUnshareSuccess:"Sharing disabled",toastUnshareError:"Cannot disable sharing",lockedTip:"Upgrade to unlock this lesson",pinExpired:"â ï¸ Subscription expired!",createNewFirst:"â Create your first lesson",demo:{title:"Head Tilt Quiz - Demo",badge:"Demo",hint:"Try this demo to experience the game before creating your own"}},game$3={questionCounter:"Question {{current}}/{{total}}",scoreCorrect:"Correct:",scoreIncorrect:"Wrong:",tiltLeft:"Tilt left",tiltRight:"Tilt right",holdNeutral:"Hold head straight to continue...",feedbackCorrect:"Correct!",feedbackIncorrect:"Wrong!",correctAnswerIs:"Correct answer: {{answer}}",nextQuestion:"Next question",finish:"Finish",loadingCamera:"Starting camera...",calibrating:"Hold head straight, calibrating...",exit:"Exit",doneTitle:"Complete!",doneScore:"Class got {{correct}}/{{total}} correct",doneIncorrect:"Wrong: {{count}}",doneExit:"Exit",doneRestart:"Play again",reportBtn:"ð View Report",reportTitle:"ð Report",reportStats:"{{correctCount}}/{{questionsCount}} correct",back:"Back",questionLabel:"Question {{n}}",chosenLabel:"Chosen:",correctLabel:"Correct:",tiltContextTip:"ð Click or tilt head to choose",emojiContextTip:"ð Use facial expression to choose",bgmOn:"Music: ON",bgmOff:"Music: OFF",nextShort:"Next",errorWebGL:"Your browser doesn't support WebGL. Try using Chrome.",errorDenied:"Camera access denied. Please grant camera permission in browser settings.",errorZaloBlocked:'Opening in Zalo/Messenger blocks the camera. Click the 3 dots and choose "Open in Browser" to play!',faceTheCamera:"Face the camera",noCameraTip:"ð· Can't see the camera? Click here",errorCamera:"Cannot access the camera. Please check your browser camera permission."},instructions$3={title:"How to play Head Tilt Quiz",step1Title:"1. Allow camera access",step1Desc:'The game needs your camera to detect your face. Click "Allow" in the browser.',step2Title:"2. Tilt your head to choose",step2Desc:"Tilt left for A | Tilt right for B. Must tilt more than 15° to confirm.",step3Title:"3. Different student for each question",step3Desc:'After each question, the next student takes over. Teacher clicks "Next question" to advance.',tip:"{{count}} questions | 1 student per question",fullscreen:"Fullscreen",ready:"Ready to play!",loading:"Loading...",startCameraTip:'Press "Start" to launch camera',modeTilt:"âï¸ Head Tilt",modeEmoji:"ð Facial Expression",emojiStep1Title:"Face recognition by camera",emojiStep1Desc:"Ensure good lighting and face the camera.",emojiStep2Title:"Two emojis on left and right",emojiStep2Desc:"Each emoji corresponds to an answer. Emojis change randomly for each question.",emojiStep3Title:"Show facial expression for the emoji you want",emojiStep3Desc:"Hold the expression for about 1 second until the progress bar is full."},share$4={lessonBy:"Lesson by {{name}}",notFound:"Lesson not found",linkInvalid:"Share link is invalid or has been deleted.",loading:"Loading lesson...",goHome:"Go to home"},enHeadTiltQuiz={sidebar:sidebar$6,quota:quota$1,form:form$n,myLessons:myLessons$1,game:game$3,instructions:instructions$3,share:share$4}
525,page$g={title:"ð¤ Drag & Drop - Matching",upgradeBtn:"Upgrade Individually",upgradeTooltip:"Get FullGame to unlock limits",helpBtn:"User Guide",helpTitle:"Drag & Drop - Matching Guide",helpDesc:"Learn how to create drag and drop label quizzes or matching quizzes"},sidebar$5={createDragDrop:"Drag & Drop Image",createMatching:"Matching Quiz",createSorting:"Sorting Quiz",myQuizzes:"My Quizzes"},myQuizzes$4={title:"ð My Quizzes",subtitle:"Manage your drag & drop and matching quizzes",matchingLabel:"Matching Game",dragDropLabel:"Drag & Drop Labels",loadingError:"Failed to load quizzes",deleteSuccess:"Quiz deleted successfully",deleteError:"Failed to delete quiz",noQuizMsg:"You don't have any quizzes yet. <1>Create a new quiz</1> to get started.",questionCount:"Questions",updated:"Updated",btnView:"View",btnViewTooltip:"Preview / Present",btnEdit:"Edit",btnEditTooltip:"Edit quiz",btnAssign:"Assign",btnAssignTooltip:"Assign to class",btnDeleteTooltip:"Delete quiz",lockedTip:"Upgrade to unlock this quiz",demo:{title:"Drag & Drop - Matching - Sorting - Demo",badge:"Demo",typesLabel:"3 question types",hint:"Try all 3 types: Drag & Drop labels, Matching, and Sorting"},expiredPackage:"Your plan has expired!"},createQuiz={updateQuestionSuccess:"Question updated successfully",addQuestionSuccess:"Question added successfully",deleteQuestionSuccess:"Question deleted successfully",titleErrorEmpty:"Please enter a quiz title",warningNoQuestions:"Please add at least 1 question",warningMaxQuestions:"Maximum 10 questions per quiz",updateQuizSuccess:"Quiz updated successfully",createQuizSuccess:"Quiz created successfully",limitReachedMsg:"You have exhausted your 10 free quiz limits. Please upgrade to continue.",saveError:"Failed to save quiz: ",quotaTrial:"Used <1>{{currentCount}}/{{limit}}</1> times creating a quiz",quotaUnlimited:"â
You are using FullGame - Unlimited",placeholderEdit:"ð Edit Quiz",placeholderCreate:"â Create New Quiz",titleLabel:"Quiz name",titleInputPlaceholder:"e.g. Chapter 1 Review, Unit 5 Vocabulary...",btnEditTitleTooltip:"Edit Title",createQuestionTitle:"â Create Questions",questionListTitle:"ð Question List",questionNumber:"ð Q.{{num}}",blankSpace:"Blanks",answers:"Answers",btnEditQuestion:"Edit",btnDeleteQuestion:"Delete",warningNoTitle:"Please enter a title before adding questions",btnAddQuestion:"Add New Question",maxQuestionsReached:"â
Reached maximum of 10 questions",btnCancel:"â Cancel",btnSaving:"â³ Saving...",btnSave:"ð¾ Save Quiz",editTitleDialog:"âï¸ Edit Quiz Title",editTitleLabel:"Quiz Title",btnDialogCancel:"Cancel",btnDialogSave:"Save",confirmCancelTitle:"â ï¸ Confirm Cancel",confirmCancelMsg:"Are you sure you want to cancel? All changes will be lost.",btnConfirmNo:"No, Go Back",btnConfirmYes:"Yes, Cancel"},deleteDialog$1={title:"ðï¸ Confirm Deletion",message:"Are you sure you want to delete this quiz? This action cannot be undone.",btnCancel:"Cancel",btnDelete:"Delete"},preview$1={errorLoad:"Failed to load quiz",errorNotFound:"Quiz not found",btnGoBack:"Go Back",btnFullscreen:"Fullscreen",btnExitFullscreen:"Exit Fullscreen",defaultTitle:"Quiz",btnPrev:"Prev",btnNext:"Next",questionStatus:"Q.{{current}} / {{total}}",instructionDragDrop:"ð¯ Drag the answers or labels into the right spots (or tap a blank to pick one)",instructionFillIn:"âï¸ Type your answer into each blank on the image",instructionMatching:"ð Drag to connect the matching items across the two columns",instructionSorting:"âï¸ Drag the blocks to put them in the correct order",instructionGrouping:"ðï¸ Drag each card into the group it belongs to"},customInstruction={label:"Edit the instruction line",helper:"Leave empty to use the default line"},share$3={errorLoad:"Failed to load quiz. Please check the link.",loading:"Loading quiz...",errorNotFound:"Quiz not found. Please check the shared link."},blankSpaceCanvas={uploadError:"Error uploading image: ",requireImageWarning:"Please upload an image first",requireAnswerWarning:"Please enter an answer",requireImageLinkWarning:"Please provide an image link or upload an image",requireMinBlanksWarning:"Please create at least 1 blank",requireAllAnswersWarning:"Please enter answers for all blanks",title:"âï¸ Create Drag & Drop Question",uploadingText:"â³ Compressing and uploading...",method2:"Paste direct image link",guideLinkText:"ð¹ How to get image link",placeholderUrl:"https://example.com/image.jpg",imageLoadedText:"â Image loaded successfully",borderEnabled:"âï¸ Border / Sidebar",borderDesc:"Show a white border or sidebar when enabled",borderTypeSimple:"Border: white border around the image",borderTypeSidebar:"Sidebar: white panel on the right side",sidebarWidthLabel:"Sidebar width",fillInMode:"âï¸ Fill-in-the-blank mode",fillInDesc:"Users type answers instead of dragging and dropping",fillInTextColor:"Text color:",btnAddBlank:"â Add drag & drop answer",btnClearConnectors:"â Clear connectors",tooltipClickToEdit:"Click to enter an answer · Drag to move the blank",tooltipUndo:"Undo (Ctrl+Z)",tooltipRedo:"Redo (Ctrl+Y)",nothingToUndo:"Nothing left to undo",tooltipDragConnector:"Drag to create a connector",tooltipResize:"Drag to resize",clickToUpload:"Click to upload an image",uploadHint:"Or drop an image here, or press Ctrl+V to paste a copied image",dropImageHere:"Drop the image here",dropToReplace:"Drop to replace the background image",requireLoginToUpload:"You need to sign in to upload images.",notAnImage:"What you selected is not an image.",pasteImageHint:"Tip: press Ctrl+V to paste a copied image directly (no link needed).",replaceImage:"Replace image",orUseLink:"Or paste an existing image link",pickImageFirst:"Choose a background image above to start placing blanks.",emptyBlankHint:"No answer yet",tooltipEditAnswer:"Edit answer",tooltipDelete:"Delete",editDialogTitle:"ð Enter Answer For Blank {{id}}",editDialogInputLabel:"Correct answer",btnCancel:"Cancel",btnSave:"Save",btnActionCancel:"Cancel",btnActionSaving:"â³ Saving...",btnActionUploading:"â³ Uploading image...",btnActionSave:"â
Save Question",btnActionSaveDragDrop:"â
Save this Drag & Drop question",btnActionSaveSorting:"â
Save this Ordering question",btnActionSaveMatching:"â
Save this Matching question",btnActionSaveGrouping:"â
Save this Grouping question"}
525,sortingEditor={title:"ð¢ Create Ordering Question",layoutText:"Display direction:",layoutHorizontal:"Horizontal",layoutVertical:"Vertical",guideText:"Add cards and arrange them in the correct order (current direction: {{layout}}). Students will need to rearrange them into this exact order.",btnAddItem:"â Add Card",itemLabel:"Card {{index}}",placeholderItem:"Enter text for this card",uploadingImage:"Uploading image...",deleteItem:"Delete card"},groupingEditor={title:"ðï¸ Create Sorting-into-Groups Question",guideText:"Name each group, then add the cards that BELONG to it. During play, cards from every group are shuffled into one pool â students drag each card into the right basket.",placeholderGroupName:"Group name (e.g. Animals)",placeholderItem:"Enter card content",btnAddItem:"Add card",btnAddGroup:"â Add group"},quizPreviewComponent={noQuestions:"No questions available",questionAlt:"Question {{index}}",teacherView:"Teacher preview mode",btnBackList:"Back to list",btnCheck:"â Check",btnRetry:"ð Retry",btnPrev:"â Prev",btnNext:"Next â",btnFinish:"ð Finish",loadingImage:"Loading image..."},answerSidebar={fontSmaller:"Decrease answer text size",fontBigger:"Increase answer text size",title:"ð Available Answers",btnFinish:"Finish",btnCheck:"Check",btnRetry:"Retry",btnPrev:"Prev",btnNext:"Next",questionStatus:"Q.{{current}}/{{total}}",lockedStatus:"(Locked - viewing results)",allAnswersUsed:"All answers have been used"},studentPlayer={submitSuccess:"Your quiz has been submitted successfully!",submitError:"Unable to submit quiz. Please try again.",instruction:"Drag/select the labels to the correct positions on the image",lockedWarning:"â ï¸ You have already submitted this quiz. You cannot retake it on this device.",completionTitle:"Quiz Completed!",completionMessage:"Congratulations on completing the quiz.",btnExit:"Exit",nameDialogTitle:"ð Enter Your Name",nameDialogDesc:"Please enter your name to submit this quiz. This name will be recorded along with your results.",nameInputLabel:"Your Name",nameInputPlaceholder:"e.g., John Doe",nameError:"Please enter your name",scoreDisplay:"ð Your score: {{score}} / {{max}}",btnSubmitting:"â³ Submitting...",btnSubmit:"â
Submit"},clickableMenu={inBlank:"In blank {{ids}}",noAnswers:"No answers available"},teacherSidebar={errorLoad:"Failed to load submissions",successDelete:"Deleted all submissions successfully",errorDelete:"Failed to delete submissions",successUnshare:"Stopped sharing - students cannot access the link anymore",errorUnshare:"Failed to stop sharing",successReshare:"Re-shared - students can access the link again",errorReshare:"Failed to re-share",title:"ð Submissions",colIndex:"No.",colName:"Name",colScore:"Score",noSubmissions:"No submissions yet",totalLabel:"Total",unit:"sub(s)",avgLabel:"Avg",btnRefresh:"Refresh",btnUnshare:"Stop Sharing",btnReshare:"Re-share",btnDeleteAll:"Delete All",confirmDeleteTitle:"â ï¸ Confirm Deletion",confirmActionTitle:"â¹ï¸ Confirm",confirmUnshare:"ð Stopping sharing will invalidate the link. Students will no longer be able to submit. Are you sure?",confirmReshare:"ð Re-sharing will recreate the link. Students can submit again. Continue?",confirmDelete:"ðï¸ You are about to delete all submissions ({{count}}). This action cannot be undone. Continue?"},enQuizGame={page:page$g,sidebar:sidebar$5,myQuizzes:myQuizzes$4,createQuiz,deleteDialog:deleteDialog$1,preview:preview$1,customInstruction,share:share$3,blankSpaceCanvas,sortingEditor,groupingEditor,quizPreviewComponent,answerSidebar,studentPlayer,clickableMenu,teacherSidebar},myGames$d={successAddStudents:"Äã thêm {{count}} há»c sinh",errorNotEnoughQuestions:"Không Äá»§ câu há»i Äá» chá»n {{count}} câu khác. Còn lại: {{available}} câu.",errorAddingStudent:"â ï¸ Vui lòng thêm há»c sinh trưá»c!",errorAddingQuestion:"â ï¸ Vui lòng thêm câu há»i trưá»c!",successLoadedGame:'Äã tải Lá»p/Nhóm "{{name}}"',errorLoadingGame:"Lá»i khi tải: {{message}}",confirmDeleteGame:'Xóa Lá»p/Nhóm "{{name}}"? Hà nh Äá»ng nà y không thá» hoà n tác.',successDeletedGame:"Äã xóa Lá»p/Nhóm thà nh công",errorDeletingGame:"Lá»i khi xóa: {{message}}",errorNoScoreBoard:"Chưa có Äiá»m sá» Äá» xuất",successScoreBoardExported:"Bảng xếp hạng Äã ÄÆ°á»£c xuất",confirmClearScoreBoard:"Bạn có chắc muá»n xóa bảng xếp hạng?",successScoreBoardCleared:"Bảng xếp hạng Äã ÄÆ°á»£c xóa",confirmClearAll:"Xóa tất cả dữ liá»u? Hà nh Äá»ng nà y không thá» hoà n tác!",successClearedAll:"Dữ liá»u Äã ÄÆ°á»£c xóa (giữ lại HS Äầu tiên)",tooltipFullScreenExit:"Thoát toà n mà n hình",btnFullScreenExit:"â Thu nhá»",tooltipSpinning:"Äang quay vòng...",tooltipSpinStart:"Bắt Äầu quay vòng chá»n há»c sinh",btnSpinning:"ð¡ ÄANG QUAY...",btnSpin:"ð¡ QUAY",btnSpinStart:"â¶ï¸ BẮT ÄẦU QUAY",btnSpinNext:"â¶ï¸ QUAY TIẾP",tooltipTutorial:"Xem hưá»ng dẫn",tooltipBackDashboard:"Quay lại Dashboard",exitConfirmTitle:"Thoát khá»i trò chÆ¡i?",exitConfirmDesc:"Bảng xếp hạng sẽ không lưu lại sau khi bạn thoát, hãy Äảm bảo bạn Äã sá» dụng xong. Bạn vẫn muá»n thoát?",exitConfirmBtn:"Thoát",tooltipDeleteStudent:"Xóa {{name}}",tooltipImportStudents:"Nháºp danh sách há»c sinh",btnImport:"+ Nháºp",tooltipLeaderboard:"Xem bảng xếp hạng",btnLeaderboard:"Xếp hạng ð",tooltipClearAll:"Xóa tất cả dữ liá»u",btnClearAll:"Xóa há»c sinh ðï¸",tooltipToggleSound:"Báºt/tắt âm thanh",btnToggleSound:"Báºt/tắt âm thanh ð",tooltipFullScreen:"Trình chiếu toà n mà n hình",btnFullScreen:"Toà n mà n hình â¶",labelNoRepeatName:"Gá»i tên không lặp lại",labelAnswerMode:"Cách trả lá»i",answerModeAll:"Toà n bá»",answerModeRandom:"Ngẫu nhiên",tooltipManageQuestions:"Quản lý câu há»i",btnQuestions:"â Câu há»i ({{count}})",tooltipSpinPick:"Quay vòng Äá» chá»n há»c sinh",btnSpinText:"ð²",btnSpinSubText:"Quay",btnUpgradePro:"â Nâng Cấp Lẻ",titleCloud:"âï¸ Lá»p/Nhóm",tooltipSaveCloud:"Lưu dữ liá»u lên Äám mây",btnSaveCloud:"ð¾ Lưu dữ liá»u",loading:"â³ Äang tải...",tooltipLoadGame:"Tải {{name}}",tooltipDeleteGame:"Xóa {{name}}",btnBack:"â Quay lại",tooltipBackSetup:"Quay lại mà n hình setup",btnBackSetup:"â Quay lại vòng/Äua",tooltipConfirmAnswer:"Xác nháºn Äáp án Äã chá»n",btnConfirm:"Xác nháºn",btnConfirming:"Äang cáºp nháºt...",tooltipNextQuestion:"Chuyá»n sang câu há»i tiếp theo",btnNextQuestion:"â¡ï¸ Câu tiếp theo",btnEndQuiz:"â Kết thúc lượt cá»§a {{name}}
525",titleLeaderboard:"ð BXH",titleLeaderboardModal:"Bảng Xếp Hạng",btnCancel:"Há»§y",labelSelectionMode:"Chế Äá» chá»n",selectionWheel:"Vòng quay",selectionDuckRace:"Äua vá»t (Demo)",labelLiveCheck:"Chế Äá» chÆ¡i trá»±c tiếp",btnEndLiveCheck:"Kết thúc",students:"há»c sinh",questions:"câu há»i",tooltipClearLeaderboard:"Xóa bảng xếp hạng"},duckRace$1={btnStart:"ð¦ BẮT ÄẦU ÄUA!",btnRacing:"ð ÄANG ÄUA..."},manageGamesModal$1={title:"Quản lý Lá»p/Nhóm",loading:"Äang tải dữ liá»u...",msgLoading:"Äang tải...",empty:"Chưa có Lá»p/Nhóm nà o ÄÆ°á»£c lưu",createdAt:"Ngà y tạo",updatedAt:"Cáºp nháºt",btnLoad:"Tải Lá»p/Nhóm nà y",btnLoadText:"Tải",btnDelete:"Xóa Lá»p/Nhóm nà y",btnClose:"Äóng",btnCancel:"Há»§y",lockedTip:"Gia hạn Äá» má» vòng quay nà y",expiredPackage:"Gói hết hạn!",renewText:"Gia hạn 30k/nÄm"},studentImportModal$1={alertEmpty:"Vui lòng nháºp danh sách há»c sinh",alertInvalid:"Danh sách không hợp lá»",btnAdd:"Thêm danh sách",btnCancel:"Há»§y",hint:"Nháºp má»i sinh viên trên má»t dòng.",label:"Danh sách há»c sinh (má»i ngưá»i 1 dòng - có thá» copy từ Excel)",placeholder:`Nguyá» n VÄn A 526Trần Thá» B 527Lê VÄn C`,title:"Nháºp danh sách há»c sinh"},cloudSaveModal$1={title:"ð¾ Lưu Lá»p/Nhóm Lên Äám Mây",btnSaveNew:"Lưu Lá»p/Nhóm Má»i",btnUpdatePrefix:"Cáºp nháºt",classesGroups:"Lá»p/Nhóm",errorEmptyName:"Vui lòng nháºp tên",labelName:"Tên Lá»p/Nhóm:",outOfSlots:"Hết chá» trá»ng",placeholderName:"Và dụ: Lá»p 10A1",proAccount:"Chế Äá» Pro (Không giá»i hạn)",quotaFullDesc:"Bạn không thá» tạo thêm Lá»p/Nhóm má»i á» chế Äá» Miá» n phÃ.",quotaFullWarning:"Äã Äạt giá»i hạn lưu trữ ({{limit}} game).",saving:"Äang lưu...",slotsRemaining:"Còn {{count}} lượt",labelSelectExisting:"Ghi Äè Lá»p/Nhóm Äã có ({{count}}):"},celebrationModal$1={btnBack:"Quay lại",btnResetQ:"ð Nạp lại câu há»i",btnStartQuiz:"Bắt Äầu trả lá»i",h3Congrats:"Chúc mừng",h3NoMoreQ:"â ï¸ Äã hết câu há»i!",pNo
527MoreQ:"Tất cả câu há»i trong ngân hà ng Äá»u Äã ÄÆ°á»£c gá»i. Hãy nạp lại câu há»i nếu muá»n tiếp tục vá»i há»c sinh nà y.",pSelected:"Äã ÄÆ°á»£c chá»n Äá» trả lá»i câu há»i"},quizBoard$1={noQuestions:"Không có câu há»i nà o",questionNumber:"Câu {{current}}/{{total}}",correct:"Äúng rá»i!",incorrect:"Chưa chÃnh xác. Äáp án Äúng là :",submitAnswer:"Xác nháºn",trueShort:"Ä",falseShort:"S",placeholderShortAnswer:"Nháºp Äáp án...",audioReplay:"Nghe lại",audioStop:"Dừng"},leaderboard$2={emptyTitle:"Chưa có Äiá»m sá»",emptyDesc:"Bắt Äầu chÆ¡i Äá» cáºp nháºt bảng xếp hạng",colRank:"Hạng",colStudent:"Há»c sinh",colScore:"Äiá»m",colTime:"Thá»i gian",statTotal:"Tá»ng cá»ng",statHighest:"Äiá»m cao nhất",statAverage:"Äiá»m trung bình"},randomModeModal$1={title:"Cấu Hình Chế Äá» Ngẫu Nhiên",description:"Má»i há»c sinh sẽ trả lá»i bao nhiêu câu ngẫu nhiên?",label:"Sá» câu há»i:",hintTotal:"Tá»ng câu há»i: {{total}}",infoSelect:"Má»i lần há»c sinh ÄÆ°á»£c quay:",infoRandomCount:"Sẽ ÄÆ°á»£c chá»n {{count}} câu ngẫu nhiên",infoNextSpin:"Lần quay tiếp theo sẽ là {{count}} câu khác",infoNoRepeat:"Äảm bảo không có câu há»i lặp lại trong cùng phiên há»c sinh",alertInvalidCount:"Vui lòng nháºp sá» từ 1 Äến {{total}}"},tutorialModal$1={title:"ð¹ Hưá»ng dẫn sá» dụng",tip:"Tip: Nhấn và o video Äá» xem toà n mà n hình hoặc Äiá»u khiá»n âm lượng"},questionModal$1={title:"Thêm Câu Há»i",tooltipAI:"Má» trợ lý AI Äá» tạo câu há»i",btnAI:"Tạo bằng AI",questionList:"Danh sách câu há»i ({{count}})",labelQuestion:"Câu há»i * (Há» trợ công thức toán há»c)",placeholderQuestion:"Nháºp câu há»i hoặc công thức toán há»c",labelOptions:"Lá»±a chá»n *",placeholderOption:"Lá»±a chá»n {{number}}",btnAddOption:"Thêm lá»±a chá»n",btnAddQuestion:"Thêm Câu",btnSaveClose:"Lưu & Äóng",alertQuestion:"Vui lòng nháºp câu há»i",alertOptions:"Cần Ãt nhất 2 lá»±a chá»n",alertCorrectAnswer:"Vui lòng chá»n Äáp án Äúng",labelCorrectAnswer:"Äáp án Äúng *",placeholderCorrect:"Chá»n Äáp án Äúng"},questionForm$1={btnUpdate:"Cáºp nháºt",errorCorrectInOptions:"Äáp án Äúng phải là má»t trong các Äáp án"},mixedInput$1={placeholder:"Nháºp câu há»i hoặc công thức toán há»c",hint:"Há» trợ soạn thảo vÄn bản ná»i dòng (\\\\frac, ^, _, \\\\sqrt, v.v.) + bà n phÃm ảo MathLive"},mathInput$1={placeholder:"Nháºp công thức toán há»c"},mathComponent$1={tooltip:"Công thức toán (Click Äá» chá»n/xóa)"},formulaInput$1={title:"Nháºp công thức toán há»c",label:"Công thức (Chá»n bà n phÃm ảo Äá» chèn):",placeholder:"Và dụ: \\\\frac{1}{2} hoặc x^2 - 4",btnInsert:"Chèn",alertEmpty:"Vui lòng nháºp công thức"},quizResult$1={msgPerfect:"Tuyá»t vá»i! Bạn trả lá»i hoà n hảo!",msgGood:"Rất tá»t! Bạn Äã nắm vững kiến thức!",msgOkay:"Tá»t! Cá»ng thêm má»t chút nữa thôi!",msgReview:"Bạn cần ôn táºp thêm nhé!",msgTryHarder:"Hãy cá» gắng hÆ¡n lần sau!",labelScore:"Äiá»m sá»",labelCorrect:"Câu Äúng",labelAccuracy:"Tá»· lá» Äúng",labelTime:"Thá»i gian",btnPlayAgain:"Trả lá»i lại",btnNextStudent:"Há»c sinh tiếp theo"},page$f={sidebarTitle:"ð¡ Vòng Quay - Äua Vá»t",navClasses:"Lá»p há»c",navQuestionSets:"Bá» câu há»i",btnUpgradePro:"Nâng Cấp Pro",quotaTrial:"Äã sá» dụng {{current}}/{{limit}} bá» câu há»i",quotaTrialPlays:"Äã dùng {{current}}/{{limit}} lượt chÆ¡i"},classes$3={title:"ð« Lá»p há»c cá»§a tôi",description:"Danh sách lá»p <strong>dùng chung</strong> cho má»i tÃnh nÄng cần lá»p há»c â sá»a má»t nÆ¡i, các nÆ¡i khác thấy ngay. Bấm <strong>ChÆ¡i</strong> Äá» chá»n bá» câu há»i và bắt Äầu.",btnCreate:"+ Tạo lá»p má»i",btnAdvanced:"âï¸ Quản lý nâng cao",btnCreateFirst:"+ Tạo lá»p Äầu tiên",emptyTitle:"Chưa có lá»p nà o",emptyDesc:"Tạo lá»p há»c và thêm há»c sinh Äá» bắt Äầu chÆ¡i Vòng Quay.",demoTitle:"
527ð¦ Lá»p Demo - Äua Vá»t",demoHint:"ChÆ¡i thá» Äua vá»t vá»i 20 há»c sinh mẫu trưá»c khi tạo lá»p cá»§a bạn",pinBanner:"Ghim lá»p yêu thÃch Äá» vẫn sá» dụng ÄÆ°á»£c khi hết hạn gói",pinCount:"({{current}}/{{limit}} Äã ghim)",expiredWarning:"â ï¸ Gói Äã hết hạn!",btnRenew:"Gia hạn",labelStudentCount:"{{count}} há»c sinh",btnPlay:"â¶ ChÆ¡i",tooltipEdit:"Sá»a lá»p",tooltipDelete:"Xóa lá»p",dialogCreateTitle:"Tạo lá»p má»i",dialogEditTitle:"Sá»a lá»p: {{name}}",labelClassName:"Tên lá»p",labelStudentList:"Danh sách há»c sinh (má»i tên 1 dòng - có thá» copy từ Excel)",placeholderStudentList:`Nguyá» n VÄn A 528Trần Thá» B 529Lê VÄn C`,studentCount:"{{count}} há»c sinh",btnCancel:"Há»§y",btnSave:"Lưu",btnSaving:"Äang lưu...",dialogDeleteTitle:"Xóa lá»p há»c",dialogDeleteDesc:"Lá»p sẽ bá» xóa vÄ©nh viá» n. Hà nh Äá»ng nà y không thá» hoà n tác.",btnConfirmDelete:"Xóa",errorLoad:"Không tải ÄÆ°á»£c danh sách lá»p",errorName:"Vui lòng nháºp tên lá»p",errorMinStudent:"Lá»p phải có Ãt nhất 1 há»c sinh",successCreate:"Äã tạo lá»p má»i",successUpdate:"Äã cáºp nháºt lá»p",successDelete:"Äã xóa lá»p",successPin:"Äã ghim lá»p",successUnpin:"Äã bá» ghim",warningPinLimit:"Äã Äạt giá»i hạn {{limit}} lá»p ghim",errorDelete:"Xóa thất bại",errorSave:"Lưu thất bại",hintMaxStudents:"Má»i tên 1 dòng. Tá»i Äa {{max}} há»c sinh má»i lá»p.",errorOverLimit:"Danh sách có {{count}} há»c sinh, vượt quá tá»i Äa {{max}}. Vui lòng bá»t bá»t."},sets$1={title:"ð Bá» câu há»i",description:"Quản lý các bá» câu há»i Äá» dùng khi bắt Äầu chÆ¡i.",btnCreate:"+ Tạo bá» má»i",btnCreateFirst:"+ Tạo bá» câu há»i Äầu tiên",emptyTitle:"Chưa có bá» câu há»i nà o",emptyDesc:"Tạo bá» câu há»i Äá» dùng khi chÆ¡i Vòng Quay.",labelQuestionCount:"{{count}} câu há»i",tooltipEdit:"Sá»a bá» câu há»i",tooltipDelete:"Xóa",btnPrev:"Trang trưá»c",btnNext:"Trang sau",labelPage:"Trang {{page}}",dialogDeleteTitle:"Xóa bá» câu há»i",dialogDeleteDesc:"Bá» câu há»i sẽ bá» xóa vÄ©nh viá» n. Hà nh Äá»ng nà y không thá» hoà n tác.",btnConfirmDelete:"Xóa",errorLoad:"Không tải ÄÆ°á»£c danh sách bá» câu há»i",successDelete:"Äã xóa bá» câu há»i",errorDelete:"Xóa thất bại"},form$m={titleCreate:"Tạo bá» câu há»i má»i",titleEdit:"Chá»nh sá»a bá» câu há»i",labelTitle:"Tên bá» câu há»i",labelQuestions:"Câu há»i ({{count}})",btnClearAll:"Xóa tất cả",confirmClearAll:"Xóa tất cả câu há»i?",btnPicker:"Chá»n từ Kho hoặc AI",btnManual:"Nháºp thá»§ công",listHeader:"Danh sách câu há»i",labelAnswers:"â {{count}} Äáp án",emptyQuestions:"Chưa có câu há»i nà o",emptyQuestionsDesc:"Chá»n từ ngân hà ng câu há»i hoặc nháºp thá»§ công.",btnCancel:"Há»§y",btnSave:"Lưu",btnSaving:"Äang lưu...",errorNoTitle:"Vui lòng nháºp tên bá» câu há»i",errorNoQuestions:"Bá» câu há»i phải có Ãt nhất 1 câu há»i",errorLoad:"Không tải ÄÆ°á»£c bá» câu há»i",successAdd:"Äã thêm {{count}} câu há»i",successUpdate:"Äã cáºp nháºt câu há»i",successDelete:"Äã xóa câu há»i {{index}}",successClear:"Äã xóa tất cả câu há»i",errorSave:"Lưu thất bại, vui lòng thá» lại",warningTooLarge:"Bà i quá lá»n, không thá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng. Bà i Äã ÄÆ°á»£c lưu thà nh công.",pickerTitle:"Chá»n câu há»i",btnLesson:"Từ bà i có sẵn",lessonPickerTitle:"Chá»n bà i Äá» lấy câu há»i",lessonPickerNoMatch:"Không có câu nà o phù hợp ({{count}} câu bá» bá» qua).",lessonPickerPartial:'Äã thêm {{added}} câu từ "{{title}}". Bá» qua {{skipped}} câu không tương thÃch.',lessonPickerSuccess:'Äã thêm {{added}} câu từ "{{title}}".'},playModal$1={title:"ð¡ Bắt Äầu chÆ¡i",labelClass:"Lá»p: <strong>{{name}}</strong> â {{count}} há»c sinh",labelSelectSet:"Chá»n bá» câu há»i:",labelNone:"ð¯ Không cần câu há»i",descNone:"Chá» quay / Äua Äá» chá»n tên",noSets:"Chưa có bá» câu há»i nà o.",btnCreateNow:"Tạo ngay",labelQuestionMode:"Sá» câu há»c sinh sẽ trả lá»i sau khi quay trúng:",modeAll:"
529ð Toà n bá» ({{count}} câu)",modeRandom:"ð² Ngẫu nhiên",labelRandomCount:"Sá» câu má»i lượt:",countSuffix:"/ {{count}} câu",labelGameSettings:"Cà i Äặt trò chÆ¡i:",labelSelectionMode:"Chế Äá» chá»n há»c sinh:",modeWheel:"ð¡ Vòng quay",modeDuckRace:"ð¦ Äua vá»t",labelDuration:"â± Thá»i gian {{mode}}:",durationModeSpin:"quay",durationModeRace:"Äua",durationSuffix:"giây",labelAnswerMode:"Chế Äá» trả lá»i:",answerSequential:"ð Tuần tá»±",answerRandom:"ð² Ngẫu nhiên",labelNoRepeat:"Gá»i tên không lặp lại",labelUsePhotos:"Dùng ảnh há»c sinh",hintNoPhotos:"Lá»p nà y chưa có ảnh há»c sinh nà o.",btnManagePhotos:"Tải ảnh lên",hintPartialPhotos:"{{count}}/{{total}} em có ảnh. Em chưa có ảnh vẫn chÆ¡i bình thưá»ng vá»i tên.",warnDownloadNoPhotos:"Bản tải xuá»ng KHÃNG kèm ảnh há»c sinh (ảnh nằm trên máy chá»§). File offline sẽ hiá»n thá» tên như bình thưá»ng.",playsLeft:'Bản dùng thá»: còn <strong>{{count}}</strong> lượt chÆ¡i. Bấm "Bắt Äầu" sẽ trừ 1 lượt.',playsNone:"Bạn Äã dùng hết lượt chÆ¡i thá». Nâng cấp Äá» chÆ¡i không giá»i hạn.",btnCancel:"Há»§y",btnStart:"â¶ Bắt Äầu",btnStartLive:"ðº Bắt Äầu trá»±c tiếp",btnDownload:"⬠Tải xuá»ng",btnDownloading:"Äang tải...",tooltipDownload:"Tải file chÆ¡i offline (má» ÄÆ°á»£c cả khi không có Internet)",tooltipDownloadLocked:"Cần gói còn hiá»u lá»±c Äá» tải file chÆ¡i offline",unitQuestion:"{{count}} câu",labelLiveCheck:"Chế Äá» chÆ¡i trá»±c tiếp",descLiveCheck:"Chia Äôi mà n hình: vòng quay + câu há»i. Giáo viên chá»§ Äá»ng bấm Câu tiếp theo."},library$2={fillAllFields:"Vui lòng chá»n Äầy Äá»§ Cấp há»c, Môn há»c và Lá»p trưá»c khi ÄÆ°a lên thư viá»n."},cloudSave$1={msgProQuota:"Chế Äá» Pro â lưu không giá»i hạn",msgFreeQuota:"Äã lưu {{current}}/{{limit}} game"},viWheelQuiz={myGames:myGames$d,duckRace:duckRace$1,manageGamesModal:manageGamesModal$1,studentImportModal:studentImportModal$1,cloudSaveModal:cloudSaveModal$1,celebrationModal:celebrationModal$1,quizBoard:quizBoard$1,leaderboard:leaderboard$2,randomModeModal:randomModeModal$1,tutorialModal:tutorialModal$1,questionModal:questionModal$1,questionForm:questionForm$1,mixedInput:mixedInput$1,mathInput:mathInput$1,mathComponent:mathComponent$1,formulaInput:formulaInput$1,quizResult:quizResult$1,page:page$f,classes:classes$3,sets:sets$1,form:form$m,playModal:playModal$1,library:library$2,cloudSave:cloudSave$1},myGames$c={successAddStudents:"Successfully added {{count}} students",errorNotEnoughQuestions:"Not enough questions to choose {{count}} different ones. Remaining: {{available}} questions.",errorAddingStudent:"â ï¸ Please add students first!",errorAddingQuestion:"â ï¸ Please add questions first!",successLoadedGame:'Loaded Class/Group "{{name}}"',errorLoadingGame:"Error loading: {{message}}",confirmDeleteGame:'Delete Class/Group "{{name}}"? This action cannot be undone.',successDeletedGame:"Successfully deleted Class/Group",errorDeletingGame:"Error deleting: {{message}}",errorNoScoreBoard:"No scores to export yet",successScoreBoardExported:"Leaderboard has been exported",confirmClearScoreBoard:"Are you sure you want to clear the leaderboard?",successScoreBoardCleared:"Leaderboard has been cleared",confirmClearAll:"Clear all data? This action cannot be undone!",successClearedAll:"Data has been cleared (keeping the first student)",tooltipFullScreenExit:"Exit full screen",btnFullScreenExit:"â Minimize",tooltipSpinning:"Spinning...",tooltipSpinStart:"Start spinning to choose a student",btnSpinning:"ð¡ SPINNING...",btnSpin:"ð¡ SPIN",btnSpinStart:"â¶ï¸ START SPINNING",btnSpinNext:"â¶ï¸ SPIN AGAIN",tooltipTutorial:"View tutorial",tooltipBackDashboard:"Back to Dashboard",exitConfirmTitle:"Exit the game?",exitConfirmDesc:"The leaderboard will not be saved after you exit. Make sure you are done using it. Exit anyway?",exitConfirmBtn:"Exit",tooltipDeleteStudent:"Delete {{name}}",tooltipImportStudents:"Import list of students",btnImport:"+ Import",tooltipLeaderboard:"View leaderboard",btnLeaderboard:"Leaderboard ð",tooltipClearAll:"Clear all data",btnClearAll:"Clear students ðï¸",tooltipToggleSound:"Toggle sound",btnToggleSound:"Toggle sound ð",tooltipFullScreen:"Full screen presentation",btnFullScreen:"Full screen â¶",labelNoRepeatName:"No repeating names",labelAnswerMode:"Answer mode",answerModeAll:"Sequential",answerModeRandom:"Random",tooltipManageQuestions:"Manage questions",btnQuestions:"â Questions ({{count}})",tooltipSpinPick:"Spin to choose a student",btnSpinText:"ð²",btnSpinSubText:"Spin",btnUpgradePro:"â Get FullGame",titleCloud:"âï¸ Class/Group",tooltipSaveCloud:"Save data to cloud",btnSaveCloud:"ð¾ Save data",loading:"â³ Loading...",tooltipLoadGame:"Load {{name}}",tooltipDeleteGame:"Delete {{name}}",btnBack:"â Back",tooltipBackSetup:"Back to setup screen",btnBackSetup:"â Back to Setup",tooltipConfirmAnswer:"Confirm selected answer",btnConfirm:"Confirm",btnConfirming:"Updating...",tooltipNextQuestion:"Move to the next question",btnNextQuestion:"â¡ï¸ Next question",btnEndQuiz:"â End {{name}}'s turn",titleLeaderboard:"ð Leaderboard",titleLeaderboardModal:"Leaderboard",btnCancel:"Cancel",labelSelectionMode:"Selection mode",selectionWheel:"Wheel",selectionDuckRace:"Duck Race",labelLiveCheck:"Live Play Mode",btnEndLiveCheck:"End",students:"students",questions:"questions",tooltipClearLeaderboard:"Clear leaderboard"}
529,duckRace={btnStart:"ð¦ START RACE!",btnRacing:"ð RACING..."},manageGamesModal={title:"Manage Class/Group",loading:"Loading data...",msgLoading:"Loading...",empty:"No Class/Group saved yet",createdAt:"Created at",updatedAt:"Updated at",btnLoad:"Load this Class/Group",btnLoadText:"Load",btnDelete:"Delete this Class/Group",btnClose:"Close",btnCancel:"Cancel",lockedTip:"Upgrade to unlock this wheel",expiredPackage:"Package expired!",renewText:"Renew 30k/year"},studentImportModal={alertEmpty:"Please enter a student list",alertInvalid:"List is invalid",btnAdd:"Import data",btnCancel:"Cancel",hint:"Enter each student name on a new line.",label:"Student list (one per line)",placeholder:`John Doe 530Jane Smith 531Bob Johnson`,title:"Import Student List"},cloudSaveModal={title:"ð¾ Save to Cloud",btnSaveNew:"Save New Class/Group",btnUpdatePrefix:"Update",classesGroups:"Classes/Groups",errorEmptyName:"Please enter a name",labelName:"Class/Group Name:",outOfSlots:"Storage limit reached",placeholderName:"Example: Class 10A1",proAccount:"FullGame mode (Unlimited)",quotaFullDesc:"You cannot create more groups in Free mode.",quotaFullWarning:"You've reached your storage limit ({{limit}} games).",saving:"Saving...",slotsRemaining:"{{count}} slots remaining",labelSelectExisting:"Overwrite existing Class/Group ({{count}}):"},celebrationModal={btnBack:"Back",btnResetQ:"ð Reset asked questions",btnStartQuiz:"Start answering",h3Congrats:"Congratulations",h3NoMoreQ:"â ï¸ No more questions!",pNoMoreQ:"All questions have been answered. Please reset the questions to continue with this student.",pSelected:"has been selected to answer"},quizBoard={noQuestions:"No questions yet",questionNumber:"Question {{current}}/{{total}}",correct:"Correct!",incorrect:"Incorrect! The correct answer is:",submitAnswer:"Confirm",trueShort:"T",falseShort:"F",placeholderShortAnswer:"Enter answer...",audioReplay:"Play again",audioStop:"Stop"},leaderboard$1={emptyTitle:"No scores yet",emptyDesc:"Start playing to update the leaderboard",colRank:"Rank",colStudent:"Student",colScore:"Score",colTime:"Time",statTotal:"Total",statHighest:"Highest Score",statAverage:"Average Score"},randomModeModal={title:"Configure Random Mode",description:"How many random questions will each student answer?",label:"Number of questions:",hintTotal:"Total questions: {{total}}",infoSelect:"Each time a student is chosen:",infoRandomCount:"{{count}} random questions will be selected",infoNextSpin:"The next spin will yield {{count}} different questions",infoNoRepeat:"Ensures no repeated questions in the same session",alertInvalidCount:"Please enter a number between 1 and {{total}}"},tutorialModal={title:"ð¹ Tutorial",tip:"Tip: Click the video to view in full screen or control volume"},questionModal={title:"Add Question",tooltipAI:"Open AI Assistant to generate questions",btnAI:"Generate with AI",questionList:"Question List ({{count}})",labelQuestion:"Question * (Supports math formulas)",placeholderQuestion:"Enter question or math formula",labelOptions:"Options *",placeholderOption:"Option {{number}}",btnAddOption:"Add Option",btnAddQuestion:"Add Question",btnSaveClose:"Save & Close",alertQuestion:"Please enter a question",alertOptions:"Need at least 2 options",alertCorrectAnswer:"Please select the correct answer",labelCorrectAnswer:"Correct answer *",placeholderCorrect:"Select correct answer"},questionForm={btnUpdate:"Update",errorCorrectInOptions:"Correct answer must be one of the options"},mixedInput={placeholder:"Enter question or math formula",hint:"Supports inline text editing (\\\\frac, ^, _, \\\\sqrt, etc.) + MathLive virtual keyboard"},mathInput={placeholder:"Enter math formula"},mathComponent={tooltip:"Math formula (Click to select/delete)"},formulaInput={title:"Enter math formula",label:"Formula (Select virtual keyboard to insert):",placeholder:"Example: \\\\frac{1}{2} or x^2 - 4",btnInsert:"Insert",alertEmpty:"Please enter a formula"},quizResult={msgPerfect:"Excellent! You answered perfectly!",msgGood:"Very good! You've mastered the knowledge!",msgOkay:"Good! Just a little bit more!",msgReview:"You need to review more!",msgTryHarder:"Try harder next time!",labelScore:"Score",labelCorrect:"Correct answers",labelAccuracy:"Accuracy",labelTime:"Time",btnPlayAgain:"Play Again",btnNextStudent:"Next student"},page$e={sidebarTitle:"ð¡ Wheel - Duck Race",navClasses:"Classes",navQuestionSets:"Question Sets",btnUpgradePro:"Get FullGame",quotaTrial:"Used {{current}}/{{limit}} question sets",quotaTrialPlays:"Used {{current}}/{{limit}} play sessions"}
531,classes$2={title:"ð« My Classes",description:"This class list is <strong>shared</strong> across every feature that uses classes â edit it once, it updates everywhere. Click <strong>Play</strong> to choose a question set and start.",btnCreate:"+ Create New Class",btnAdvanced:"âï¸ Advanced manager",btnCreateFirst:"+ Create First Class",emptyTitle:"No classes yet",emptyDesc:"Create a class and add students to start playing Wheel Quiz.",demoTitle:"ð¦ Demo Class - Duck Race",demoHint:"Try the duck race with 20 sample students before creating your own class",pinBanner:"Pin favorite classes to keep using them when the package expires",pinCount:"({{current}}/{{limit}} pinned)",expiredWarning:"â ï¸ Package expired!",btnRenew:"Renew",labelStudentCount:"{{count}} students",btnPlay:"â¶ Play",tooltipEdit:"Edit class",tooltipDelete:"Delete class",dialogCreateTitle:"Create New Class",dialogEditTitle:"Edit Class: {{name}}",labelClassName:"Class Name",labelStudentList:"Student List (one name per line)",placeholderStudentList:`John Doe 532Jane Smith 533Bob Johnson`,studentCount:"{{count}} students",btnCancel:"Cancel",btnSave:"Save",btnSaving:"Saving...",dialogDeleteTitle:"Delete Class",dialogDeleteDesc:"The class will be permanently deleted. This action cannot be undone.",btnConfirmDelete:"Delete",errorLoad:"Error loading class list",errorName:"Please enter a class name",errorMinStudent:"Class must have at least 1 student",successCreate:"Successfully created new class",successUpdate:"Successfully updated class",successDelete:"Successfully deleted class",successPin:"Pinned class",successUnpin:"Unpinned class",warningPinLimit:"Reached limit of {{limit}} pinned classes",errorDelete:"Delete failed",errorSave:"Save failed",hintMaxStudents:"One name per line. Up to {{max}} students per class.",errorOverLimit:"The list has {{count}} students, over the {{max}} limit. Please remove some."},sets={title:"ð Question Sets",description:"Manage question sets to use when starting a game.",btnCreate:"+ Create New Set",btnCreateFirst:"+ Create First Set",emptyTitle:"No question sets yet",emptyDesc:"Create a question set to use when playing Wheel Quiz.",labelQuestionCount:"{{count}} questions",tooltipEdit:"Edit question set",tooltipDelete:"Delete",btnPrev:"Previous",btnNext:"Next",labelPage:"Page {{page}}",dialogDeleteTitle:"Delete Question Set",dialogDeleteDesc:"This question set will be permanently deleted. This action cannot be undone.",btnConfirmDelete:"Delete",errorLoad:"Error loading question set list",successDelete:"Successfully deleted question set",errorDelete:"Delete failed"},form$l={titleCreate:"Create New Question Set",titleEdit:"Edit Question Set",labelTitle:"Question Set Name",labelQuestions:"Questions ({{count}})",btnClearAll:"Clear All",confirmClearAll:"Clear all questions?",btnPicker:"Select from Bank or AI",btnManual:"Manual Input",listHeader:"Question List",labelAnswers:"â {{count}} answers",emptyQuestions:"No questions yet",emptyQuestionsDesc:"Select from the question bank or enter manually.",btnCancel:"Cancel",btnSave:"Save",btnSaving:"Saving...",errorNoTitle:"Please enter a question set name",errorNoQuestions:"Question set must have at least 1 question",errorLoad:"Error loading question set",successAdd:"Successfully added {{count}} questions",successUpdate:"Successfully updated question",successDelete:"Successfully deleted question {{index}}",successClear:"Successfully deleted all questions",errorSave:"Save failed, please try again",warningTooLarge:"Quiz is too large, cannot upload to Community Library. Quiz saved successfully.",pickerTitle:"Select Questions",btnLesson:"From existing lesson",lessonPickerTitle:"Select a lesson to get questions from",lessonPickerNoMatch:"No matching questions ({{count}} questions skipped).",lessonPickerPartial:'Added {{added}} questions from "{{title}}". Skipped {{skipped}} incompatible questions.',lessonPickerSuccess:'Added {{added}} questions from "{{title}}".'},playModal={title:"ð¡ Start Playing",labelClass:"Class: <strong>{{name}}</strong> â {{count}} students",labelSelectSet:"Select question set:",labelNone:"ð¯ No questions needed",descNone:"Just spin / race to choose a name",noSets:"No question sets yet.",btnCreateNow:"Create now",labelQuestionMode:"Question mode:",modeAll:"
533ð All ({{count}} questions)",modeRandom:"ð² Random",labelRandomCount:"Questions per turn:",countSuffix:"/ {{count}} questions",labelGameSettings:"Game settings:",labelSelectionMode:"Student selection mode:",modeWheel:"ð¡ Wheel",modeDuckRace:"ð¦ Duck Race",labelDuration:"â± {{mode}} time:",durationModeSpin:"spin",durationModeRace:"race",durationSuffix:"sec",labelAnswerMode:"Answer mode:",answerSequential:"ð Sequential",answerRandom:"ð² Random",labelNoRepeat:"No repeating names",labelUsePhotos:"Use student photos",hintNoPhotos:"This class has no student photos yet.",btnManagePhotos:"Upload photos",hintPartialPhotos:"{{count}}/{{total}} students have photos. Students without a photo still play using their name.",warnDownloadNoPhotos:"The downloaded file does NOT include student photos (photos live on the server). The offline file shows names as usual.",playsLeft:'Trial: <strong>{{count}}</strong> play sessions left. Pressing "Start" uses one.',playsNone:"You have used all trial play sessions. Upgrade for unlimited play.",btnCancel:"Cancel",btnStart:"â¶ Start",btnStartLive:"ðº Start Live",btnDownload:"⬠Download",btnDownloading:"Downloading...",tooltipDownload:"Download an offline copy (works without Internet)",tooltipDownloadLocked:"An active plan is required to download the offline file",unitQuestion:"{{count}} questions",labelLiveCheck:"Live Play Mode",descLiveCheck:"Split screen: wheel/race + questions. Teacher controls Next manually."},library$1={fillAllFields:"Please select School Level, Subject, and Grade before publishing to the library."},cloudSave={msgProQuota:"FullGame mode â unlimited saves",msgFreeQuota:"Saved {{current}}/{{limit}} games"},enWheelQuiz={myGames:myGames$c,duckRace,manageGamesModal,studentImportModal,cloudSaveModal,celebrationModal,quizBoard,leaderboard:leaderboard$1,randomModeModal,tutorialModal,questionModal,questionForm,mixedInput,mathInput,mathComponent,formulaInput,quizResult,page:page$e,classes:classes$2,sets,form:form$l,playModal,library:library$1,cloudSave},title$7="ð My Activities",subtitle$1="{{count}} items created",searchHint$1="Search by name...",tabs$4={all:"All"},error$5="Failed to load data. Please try again.",empty$4={noResults:"No results found",noContent:"No content yet",tryAnother:"Try another keyword",startCreating:"Start creating content from the Dashboard tools",backToDashboard:"Back to Dashboard"},actions$5={view:"View",edit:"Edit",assign:"Assign",assignTitle:"Assign homework",teacherShare:"Share with Teachers"},features$2={"interactive-video":"Interactive Video","panorama-museum":"Panorama Museum","quiz-game":"Drag & Drop - Matching","hand-slash-quiz":"Fruit Slash Quiz","flip-puzzle-game":"Flip Puzzle Game","crossword-puzzle":"Crossword Puzzle","tug-of-war-game":"Knowledge Tug of War","paced-quiz":"Paced Quiz","interactive-image":"Interactive Image","head-tilt-quiz":"Head Tilt Quiz","pose-quiz":"Pose Quiz (Exercise ABC)","versus-game":"Versus Game","wheel-quiz":"Lucky Wheel - Duck Race","turn-based-game":"Turn-based Game",flashcard:"Flashcards","mind-map":"Mind Map",minesweeper:"Minesweeper","flying-words-game":"Flying Words"},itemDefaults$1={"interactive-video":"Untitled Lesson","panorama-museum":"Untitled Room","quiz-game":"Untitled Quiz","hand-slash-quiz":"Untitled Lesson","flip-puzzle-game":"Untitled Game","crossword-puzzle":"Untitled Crossword","tug-of-war-game":"Untitled Game","paced-quiz":"Untitled Quiz","interactive-image":"Untitled Image","head-tilt-quiz":"Untitled Lesson","pose-quiz":"Untitled Lesson","versus-game":"Untitled Game","wheel-quiz":"Untitled Wheel","turn-based-game":"Untitled Game"},publish$1={title:"Community Library",submitToLibrary:"Public to Community Library",saveForMeOnly:"Save for me only",schoolLevel:"School Level *",subject:"Subject *",grade:"Grade *",uploadLimitReached:"You have reached the upload limit. Get FullGame to share more.",upgradeProTooltip:"Get FullGame to support the community",copyrightLabel:"I confirm that this content was created by me or that I have the right to share it, and it does not infringe any third-party copyright.",copyrightRequiredError:"Please confirm the content copyright before publishing to the library",levels:{"mam-non":"Preschool","tieu-hoc":"Primary School",thcs:"Junior High School",thpt:"High School",khac:"Other"},subjects:{"phat-trien-the-chat":"Physical","phat-trien-nhan-thuc":"Cognitive","ph
533at-trien-ngon-ngu":"Language","phat-trien-tinh-cam":"Social-Emotional","phat-trien-tham-my":"Aesthetic","tieng-viet":"Vietnamese",toan:"Mathematics","ngoai-ngu-1":"Foreign Language 1","ngoai-ngu-2":"Foreign Language 2","giao-duc-loi-song":"Lifestyle Education","dao-duc":"Ethics","tu-nhien-xa-hoi":"Nature & Society","lich-su-dia-ly":"History & Geography","khoa-hoc":"Science","tin-hoc-cong-nghe":"ICT & Tech","giao-duc-the-chat":"PE","nghe-thuat":"Arts","tieng-dan-toc":"Ethnic Language","ngu-van":"Literature",gdcd:"Citizenship","khoa-hoc-tu-nhien":"Natural Science","cong-nghe":"Technology","tin-hoc":"ICT","gdqp-an":"Defense Education","gd-kinh-te-phap-luat":"Eco & Law","lich-su":"History","dia-ly":"Geography","vat-ly":"Physics","hoa-hoc":"Chemistry","sinh-hoc":"Biology",khac:"Others"},grades:{1:"Grade 1",2:"Grade 2",3:"Grade 3",4:"Grade 4",5:"Grade 5",6:"Grade 6",7:"Grade 7",8:"Grade 8",9:"Grade 9",10:"Grade 10",11:"Grade 11",12:"Grade 12","nha-tre":"Nursery","mau-giao-3-4":"KG 3-4","mau-giao-4-5":"KG 4-5","mau-giao-5-6":"KG 5-6",khac:"Other"}},community$1={title:"Community Library",description:"Explore and save lessons from the teacher community",tabs:{explore:"Explore",mine:"My Posts"},filters:{level:"School Level",subject:"Subject",grade:"Grade",gameType:"Game Type",allSubjects:"All Subjects",allGrades:"All Grades",allTypes:"All Types",searchPlaceholder:"Search by title...",searchBtn:"Search",searchHint:"Press Search to see results",clearFilters:"Clear filters ({{count}})"},explore:{selectBase:"Select level and subject to find lessons",selectBaseDesc:"Filter by Preschool, Primary, Junior High, or High School",selectSubject:"Next, select a subject",selectSubjectDesc:"Then press Search to see results",noResults:"No lessons found",noResultsDesc:"Try changing the filters"},mine:{empty:"You haven't posted any lessons",emptyDesc:'When creating a lesson, select "Public to Community Library" to contribute',removeConfirm:'Remove "{{title}}" from the Community Library?',removeTooltip:"Remove from Community Library"},card:{questions:"{{count}} questions",by:"By {{author}}",anonymous:"Anonymous",reportTooltip:"Report inappropriate content",viewAndSaveTooltip:"Preview and save to your account",btnSave:"View & Save"},detail:{questions:"questions",postedBy:"Posted by",loadError:"Failed to load lesson details.",saveSuccess:"Saved to your account!",saveSuccessDesc:"The lesson has been added to your list.",previewTitle:"Preview questions:",moreQuestions:"... and {{count}} more questions",alreadyClonedHint:"You've already saved this lesson. Do you want to save it again?",btnCancel:"Cancel",btnCloneAgain:"Save anyway",btnClone:"Save to account",btnGoToTool:"Go to {{name}}",generalError:"Something went wrong. Please try again."}},report$4={title:"Report Lesson",desc:"Please tell us why you are reporting this lesson.",success:"â Thank you! Your report has been received.",alreadyReported:"You have already reported this lesson.",submitError:"Something went wrong. Please try again.",noteLabel:"Additional notes (optional)",btnSubmit:"Submit Report",reasons:{inappropriate:"Inappropriate content",spam:"Spam / duplicate",copyright:"Copyright violation",other:"Other"}},enLibrary={title:title$7,subtitle:subtitle$1,searchHint:searchHint$1,tabs:tabs$4,error:error$5,empty:empty$4,actions:actions$5,features:features$2,itemDefaults:itemDefaults$1,publish:publish$1,community:community$1,report:report$4},page$d={title:"ð¤ Companion Robot",loginToAccess:"Please log in to access Robot feature",sidebar:{myRobots:"My Robots",createNew:"Create New Robot",changeApiKey:"Change API Key"},help:{title:"Companion Robot Guide",description:"Learn how to create and use AI Companion Robots"}},list$5={loading:"Loading robot list...",errorLoad:"Error loading robots: ",apiWarning:"Due to API provider limitations, your Robots are limited to 20 messages per day. Please use them considerately",empty:{title:"No robots yet",subtitle:"Create your first robot to get started!",btnCreate:"â Create first robot"},header:"ð¤ My Robots ({{count}})",pinBanner:{count:"({{pinned}}/{{limit}} pinned)",expired:"â ï¸ Plan expired!",renew:"Renew"},card:{renewToOpen:"ð Renew to open this robot",public:"Public",private:"Private",tooltipChat:"Chat with robot",tooltipShare:"Share link",tooltipEdit:"Edit",tooltipDelete:"Delete",shareSuccess:"Share link copied"},delete:{title:"â ï¸ Confirm Delete Robot",confirm:"Are you sure you want to delete this robot? This action cannot be undone.",btnCancel:"No, Cancel",btnConfirm:"Yes, Delete Robot",success:"Robot deleted successfully",error:"Error deleting robot"}},form$k={editTitle:"âï¸ Edit Robot",createTitle:"â Create New Robot",sectionBasic:"ð Basic Information",nameLabel:"Robot Name *",namePlaceholder:"e.g: Ms. Hoa, Mr. Minh",topicLabel:"Topic *",topicPlaceholder:"e.g: Writing poetry, Writing practice",sectionPersonality:"ð¨ Robot Personality",speechLabel:"Robot speaks as *",addressLabel:"Call student as *",styleLabel:"Speaking style *",voiceLabel:"Vietnamese Voice (Requires Microsoft Edge and Vietnamese voice pack)",voiceHint:"Most computers might not have sufficient voice support!",voicePlaceholder:"-- Select voice --",voiceError:"Computer does not have Vietnamese voice pack installed.",sectionAvatar:"ð¼ï¸ Robot Avatar",avatarLabel:"Select avatar *",sectionTraining:"ð Training Content",contentLabel:"Content *",contentHint:'Enter content to "train" the robot. You can add links in format: https://...',contentPlaceholder:`Example: 534 5351. Proverb: 'Practice makes perfect'
536Meaning: People who work hard will achieve success 537 5382. Tale of Kieu, link: https://example.com/kieu`,sectionApi:"ð Gemini API Configuration",apiConfigured:"API key configured",apiNotConfigured:"API key not configured",btnChangeApi:"Change API",btnConfigApi:"Configure API",btnPreview:"ðï¸ Preview",btnCancel:"Cancel",btnSaving:"â³ Saving...",btnUpdate:"ð¾ Update",btnCreate:"â Create Robot",errorEmptyName:"Please enter robot name",errorEmptyContent:"Please enter training content",errorNoApi:"Please configure Gemini API",errorLimit:"Error checking limit",successCreate:"Robot created successfully",successUpdate:"Robot updated successfully",errorSave:"Error saving robot",avatarNames:{robot:"Robot","teacher-female":"Female Teacher","teacher-male":"Male Teacher","student-male":"Male Student","student-female":"Female Student"},styles:{"gần gÅ©i":"ð Friendly","chuyên nghiá»p":"ð¼ Professional","nghiêm túc":"ð Serious","hà i hưá»c":"ð Humorous"},speechOptions:{cô:"Ms.",thầy:"Mr.",tôi:"I"},studentTerms:{em:"Student",con:"Child",bạn:"Friend"}},chat={fullscreenError:"Cannot enter fullscreen mode",exitFullscreenError:"Cannot exit fullscreen mode",responseError:"Error receiving robot response",noSpeechSupport:"Browser does not support voice input",voiceInputError:"Failed to receive voice, please try again",btnFullscreen:"Fullscreen",btnExitFullscreen:"Exit Fullscreen",btnBack:"Back",btnClose:"Close",welcome:"Hello, {{term}}!",intro:"I am {{speech}} {{name}}.",startTopic:`Let's start our conversation about "{{topic}}"`,listening:"ð Listening to voice...",inputPlaceholder:"Enter question or comment...",tooltipVoice:"Voice Input",tooltipRecording:"Listening... (click to stop)",recordingStatus:"ð´ Listening...",friendlyMessages:{API_KEY_MISSING:"ð You haven't entered an API key. Please go to Change API key to add one from Google AI Studio!",API_KEY_INVALID:"ð Invalid API key! It might be wrong or revoked. Please check it in Change API key.",API_QUOTA_EXCEEDED:"â³ Your API key has exceeded the free daily limit. Please try again tomorrow or use another key!",API_OVERLOAD:"ð AI server is too busy right now. Please try again in a few seconds!",NETWORK_ERROR:"ð¡ Network connection lost! Please check your internet and try again.",DEFAULT:"ð An error occurred, I couldn't respond. Please try again later!",API_ALL_MODELS_EXHAUSTED:"ð´ All AI models have used up their free quota for today. Please come back tomorrow!"}},api={title:"Gemini API Configuration",label:"Gemini API Key *",placeholder:"Enter your API key",errorEmpty:"API key cannot be empty",getApiKey:"Get API key from Google AI Studio",guideTitle:"Gemini API Usage Guide",step1:"Go to Google AI Studio",step2:"Sign in with Google account",step3:'Click "Create API key"',step4:"Copy API key and paste it above",videoGuide:"Video Guide",freeApiKey:"Get free API key",btnCancel:"Cancel",btnSave:"Save"}
538,preview={title:"ðï¸ Robot Preview: {{name}}",btnBack:"â Back",labelTopic:"Topic:",labelStyle:"Style:",labelCalling:"Calling:",labelContent:"Content:",placeholderChat:"Try chatting with robot...",welcomeHint:'Try asking me about "{{topic}}" to see how the robot works.'},enCompanion={page:page$d,list:list$5,form:form$k,chat,api,preview},page$c={title:"â Hand Slash Quiz",upgradeLabel:"Unlock Feature",helpLabel:"User Guide",helpTitle:"Hand Slash Quiz Guide",helpDescription:"Learn how to create a Hand Slash Quiz for students to play and learn",sidebar:{myLessons:"My Lessons",createNew:"Create New"}},list$4={title:"ð My Lessons",subtitle:"Manage your Hand Slash Quizzes",expired:"â ï¸ Plan expired!",renew:"Renew",empty:"You have no lessons yet",createFirst:"â Create Your First Lesson",demo:{title:"Hand Slash Quiz - Demo",badge:"Demo",hint:"Try this demo to experience the game before creating your own"},lockedHint:"ð Renew to unlock this lesson",stats:"{{count}} questions",updated:"Updated: {{date}}",btnPlay:"Play",btnEdit:"Edit",btnAssign:"Assign",btnDelete:"Delete",tooltipPlay:"Play now",tooltipEdit:"Edit lesson",tooltipAssign:"Assign to students",tooltipDelete:"Delete lesson",deleteConfirmTitle:"ðï¸ Confirm Delete",deleteConfirmText:"Are you sure you want to delete this lesson? This action cannot be undone.",deleteSuccess:"Lesson deleted successfully",deleteError:"Could not delete lesson",loadError:"Could not load lessons",speeds:{fast:"Fast",medium:"Medium",slow:"Slow"},freeLessons:"You have {{remaining}}/{{limit}} free lessons remaining",quotaExceeded:"You have no free credits left. Please upgrade your account.",assignSuccess:"Assignment created with code: {{code}}",btnCancel:"Cancel"},form$j={titleCreate:"â Create New Lesson",titleEdit:"âï¸ Edit Lesson",lessonName:"Lesson Title",speedTitle:"ð Fruit Speed",speedFast:"ð Fast",speedMedium:"â¡ Medium",speedSlow:"ð¢ Slow",useBackground:"ð¼ï¸ Use Background (hide camera)",noCamera:"ð· Use camera (slash with your hand)",questionsTitle:"Questions ({{current}}/{{max}})",questionNum:"Question {{num}}",questionPlaceholder:"Enter question...",answerColors:{green:"Green",red:"Red",yellow:"Yellow",purple:"Purple"},answerLabel:"Answers (check the correct one):",btnAddQuestion:"Add Question",btnSelectFromBank:"ðï¸ Pick from Bank",btnCancel:"Cancel",btnSave:"Save Lesson",saving:"Saving...",errorTitleRequired:"Please enter lesson title",errorMinQuestions:"At least 1 question is required",errorQuestionEmpty:"Question {{num}} cannot be empty",errorCorrectRequired:"Question {{num}} must have a correct answer",errorAnswerEmpty:"Question {{num}} has an empty answer",errorMaxQuestions:"Maximum {{max}} questions allowed",loadError:"Could not load lesson",bankPickerTitle:"Select questions for Hand Slash Quiz",bankValidation:"{{count}} questions are not suitable for Hand Slash Quiz (require exactly 4 answers):",bankAddSuccess:"â
Added {{count}} questions from Question Bank",bankLimitError:"Cannot add {{count}} questions. Max {{max}}, current {{current}}.",addFromLesson:"ð From existing lesson",selectFromBankOrAI:"ðï¸ Select from Bank or AI",manualEntry:"âï¸ Manual entry",bankAddMixedSuccess:"Added {{count}} questions. Skipped {{skipped}} incompatible questions.",errorNoQuestionsCompatible:"No compatible questions for Hand Slash (require at least 2 answers)."},game$2={score:"Score",time:"Time",gameOver:"GAME OVER!",finalScore:"Your Score",btnAgain:"Play Again",btnExit:"Exit",totalQuestions:"Total {{count}} questions",wrongHint:"Wrong Slash!",correctHint:"CORRECT!",correctFeedback:"YES!!",loading:"Loading camera...",noCameraMode:"No Camera Mode",paused:"Paused",btnResume:"Resume",completed:"Completed!",questionNum:"Question {{num}}",seconds:"seconds",minimize:"Minimize",fullscreen:"Full Screen",answeredCount:"You answered {{count}} questions",lessonBy:"Lesson by {{name}}",linkExpired:"Sharing link might have been deleted or no longer exists",errorWebGL:"Your browser does not support WebGL. Please try closing other tabs or use Google Chrome.",errorGeneric:"Could not initialize hand tracking. Please try again.",errorHint:'You can switch to "No Camera" mode (slash with mouse/touch) to continue playing.',copyPreparing:"Preparing...",copiedSuccess:"â Copied!",copyAnalysis:"Copy to analysis tool"},instructions$2={title:"How to Play Hand Slash Quiz",step1Title:"1. Allow camera access",
538step1Desc:'The game needs camera access to recognize your hand. Please click "Allow" at the top left of your browser.',step2Title:"2. Slash fruits with your finger",step2Desc:"Move your finger quickly across the screen to slash the correct answer",step3Title:"3. Pick the correct answer",step3Desc:"Slashing wrong answers will deduct points, slash correctly and quickly for high scores!",tip:"ð¡ Tip: Move your hand quickly and accurately to score high!",btnFullscreen:"Full Screen",btnReady:"Ready to Play!"},demo$9={title:"Hand Slash Quiz Demo",subtitle:"Play now with {{count}} sample questions!",instructions:"Play Instructions:",step1:"1ï¸â£ Allow camera access when prompted",step2:'2ï¸â£ Use your index finger to "slash" the answers',step3:"3ï¸â£ Choose correct answers to get points",step4:"4ï¸â£ Avoid touching incorrect answers!",note:"â ï¸ Note: You need a webcam/camera to play this game",btnStart:"ð® Start Playing Now",version:"Demo version - {{count}} sample questions"},enHandSlash={page:page$c,list:list$4,form:form$j,game:game$2,instructions:instructions$2,demo:demo$9},pageTitle$9="ð§© Flip Puzzle",myPuzzles="My Puzzles",createNew$a="Create New Puzzle",helpTitle="Flip Puzzle Guide",helpDesc="Learn how to create Flip Puzzles for students to play and learn",loadingPuzzles="â³ Loading puzzles...",errorLoading$7="â Error loading puzzles",confirmDelete$3="Are you sure you want to delete this puzzle?",deleteSuccess$6="â
Puzzle deleted",deleteError$3="â Error deleting puzzle",emptyPuzzles="ð No puzzles yet",createFirst$3="â Create First Puzzle",demo$8={title:"Flip Puzzle - Demo",badge:"Demo",hint:"Try this demo to experience the feature before creating your own"},cellsCount="{{count}} cells",play$4="Play",edit$3="Edit",assign$8="Assign",upgradeToUnlock$3="ð Upgrade to unlock",packageExpired$6="â ï¸ Package expired!",extendSubscription$6="Extend Subscription",editFormTitle$3="Edit Puzzle",createFormTitle$3="Create New Puzzle",usageCount$3="ð Used <strong>{{current}}/{{limit}}</strong> puzzles",unlimitedAccess="â
You are using {{mode}} mode - Unlimited",puzzleTitleLabel="Puzzle Title:",titlePlaceholder$6="Enter title...",answerNameLabel="Image Name (The answer students need to guess):",answerPlaceholder="e.g., Eiffel Tower, Sun...",imageSourceTitle="ð¸ Image Source",uploadImageRadio="Upload Image",useUrlRadio="Use Image URL",compressingAndUploading="â³ Compressing and uploading image...",urlPlaceholder="Enter image URL (e.g., https://example.com/image.jpg)",useButton="Use",uploadSuccess="â
Image uploaded!",pieceColorLabel="ð¨ Piece Color",colorBlue="Blue",colorGreen="Green",colorPurple="Purple",colorGradient="Gradient",colorRandom="Random",gridConfigTitle="ð¢ Grid Configuration",gridSizeLabel="Grid Size:",gridSizeOption="{{rows}}x{{cols}} ({{count}} cells)",cellSizeModeLabel="Cell Size Mode:",equalSizeMode="Equal",randomSizeMode="Random (like real puzzle)",timeLimitLabel="Time limit per question (seconds, 0 = unlimited):",questionsCountTitle="â Questions ({{count}}/{{total}})",clearAllButton="ðï¸ Clear All",pickFromBankButton="ðï¸ Pick from Bank or AI",pickFromLessonButton="From existing lesson",lessonPickerTitle$3="Select a lesson to get questions from",manualInputButton="âï¸ Manual Input",enoughQuestions="â
All {{total}} questions added",questionsListHeader="Questions List ({{count}}/{{total}})",answersCount$3="{{count}} answers",editQuestionTitle="Edit this question",deleteQuestionTitle="Delete this question",noQuestions="ð No questions yet",noQuestionsHint="Pick from Bank or AI, or Manual Input to start",saving$6="ð¾ Saving...",savePuzzle="ð¾ Save Puzzle",cancelPuzzle="Cancel",toastUploadSuccess="â
Image uploaded successfully!",toastUploadError="â Error uploading image: ",toastUrlWarning="â ï¸ Please enter an image URL",toastUrlSuccess="â
Image URL applied!",toastUrlError="â Invalid URL",toastRemainingWarning="â ï¸ Only {{remaining}} cells left. You are selecting {{selected}} questions.",toastQuestionsAdded="â
Added {{count}} questions ({{current}}/{{total}})",toastQuestionsTrimmed="â ï¸ The new grid has only {{total}} cells â dropped the last {{dropped}} questions.",toastQuestionsRoomLeft="â¹ï¸ The new grid has {{total}} cells â {{remaining}} more questions needed.",toastQuestionUpdated="â
Question updated",toastQuestionDeleted="ðï¸ Deleted question {{index}}",confirmClearAll="Delete all questions?",toastClearAll="ðï¸ All questions deleted",errorTitleRequired$3="â Please enter a puzzle title",errorImageRequired="â Please upload an image",errorAnswerRequired="â Please enter the image name (
538answer)",errorQuestionsCount="â Please select {{total}} questions",toastUpdateSuccess$3="â
Puzzle updated!",toastCreateSuccess$3="â
New puzzle created!",toastLimitReached$3="â ï¸ You have used all 8 free puzzles. Please upgrade to continue.",toastSaveError$3="â Error saving puzzle: ",player$d={back:"â Back",revealAnswer:"ð Reveal Image Name",exitFullscreen:"ð Exit Fullscreen",fullscreen:"ðµ Fullscreen",progressText:"{{revealed}}/{{total}} cells ({{percentage}}%)",questionHeader:"â Question - Cell #{{number}}",questionImageAlt:"Question Image",answerImageAlt:"Answer {{letter}}",cancel:"â Cancel",submitAnswer:"â
Submit",confirmRevealTitle:"ð Reveal Image",confirmRevealText:"Are you sure you want to reveal the image?",no:"â No",yes:"â
Yes, reveal image",victoryTitle:"ð Image Name:",toastCorrect:"â
Correct! Cell revealed",toastIncorrect:"â Incorrect! Try again"},decode={title:"ð Reveal Image Name",readyToGuess:"Are you ready to guess the image name?",guessPlaceholder:"Enter image name...",confirm:"â
Confirm"},share$2={loading:"â³ Loading puzzle...",error:"â Error",notFound:"Puzzle not found",backHome:"â Back to Home",footerText:"ð§© Create your own puzzle at",brand:"Giáo Viên Äá»i Má»i"},victory={congrats:"ð Congratulations!",completedMsg:"You have completed the puzzle!",imageNameLabel:"Image Name:",finishButton:"⨠Finish"},canvas={loadingImage:"â³ Loading image...",puzzleImageAlt:"Puzzle Image"},enFlipPuzzle={pageTitle:pageTitle$9,myPuzzles,createNew:createNew$a,helpTitle,helpDesc,loadingPuzzles,errorLoading:errorLoading$7,confirmDelete:confirmDelete$3,deleteSuccess:deleteSuccess$6,deleteError:deleteError$3,emptyPuzzles,createFirst:createFirst$3,demo:demo$8,public:"Public",private:"Private",cellsCount,play:play$4,edit:edit$3,assign:assign$8,delete:"Delete",upgradeToUnlock:upgradeToUnlock$3,packageExpired:packageExpired$6,extendSubscription:extendSubscription$6,editFormTitle:editFormTitle$3,createFormTitle:createFormTitle$3,usageCount:usageCount$3,unlimitedAccess,puzzleTitleLabel,titlePlaceholder:titlePlaceholder$6,answerNameLabel,answerPlaceholder,imageSourceTitle,uploadImageRadio,useUrlRadio,compressingAndUploading,urlPlaceholder,useButton,uploadSuccess,pieceColorLabel,colorBlue,colorGreen,colorPurple,colorGradient,colorRandom,gridConfigTitle,gridSizeLabel,gridSizeOption,cellSizeModeLabel,equalSizeMode,randomSizeMode,timeLimitLabel,questionsCountTitle,clearAllButton,pickFromBankButton,pickFromLessonButton,lessonPickerTitle:lessonPickerTitle$3,manualInputButton,enoughQuestions,questionsListHeader,answersCount:answersCount$3,editQuestionTitle,deleteQuestionTitle,noQuestions,noQuestionsHint,saving:saving$6,savePuzzle,cancelPuzzle,toastUploadSuccess,toastUploadError,toastUrlWarning,toastUrlSuccess,toastUrlError,toastRemainingWarning,toastQuestionsAdded,toastQuestionsTrimmed,toastQuestionsRoomLeft,toastQuestionUpdated,toastQuestionDeleted,confirmClearAll,toastClearAll,errorTitleRequired:errorTitleRequired$3,errorImageRequired,errorAnswerRequired,errorQuestionsCount,toastUpdateSuccess:toastUpdateSuccess$3,toastCreateSuccess:toastCreateSuccess$3,toastLimitReached:toastLimitReached$3,toastSaveError:toastSaveError$3,player:player$d,decode,share:share$2,victory,canvas},featureTitle$2="â±ï¸ Paced Quiz",myQuizzes$3="My Quizzes",createNew$9="Create New Quiz",help={title:"Paced Quiz Instructions",description:"Learn how to create quizzes, organize team matches, and presentation mode."},loadingList="Loading quiz list...",errorLoading$6="Failed to load quiz list",errorStartSession="Failed to start session. Please try again.",errorDelete="Failed to delete quiz",errorDuplicate="Failed to duplicate quiz",emptyState={title:"No quizzes yet",description:'Click "Create New Quiz" to start creating a paced quiz'},demo$7={title:"Paced Quiz - Demo",badge:"Demo",hint:"Preview how teacher and students interact in real time â try before you create",previewTitle:"Paced Quiz Feature Preview",teacherScreen:"Teacher Screen",studentScreen:"Student Screen",timeLeft:"Time left",revealAnswers:"Reveal Answers",nextQuestion:"Next Question â",finish:"Finish",studentInstruction:"Students tap their answer on their own device:",studentsAnswered:"{{count}}/{{total}} students answered",modeHint:"Paced Mode: Teacher controls the pace, students answer on their phones â no paper needed! There's also Presentation Mode, used to display questions on a big screen for the whole class; and Free Mode, where students work at their own pace and get instant feedback after each question.",finishedTitle:"Preview complete!",finishedDesc:"You've seen how the feature works. Create your own quiz to start teaching for real!",restart:"Watch again",createOwn:"Create my quiz â"},card$2={questionsCount:"{{count}} questions",unknownDate:"Unknown date",action:{start:"Start",edit:"Edit",delete:"Delete"},upgradeToUnlock:"ð Upgrade to unlock this quiz"},modeDialog={title:"Select Quiz Mode",presentation:{label:"Presentation",desc:"Teacher presents on screen, students answer directly",longDesc:"Presentation Mode: No need to share code. Teacher presents questions on a big screen, students raise hands or answer directly."},individual:{label:"Paced",desc:"Students scan code, pick a character or enter name",longDesc:"Paced Mode: Students scan QR code, pick an emoji character or enter the
538ir name to join. Students answer questions but CANNOT advance themselves â only the teacher can, ensuring a steady pace in class.",joinModeLabel:"How students join:",joinModeEmoji:"Pick a character (emoji)",joinModeName:"Enter name"},free:{label:"Free Pace",desc:"Students work at their own pace, instant feedback",longDesc:"Free Mode: Students scan the code and work at their own pace. Instant feedback after each question. Leaderboard at the end or when teacher stops.",duration:"Duration (minutes)",durationPlaceholder:"Leave empty or 0 for unlimited",durationHelper:"Leave empty or enter 0 for unlimited time"},cancel:"Cancel",start:"Start",shuffleLabel:"Shuffle question order",shuffleHelper:"Each session gets a random question order â discourages memorising by position or copying between students."},deleteDialog={title:"Confirm Delete",confirm:'Are you sure you want to delete quiz "{{title}}"?',deleting:"Deleting...",delete:"Delete",cancel:"Cancel"},form$i={editTitle:"Edit Quiz",createTitle:"Create New Quiz",basicInfo:"ð Basic Information",titleLabel:"Quiz Title:",titlePlaceholder:"Enter quiz title...",timeLimitLabel:"Time limit per question (seconds, 0 = unlimited):",questionsTitle:"â Questions ({{count}})",clearAll:"ðï¸ Clear All",pickFromBank:"ðï¸ From Bank or AI",manualInput:"âï¸ Manual Input",listHeader:"Question List ({{count}})",answersGrid:"{{count}} answers ⢠Correct: {{correct}}",editQuestion:"Edit this question",deleteQuestion:"Delete this question",emptyQuestions:"ð No questions yet",emptyQuestionsHint:"Pick from Bank/AI or enter manually to start",cancel:"Cancel",saving:"ð¾ Saving...",save:"ð¾ Save Quiz",errorTitle:"Please enter a quiz title",errorMinQuestions:"Must have at least 1 question",errorQuestionContent:"Question {{index}}: Please enter question text or add an image",errorMinOptions:"Question {{index}}: Must have at least {{count}} options",errorOptionContent:"Question {{index}}: Please enter text or image for option {{key}}",errorCorrectAnswer:"Question {{index}}: Please select the correct answer",errorSave:"An error occurred while saving the quiz. Please try again.",pickingTitle:"Select Questions for Paced Quiz",listeningTitle:"Shared listening file",listeningHint:"Upload one audio file for the whole quiz â students listen, then answer every question. Leave empty if there is no listening part.",allowReplayLabel:"Let students replay the audio",allowReplayOn:"Students can play and stop the audio freely during the quiz.",allowReplayOff:"â ï¸ Students get EXACTLY ONE play. Once it finishes (or they stop it midway) the button locks â just like a real exam.",listeningProNote:"Uploading or recording a listening file is a FullGame feature. Everything else in the quiz still works normally.",listeningProBtn:"Upgrade"},control={loading:"Loading...",sessionNotFound:"Session not found",revealAnswer:"Reveal Answer",nextQuestion:"Next Question",reports:"ð REPORTS",stop:"Stop",stopAndResults:"Stop & View Results",confirmEnd:"End Session?",confirmEndDesc:"Are you sure you want to end this session? Leaderboard will be shown and session data will be cleared.",cancel:"Cancel",finish:"Finish",code:"Code:",copy:"Copy",copied:"Copied!",ready:"Ready to start?",start:"START",presentationMode:"Presentation Mode - Students don't need to scan code",freeModeDesc:"Free Mode - Students scan code and work at their own pace",freeModeTime:" ({{count}} mins)",unlimitedTimeDesc:" (no time limit)",noParticipants:"No students joined yet",participantsJoined:"{{count}} students joined",teamsJoined:"Joined:",startedAt:"TIME REMAINING",unlimitedTime:"ð¯ Unlimited Time",studentsPlaying:"ð¥ {{count}} students playing",questionCount:"Question {{current}} / {{total}}",alreadyAnswered:"{{count}} answered",correctCount:"{{count}} correct",incorrectCount:"{{count}} incorrect",errorReveal:"Cannot reveal answer",errorNext:"Cannot advance to next question",errorEnd:"Cannot end session",playListening:"ð§ Play listening audio",pauseListening:"Pause",resumeListening:"Resume",stopListening:"Stop listening audio"},leaderboard={title:"Leaderboard",points:"points",rank:"Rank",student:"Student",team:"Team",backHome:"Back to Home"},student={waiting:"Waiting for teacher to start...",starting:"â¡ Starting soon!",defaultName:"Student",errorSubmit:"Cannot submit answer",next:"Next Question â",waitingReveal:"Waiting for teacher to reveal answer...",slides:[{caption:"Stay focused and confident! ðª"}
538,{caption:"Knowledge is your power! ð"},{caption:"Effort today, success tomorrow! ð"},{caption:"You can do it! Go for it! ð"},{caption:"Fun learning! Ready? ð¯"}],leaderboard:"Leaderboard",finishHeader:"ð Completed!",scoreResult:"{{score}}/100 points",rankResult:"Rank {{rank}} / {{total}} {{medal}}",officialRank:"ð Official Rankings",you:" (You)",backToHome:"Back to Home",waitingTeacher:"Waiting for teacher...",waitingNext:"Waiting for next question...",chooseAnswer:"ð Choose your answer",timeUp:"â° Time's up! Cannot select answer",freeFinished:"You've finished the exercises, please wait a moment... ð",correct:"â
Correct!",incorrect:"â Incorrect!",point:"pts",selectTeam:{title:"Select a team or enter your name",titleOnly:"Enter your name to join",titlePickEmoji:"Pick your emoji to join",header:"Select Team",chosen:"Taken",inputName:"Enter your name",orInputName:"Or enter your name",namePlaceholder:"e.g., John Doe",enterPlay:"Join Game",errorNameRequired:"Please enter your name",errorNameShort:"Name must be at least 2 characters",errorPresentation:"This quiz is in presentation mode, online participation is not supported.",errorClaimEmoji:"This emoji is taken, please pick another",errorJoin:"Cannot join session",errorGeneric:"Something went wrong"},listeningPlay:"ð§ Play audio",listeningPlayOnce:"ð§ Play audio (once only)",listeningPause:"Pause",listeningResume:"Resume",listeningStop:"Stop audio",listeningUsedUp:"No plays left"},enPacedQuiz={featureTitle:featureTitle$2,myQuizzes:myQuizzes$3,createNew:createNew$9,help,loadingList,errorLoading:errorLoading$6,errorStartSession,errorDelete,errorDuplicate,emptyState,demo:demo$7,card:card$2,modeDialog,deleteDialog,form:form$i,control,leaderboard,student},featureTitle$1="ð¤ Crossword Puzzle",myCrosswords={title:"My Crosswords ({{count}})",loadError:"Error loading crosswords",deleteSuccess:"Crossword deleted",deleteError:"Error deleting crossword",shareError:"Error sharing crossword",unshareSuccess:"Unshared successfully",unshareError:"Error unsharing",duplicateSuccess:"Duplicated successfully",duplicateLimit:"You've reached the free limit for creating crosswords!",duplicateError:"Error duplicating crossword",copySuccess:"Link copied!",emptyState:"You don't have any crosswords yet",createNew:"Create New",createFirst:"Create your first crossword",lockedTip:"Upgrade to unlock this crossword",demo:{title:"GIAOVIEN - Crossword Demo",badge:"Demo",hint:"Try this 8-row crossword with hidden keyword GIAOVIEN"},questionsCount:"{{count}} questions",action:{play:"Play",edit:"Edit",assign:"Assign",delete:"Delete"},deleteDialog:{title:"Confirm Delete",confirm:'Are you sure you want to delete crossword "{{title}}"?',cancel:"Cancel",delete:"Delete"},assignSuccess:"Homework assigned successfully!",pin:{expiredReminder:"â ï¸ Plan expired!",renew:"Renew"},downloadOffline:"Download",downloadOfflineUpgrade:"Upgrade to download",downloading:"Downloading...",downloadOfflineError:"â Could not create the download file, please try again"},form$h={saveRowQuestionSuccess:"Saved question for row {{index}}",allRowsHaveQuestions:"All rows already have questions!",importSuccess:"Imported {{count}} questions!",error:{noTitle:"Please enter a title",noCells:"Please enter crossword content",noKeywordColumn:"Please select a keyword column (click on column number)",rowMissingQuestion:"Row {{rows}} missing question",save:"Error saving: "},updateSuccess:"Crossword updated!",createSuccess:"New crossword created!",limitReached:"You have reached the free limit for creating crosswords!",subscription:{usage:"Used {{current}}/{{limit}} crosswords",remaining:" ({{count}} left)"},titleLabel:"Crossword Title",titlePlaceholder:"e.g., World Capitals",stats:{size:"Size: {{rows}} x {{cols}}",dataRows:"Rows with data: {{count}}",questions:"Questions: {{count}}/{{total}}",keyword:"Keyword: {{keyword}}",emptyKeyword:"(empty)"},btn:{importQuestionBank:"Import from Question Bank",importLesson:"ð From existing lesson",testPlay:"Test play",saving:"Saving...",update:"Update",save:"Save Crossword"},questionPicker:{title:"Select questions from Question Bank"},lessonPickerTitle:"Select a lesson to get questions from",rowEditor:{title:"Question for Row {{index}}",error:{noQuestion:"Please enter a question",minAnswers:"Ceed at least 2 answers",noCorrect:"Please select at least 1 correct answer"},label:{question:"Question:",answers:"Answers (select the correct one):"},placeholder:{question:"Enter question (use $...$ for math formulas)",answer:"Answer {{char}}"},btn:{addAnswer:"Add Answer",cancel:"Cancel",save:"Save Question"},tip:"ð¡ Tick the checkbox to select the correct answer. Click â to insert math formulas.",methodPicker:{title:"How do you want to add a question?",fromBank:"Choose from Question Bank",fromBankDesc:"Use saved questions or import from file/AI",manual:"Enter manually",manualDesc:"Write a new question right here",currentQuestion:"Current question:",noText:"(No content)",delete:"Delete question",deleteDesc:"Remove the question from this row; the grid stays unchanged",deleteConfirm:"Delete the question of row {{index}}?",deleteSuccess:"Deleted question of row {{index}}"}}},grid={controls:{row:"Rows:",col:"Columns:",addFirst:"+ Start",addLast:"+ End",removeFirst:"- Start",removeLast:"- End"},title:{addRowFirst:"Add row at start",addRowLast:"Add row at end",removeRowFirst:"Remove row from start",removeRowLast:"Remove row from end",addColFirst:"Add column at start",addColLast:"Add column at end",removeColFirst:"Remove c
538olumn from start",removeColLast:"Remove column from end",toggleKeyword:"Click to toggle keyword column",addQuestion:"Add question",editQuestion:"Edit question"},legend:{keyword:"Keyword column (click on column number to select)",hasQuestion:"Has question"}},player$c={error:{missingQuestion:"This row has no question",incorrect:"Incorrect! Try again"},success:{correct:"Correct! Row {{row}} revealed"},btn:{back:"Back",revealKeyword:"Reveal keyword",stop:"Stop",listen:"Listen",stopTTS:"Stop reading",readTTS:"Read question"},label:{keyword:"Keyword:"},modal:{question:{title:"Question - Row {{row}}",cancel:"Cancel",answer:"Answer"},reveal:{title:"Reveal keyword?",content:"Are you sure you want to reveal the keyword now?",no:"No",yes:"Yes, reveal keyword"}},victory:{title:"ð Congratulations!",keyword:"Keyword: {{keyword}}",stats:"Correct: {{correct}} | Incorrect: {{incorrect}}"}},wordSearch={title:"ð Word Search",sidebar:{myGames:"My Games",createCrossword:"Create Crossword",createWordSearch:"Create Word Search"},help:{title:"Tutorial: Word Games",description:"Learn how to create and play Crossword and Word Search"},form:{titleLabel:"Game Title",titlePlaceholder:"e.g., World Capitals",timeLimitLabel:"Time Limit (minutes)",noTimeLimit:"No limit",timeLimitValue:"{{count}} minutes",addBoard:"Add Board",keyword:"Keyword",keywordPlaceholder:"e.g., MOTHER",hint:"Hint",hintPlaceholder:"e.g., What is mother in English?",generateGrid:"Generate Grid",regenerate:"Regenerate",preview:"Preview",save:"Save Game",update:"Update",testPlay:"Test Play",boardTitle:"Board {{index}}",hintFontIncrease:"Increase hint font size",hintFontDecrease:"Decrease hint font size",boardCount:"{{count}} boards",keywordDirection:"Keyword: {{keyword}} ({{direction}})",direction:{horizontal:"horizontal",vertical:"vertical",diagonalRight:"diagonal down-right",diagonalLeft:"diagonal down-left"},error:{minBoard:"Need at least 1 board",noKeyword:"Please enter a keyword first",generateSuccess:"Grid generated for board {{index}}",saveSuccess:"Game saved successfully!",updateSuccess:"Game updated successfully!",duplicateLimit:"You have reached the free limit!",saveError:"Error saving: "}},player:{hint:"ð¡ Hint: {{hint}}",boardProgress:"Board {{current}}/{{total}}",found:"Found: {{count}}/{{total}}",timeUp:"â° Time's up!",foundWord:"ð Found it!",timeLeft:"â³ Time left: {{time}}",victory:"ð Complete!",back:"Back",submitAssignment:"Submit results to teacher",fullscreen:"Fullscreen",exitFullscreen:"Exit fullscreen"}},enCrossword={featureTitle:featureTitle$1,myCrosswords,form:form$h,grid,player:player$c,wordSearch},featureTitle="ð Sleeping Dragon",sidebar$4={upgrade:"Get FullGame",tracking:"Noise Tracking",tips:{title:"Tips:",calibration:"After starting, stay quiet for 10 seconds to determine the background sound for better accuracy.",mercy:"The Mercy button appears at the bottom while tracking."}},setup={title:"Session Setup",subtitle:"Set up your session and let the Dragon manage your classroom",trialBanner:"Trial version: maximum time <strong>{{max}} minutes</strong>. Upgrade for unlimited use.",className:{label:"Class Name / Lesson",placeholder:"e.g., Class 10A1 â Self-study"},duration:{label:"Time:",unit:"min",maxTrial:"(max {{max}}m)"},initialScore:{label:"Initial Score:",unit:"points"},threshold:{label:"Alarm Threshold:",unit:"Ambient + {{offset}} dB",hint:"Lower value = more sensitive. Recommended: 20â30 dB. Can go down to 1 dB.",verySensitive:"Very sensitive",lessSensitive:"Less sensitive"},error:{mic:"The browser cannot access the microphone. Please grant permission and try again."},btn:{checking:"Checking mic...",start:"Start Ambient Check ({{count}}s)"}},calibration={title:"Dragon is listening to the room...",instruction:"Please keep normal silence for {{count}} seconds for the system to measure the baseline accurately.",unit:"sec",complete:"Done! Starting monitoring...",skip:"Skip · use default threshold"},monitor={scoreLabel:"Score / {{total}}",btn:{end:"End Session",fullscreen:"Fullscreen",exitFullscreen:"Exit Fullscreen",mercy:"ðï¸ Mercy",mercyActive:"ðµ Mercy Active...",mercyTooltip:"Mercy â disable warnings for 10 seconds",mercyActiveTooltip:"Active (10 seconds)"}},dragon={state:{sleeping:"Dragon is sleeping soundly...",warning:"Dragon is getting annoyed...",angry:"DRAGON WOKE UP!"},mercyStatus:"MERCY (10s)"},summary={title:"Session Summary",unit:{minutes:"min",seconds:"sec"},grade:{excellent:"Excellent!",good:"Good",average:"Average",needsImprovement:"Needs Improvement"},stats:{angryCount:"Dragon woke up",pointsLost:"Points lost",mercyUsed:"Mercy used",noiseThreshold:"Noise threshold",countUnit:"times",pointsUnit:"pts"},log:"Event Log",btn:{close:"Close",restart:"Start New Session"}},events={angry:"Dragon woke up!",mercy:"Mercy activated (Teacher disabled
538warnings)"},enNoiseTracker={featureTitle,sidebar:sidebar$4,setup,calibration,monitor,dragon,summary,events},heroTitle$2="Educational AI Tools",warningEmail="â ï¸ Official school email accounts may restrict AI tools, please use your personal @gmail.com account",warningTrial='ð Please click "Try demo" and view tutorials carefully before deciding to unlock!',tabs$3={paid:"Paid AI",free:"Free AI",bundle:"Unlock multiple tools at once (discounted)",fullAiRemaining:"FullAI · {{days}} days left",upgradeFullAi:"Upgrade FullAI",upgradeFullAiTitle:"Upgrade to FullAI PLAN"},groups$1={report:"Records & Reports",lesson:"Lesson Plans & Teaching Preparation",exam:"Exams & Tests",product:"Products & Games"},groupBadge="30,000Ä - 50,000Ä/year per tool · Multi-year & multi-tool discounts available",searchPlaceholder="Search tools...",contactAdmin="Contact Admin",emptyHint="No matching tools found.",freeSectionTitle="Free Tools Collection",freeSectionBadge="⨠Experience AI completely free",priceYear="{{price}}Ä/year",openError="Cannot open tool, please try again.",buttons={trial:"Try demo",viewHelp:"View tutorial",helpTitle:"Guide: {{title}}",comingSoon:"ð Coming soon",opening:"â³ Opening...",freeUseNow:"⨠Free - Use now",useNowLifetime:"ð Use now · Lifetime",useNowDays:"ð Use now · {{days}} days left",useNowDaysWarning:"ð Use now · â ï¸ {{days}} days left",unlockPrice:"ð Unlock ({{price}}Ä/year)",useNow:"ð Use now"},bundle={hintSelect:"Select tool cards you want to unlock to add to cart",toolsCount:"ð {{count}} tools",discount:"Save {{percent}}%",checkout:"ð³ Bundle Checkout",cancel:"Cancel",selected:"â Selected",addToCart:"+ Add to cart"},fullAiExtend={title:"FullAI PLAN · {{days}} days left",content:"You have {{days}} days of FullAI remaining. Additional payments will accumulate the remaining days.",ok:"OK"},contactModal={title:"Contact Administrator",desc:"If you encounter difficulties unlocking or using tools, please contact the admin via Zalo/Phone for support:",ok:"Got it"},tools={tool1:{title:"Initiative Experience Writing",description:"Automatically write initiative experience reports using AI"},tool2:{title:"Excellent Teacher Measures",description:"Automated measures to improve teaching and homeroom quality using AI"},tool4:{title:"AI Conduct Analysis",description:"Analyze training results to provide in-depth feedback with AI. Note: This is NOT a data entry tool for SMAS or VnEdu"},tool14:{title:"Integrate Digital & AI Competency into Lesson Plans",description:"Simultaneously (or separately) integrate digital competency and AI competency into educational plans and curriculum distribution"},tool16:{title:"Comprehensive Integration (Digital, AI...) into Lesson Plans",description:"Allows SIMULTANEOUS or INDIVIDUAL integration of digital competency, AI, and inclusive education into lesson plans"},tool9:{title:"Integrated PRESCHOOL Lesson Plan Preparation",description:"Allows SIMULTANEOUS or INDIVIDUAL integration of digital competency, AI, and inclusive education into lesson plans â exclusively for Preschool"},tool13:{title:"AI Thematic Lesson Plan Preparation",description:"Build thematic lesson plans on AI according to Decision 2422 guidelines"},tool11:{title:"Create AI Competency Integration Matrix for Educational Plans",description:"Automatically generate AI competency integration tables into educational plans according to Decision 2422"},tool17:{title:"IT-Integrated Lesson Planner",description:"Upload a textbook or existing lesson plan â AI writes the lesson plan with concrete digital activity suggestions from giaoviendoimoi.com and exports ready-to-paste question JSON"},tool5:{title:"Create Exams following Official Dispatch 7991",description:"Create exams, answer keys, and grading guidelines standardizing Official Dispatch 7991"},tool6:{title:"Create English Exams according to Official Dispatch 7991",description:"Create standard exams according to Official Dispatch 7991 specifically for English"},tool7:{title:"Create Standard Literature Exams",description:"Draft exams following standard structure and rubrics for Literature"},tool8:{title:"Create Specialized Exams",description:"Create exams according to existing matrices and structures for special purposes: gifted students, exam practice..."},tool10:{title:"AI Software Product Generator",description:"AI tool supporting the creation of smart educational software"},toolTtsVoice:{title:"AI Voice Generator",description:"Generate natural AI voice-over files for your lessons: type the text, pick a voice, then download the audio for AI Read-aloud features or embed it in elearning lessons. Already unlocked if you have FullGame"},toolHtmlGame:{title:"AI Quick Game Maker",description:"Create interactive games quickly from your lesson plans, for classroom use or embedding in elearning/SCORM lessons, digital devices, or paste code into Custom Games to assign to students immediately",unlockBadge:"Simultaneously unlocks",customGameName:"Custom Game"},free1:{title:"AI Multiple Choice Question Generator",description:"Automatically generate multiple-choice questions from lesson plan content using AI"},free2:{title:"Learning Process Analysis",description:"Analyze and evaluate student learning pathways using AI"},free4:{title:"AI Teaching Robot",description:"Smart AI robot assisting teaching â answering questions, explaining lesson content interactively to students"},free3:{title:"Career Guidance Image Generator for Students",description:"Use AI to create career guidance photos based on student interests and skills"},free5:{title:"IT-Integrated Lesson Planner",description:"Upload a textbook or existing lesson plan â AI writes the lesson plan with concrete digital activity suggestions from giaoviendoimoi.com and exports ready-to-paste question JSON"}},enAiTools={heroTitle:heroTitle$2,warningEmail,warningTrial,tabs:tabs$3,groups:groups$1,groupBadge,
538searchPlaceholder,contactAdmin,emptyHint,freeSectionTitle,freeSectionBadge,priceYear,openError,buttons,bundle,fullAiExtend,contactModal,tools},page$b={title:"ð Scavenger Hunt",helpLabel:"Tutorial video",helpTitle:"Scavenger Hunt Tutorial",createHuntBtn:"Create New Hunt",loadError:"Could not load data.",sidebar:{myHunts:"My Hunts",sessions:"Assigned Sessions",create:"Create New"}},myHunts={emptyTitle:"No hunts yet",emptyDesc:"Create your first scavenger hunt for students to start adventuring â or try the demo below!",demoBadge:"Demo",monstersCount:"{{count}} monsters",playTrial:"Play Demo",assign:"Assign",edit:"Edit",delete:"Delete",teacherShare:"Teacher Share",shareTooltipEnabled:"Share with other teachers via link",shareTooltipDisabled:"Can only share hunts where all monsters are questions (no lessons)",deleteDialog:{title:"Delete hunt?",content:'Delete original hunt "{{title}}"? Sessions assigned from this hunt will remain intact (saved independently) â to stop them, delete from the "Assigned Sessions" tab.',cancel:"Cancel",confirm:"Delete"}},sessions={emptyTitle:"No assigned sessions yet",emptyDesc:"Go to <1>My Hunts</1> and click <3>Assign</3> to create a session for your students.",statusEnded:"Ended",statusExpired:"Expired",statusOpen:"Open",assignedDate:"Assigned: {{assigned}} · Due: {{expires}}",copyCode:"Copy code",copiedCode:"Code copied",copyLink:"Copy link",copiedLink:"Link copied",play:"Play",results:"Results",end:"End",delete:"Delete",deleteDialog:{title:"Delete assigned session?",content:'Delete session "{{title}}"{{label}}? Students will no longer be able to join and session results will also be removed.',cancel:"Cancel",confirm:"Delete"}},builder={createTitle:"Create New Scavenger Hunt",updateTitle:"Update Scavenger Hunt",titleLabel:"Hunt Name",titlePlaceholder:"e.g.: Summer 2026 - Math Scavenger Hunt",winModeLabel:"Winning Condition:",winModeAllStages:"Answer all to win",winModeKeyword:"Hunt secret keyword",winModeKeywordDesc:"Each monster holds 1 letter of the keyword. Students defeat enough monsters to assemble the secret keyword to win.",winModeAllStagesDesc:"Students must defeat all monsters to win â you choose the number of monsters. Each monster is a question or lesson.",keywordLabel:"Secret keyword",keywordPlaceholder:"e.g.: VIETNAM",keywordHelper:"Keyword has {{count}} characters â need exactly {{count}} monsters (min {{min}}, max {{max}})",monsterCountLabel:"Number of monsters (questions/lessons):",monsterCountRange:"From {{min}} to {{max}} monsters",dailyLimitLabel:"How many monsters can be challenged daily? (Limiting this encourages daily practice rather than rushing to finish)",dailyLimitUnlimited:"Unlimited",dailyLimitOption:"{{count}} monsters / day",dailyLimitUnlimitedDesc:"Students can defeat any monster in any order without daily limits.",dailyLimitDesc:"Students can defeat up to {{count}} monsters per day â the rest are locked until midnight. No forced order.",monsterTypeLabel:"Monster type:",monsterTypeQuestion:"â Questions",monsterTypeGame:"ð® Lessons",monsterTypeQuestionDesc:"Each monster is a question, answered directly on the map. Enter questions in the list below.",monsterTypeGameDesc:"Each monster is a lesson/game you created. Select individually in the list below.",shuffleAnswers:"ð Shuffle answer options",shuffleAnswersDesc:"Each time students encounter the same monster, answer choices are shuffled â ensuring true understanding. Applies to multi-statement True/False questions as well.",questionOrderKept:"Question order is strictly preserved because each question attaches to a specific monster{{suffix}}.",questionOrderSuffixKeyword:" and a keyword letter",questionsListTitle:"Question List",filledCount:"Filled {{current}}/{{total}}",missingKeywordHint:"Enter secret keyword above to see how many questions are required.",missingStageCountHint:"Select monster count above to see how many questions are required.",duplicateDisabledReason:"Reached {{targetCount}} questions (equal to monster count)",duplicateDecoyDisabledReason:"Reached maximum of {{max}} decoy questions",qfLabels:{clearAll:"Clear all",pickFromBank:"ð Pick from Bank or AI",pickFromLesson:"ð From existing lessons",manualInput:"âï¸ Manual input",note:"Requires exactly {{targetCount}} questions (equal to monster count).{{suffix}}
538 Supports 4 formats: Multiple choice, True/False (multi-statements), Multiple select, Fill in the blank.",noteKeywordSuffix:" Question order = keyword letter order.",noteAllStagesSuffix:" Answer all to win.",listHeader:"Question List ({{count}})",emptyTitle:"No questions added yet",emptyDesc:"Use the buttons above to add questions."},excessQuestionsAlert:"{{count}} extra questions â please delete to match {{target}} questions, or increase monster count above.",missingQuestionsAlert:"{{count}} questions remaining.",gamesListTitle:"Lesson / Game List for Monsters",missingKeywordGameHint:"Enter secret keyword above to generate monsters.",missingStageCountGameHint:"Select monster count above to start.",selectLessonForMonster:"Select lesson for this monster",deleteSlotTooltip:"Clear this slot",close:"Close",decoySwitch:"ð» Add extra decoy monsters",decoyDesc:'These are monsters holding NO keyword letters â added as decoys. Students can defeat them without gaining letters, making keyword deduction harder. (Only for "Secret Keyword" win mode.) Content type matches the "Monster type" selected above: ',decoyModeQuestion:"questions",decoyModeGame:"lessons",decoyQuestionsCount:"Entered {{count}}/{{max}} extra decoy questions.",decoyQfLabels:{clearAll:"Clear all",pickFromBank:"ð Pick from Bank or AI",pickFromLesson:"ð From existing lessons",manualInput:"âï¸ Manual input",note:"Max {{max}} decoy questions. These do NOT grant keyword letters when answered correctly. Supports 4 formats: Multiple choice, True/False (multi-statements), Multiple select, Fill in the blank.",listHeader:"Decoy Questions List ({{count}})",emptyTitle:"No decoy questions yet",emptyDesc:"Use the buttons above to add questions."},decoyMaxAlert:"Reached maximum of {{max}} decoy questions.",decoyLessonsCount:"Selected {{count}}/{{max}} extra decoy monsters.",lessonTypeLabel:"Lesson type",noLessons:"No lessons available.",loadMore:"Load more ({{count}} remaining)",cancel:"Cancel",createBtn:"Create Scavenger Hunt",updateBtn:"Update Scavenger Hunt",confirmDeleteAll:"Delete all questions?",confirmDeleteAllDecoy:"Delete all decoy questions?",bankModalTitle:"Select Questions from Question Bank",lessonModalTitle:"Get Questions from Created Lessons",decoyBankModalTitle:"Select Decoy Questions from Bank",decoyLessonModalTitle:"Get Decoy Questions from Created Lessons",multiTypeHint:"Supports 4 question formats: Multiple choice, True/False (multi-statements), Multiple select, and Fill in the blank.",types:{shortAnswer:"Fill in the blank",trueFalse:"True / False",trueFalseMulti:"True / False ⢠{{count}} statements",lessonChip:"Lesson",questionChip:"Question"},messages:{skippedQuestions:"Omitted {{count}} unusable questions (missing content or correct answer).",noMatchingQuestions:"No matching questions found.",noLessonQuestions:'No matching questions found in "{{title}}".',excelNoMatching:"No matching questions found in file (only single-answer multiple choice or fill-in-the-blank supported).",excelSkipped:"Omitted {{count}} unusable questions.",generalError:"An error occurred. Please try again."}},questionStage={close:"Close",clickToClose:"Click to close",decoyTitle:"This monster does not contain a keyword letter!",decoyDesc:"You answered correctly, but this is a decoy monster. Keep searching!",correctLetter:"Correct! You received the letter:",correctMonster:"Correct! Defeated monster #{{num}}!",incorrect:"Incorrect!",monsterNumber:"MONSTER #{{num}}",typeAnswerPlaceholder:"Type your answer...",chooseTrueFalse:"Select True or False for each statement:",trueLabel:"True",falseLabel:"False",multipleChoiceHint:"There may be multiple correct answers â select all that apply:",flee:"Flee",attack:"Attack!"},play$3={trialStudentName:"Preview",defeatNotification:"ð¥ The monster is still there. Leave and come back to try again!",huntNotFound:"Scavenger hunt not found.",huntEnded:"This scavenger hunt has ended.",huntExpired:"This scavenger hunt has expired.",genericError:"An error occurred.",passportNotFound:"Passport not found. Please verify your code.",stagesChallenges:"{{count}} challenges",winModeAllStages:"Defeat all monsters to win",winModeKeyword:"Find the secret keyword",firstTimeTab:"First time playing",havePassportTab:"Have passport code",nameLabel:"Your name",namePlaceholder:"Enter your name to start...",startAdventure:"âï¸ Start adventure!",passportCodeLabel:"Passport code (2 characters)",continueJourney:"ð§ Continue journey",exitBtn:"â Exit",yourPassport:"Your passport",passportSaveHint:"Save this code to continue on another device or later",copied:"Copied!",readyGreeting:"Hello, <1>
538{{name}}</1>! Ready for adventure?",letGoBtn:"ð© Let's go!",previewBanner:"𧪠Preview mode â no passport needed, no daily monster limits, results NOT saved to assigned session.",exitPreview:"â Exit preview",dailyLimitReached:"ð YOU DID GREAT TODAY â COME BACK TO BATTLE TOMORROW ð",moveInstruction:"ð¡ Use <1>W A S D</1> or <3>arrow keys</3> to move â on mobile, touch & hold where you want to go. Enter the circle around a monster to start battle; walk around it if you wish to skip.",exitConfirmTitle:"Exit the hunt?",exitConfirmDesc:"Your progress has been saved â you can re-enter anytime using your passport code ",stayBtn:"Stay",confirmExitBtn:"ðª Exit"},treasureModal={tryAgain:"Incorrect, try again!",treasureAlt:"treasure",congrats:"ð Congratulations!",completedDesc:"You completed the Scavenger Hunt!",attemptsCount:"Attempts: {{count}}",awesomeBtn:"Awesome! ð",openSecretChest:"ð Open secret chest",arrangeLettersDesc:"Arrange {{count}} collected letters into the secret keyword!",hint:'Hint: Keyword has {{count}} letters, starts with "{{first}}"',inputLabel:"Enter keyword ({{count}} letters)",openBtn:"Open chest!"},stageModal={unsupportedType:"This game type is not supported in Scavenger Hunt yet.",close:"Close",closeAria:"Close",decoyTitle:"This monster does not contain a keyword!",decoyDesc:"You won the battle but this is a decoy monster. Keep exploring!",earnedLetterTitle:"You received a letter:",letterStoredDesc:"Letter has been stored in your inventory"},hud={player:"Player:",passport:"Passport code:",muteBgm:"Mute music",unmuteBgm:"Unmute music",minimize:"Minimize",fullscreen:"Fullscreen",openedChest:"ð Opened!",openChest:"ð Open chest!",chestLocked:"ð Chest",sidebarChestOpened:"ð Chest opened!",sidebarChestReady:"ð Click to open chest!",monstersCount:"monsters",keywordsCount:"keywords",bgmOn:"Music: On",bgmOff:"Music: Off",exitGame:"Exit game",treasureFound:"ð Treasure found!"},assignModal={title:"Assign Hunt to Students",huntFallback:"Scavenger Hunt",mainStagesCount:"{{count}} main stages",keywordInfo:" · Keyword: {{keyword}}",labelField:"Batch / Class label (optional)",labelPlaceholder:"e.g.: Class 6A, Batch 1...",labelHelper:"Helps distinguish different batches of the same hunt in 'Assigned Sessions'.",expirationTitle:"Participation Expiry",minDaysAlert:"This hunt has {{count}} monsters, students can only defeat {{perDay}} monsters/day â minimum <strong>{{minDays}} days</strong> required to complete. Shorter durations are disabled.",minDaysError:"This hunt requires at least {{minDays}} days for students to complete. Please choose a longer duration.",extendedPermError:"Could not verify extended link permission. Please try again.",assignFailed:"Failed to assign hunt. Please try again.",cancel:"Cancel",assignBtn:"Assign",assigningBtn:"Assigning...",successTitle:"Hunt Assigned!",batchLabel:"Batch: <1>{{label}}</1>",shareInstruction:"Share the code or link below for students to join.",joinCodeLabel:"Join code",copied:"Copied!",copyCode:"Copy code",shareLinkLabel:"Share link",copiedBtn:"Copied",copyBtn:"Copy",downloadQr:"Download QR",close:"Close",days:{1:"1 day",3:"3 days",7:"7 days",15:"15 days",30:"30 days",90:"90 days",365:"1 year",730:"2 years",1095:"3 years",1825:"5 years"}},statsModal={title:"ð Results: {{title}}",keywordInfo:"Keyword: <1>{{keyword}}</1> · {{count}} main stages",reloadTooltip:"Reload",studentsCount:"Participating Students",completedCount:"Completed",avgStages:"Avg Stages Passed",stagePassRateTitle:"Pass rate per stage:",stageNum:"Stage {{num}}",chest:"ð Chest",searchPlaceholder:"Search by name or passport code...",noStudents:"No students have participated yet.",notFound:"Not found.",colIndex:"#",colName:"Name",colPassport:"Passport",colStages:"Stages",colScore:"Score",colCompleted:"Status",colStarted:"Started",colDelete:"Delete",statusDone:"â
Done",statusNotYet:"Not yet",deleteStudentTooltip:"Delete this student's result",deleteConfirm:'Are you sure you want to delete results for student "{{name}}" ({{code}})?',unplayedTooltip:"Not played",progressTooltip:"{{percent}}% · {{attempts}} attempts",footerStudents:"{{count}} students",filteredFrom:" (filtered from {{total}})",close:"Close"},slotPicker={lessonType:"Lesson Type",noLessons:"No lessons yet.",loadMore:"Load more ({{count}} remaining)"},world={minutes:"{{count}} min",days:"{{count}} days",hours:"{{count}} hours",notOpen:"Locked",dailyLimitReachedTooltip:"ð¡ï¸ Defeated all {{count}} monsters for today â return in {{cooldown}}",unlockAfterTooltip:"ð¡ï¸ Opens in {{cooldown}}",retryTooltip:"Not passed â step in to try again!",decoyTooltip:"Mysterious monster...",monsterTooltip:"Monster #{{num}}",introText:"âï¸ FIND MONSTERS TO BATTLE âï¸"},enScavengerHunt={page:page$b,myHunts,sessions,builder,questionStage,play:play$3,treasureModal,stageModal,hud,assignModal,statsMo
538dal,slotPicker,world},form$g={editTitle:"Edit Flashcard Deck",createTitle:"Create New Flashcard Deck",addCardAiExcel:"⨠Add Cards with AI/Excel",titleLabel:"Deck Name",titlePlaceholder:"e.g.: Unit 5 Vocabulary, World History...",shuffleCards:"Shuffle cards when studying",fontSizeLabel:"Font Size",fontSizes:{small:"Small",regular:"Standard",large:"Large",xlarge:"Extra Large"},imageSizeLabel:"Image Size",frontColorLabel:"Front Color",frontColors:{red:"ð¥ Red",indigo:"ð£ Purple",blue:"ð¦ Blue",teal:"𩵠Teal",orange:"ð§ Orange",slate:"⬠Slate",brown:"ð« Brown"},voiceLabel:"Reading Voice",languages:{vi:"ð»ð³ Vietnamese",en:"ð¬ð§ English"},cardFormatLabel:"Card Format",twoSides:"2 Sides",singleSide:"1 Side",questionOnly:"Question only",answerOnly:"Answer only",autoRead:"Auto read aloud when flipping/switching cards",showAllCards:"ð Show all cards",hideAllCards:"ð Hide all cards",cardNum:"Card {{num}}",hasImage:"ð¼ Has image",expand:"Expand",collapse:"Collapse",deleteCardTitle:"Delete this card",frontSide:"Front side",backSide:"Back side",frontPlaceholder:"Question / word / concept...",backPlaceholder:"Answer / meaning / explanation...",pastingImage:"Pasting image...",imageLabel:"Image",addCard:"+ Add Card",cancel:"Cancel",saving:"Saving...",update:"Update",create:"Create Deck"},aiModal={title:"⨠Add Cards with AI / Excel",tabJson:"ð¤ Paste JSON (AI)",tabExcel:"ð Upload Excel",openAiTool:"ð Open AI Flashcard Generator",steps:{step1:'Click "ð Open AI Flashcard Generator" above (opens in new tab).',step2:'In the tool, enter a topic (e.g. "English 7 Unit 5 Vocabulary") then click Generate.',step3:"Once generated, click Copy to Giao Vien Doi Moi.",step4:'Return here, paste (Ctrl+V) into the box below then click "Add to Deck".'},jsonPlaceholder:`[ 539 {"front": "Photosynthesis", "back": "Process by which plants create organic matter"}, 540 {"front": "Cellular respiration", "back": "Process of breaking down organic matter"} 541]`,cancel:"Cancel",apply:"Add to Deck",excelHint:"Excel file must have 2 columns: Front side and Back side.",dlTemplate:"⬠Download sample file (.xlsx)",pickExcel:"ð Choose Excel file"},messages$1={minOneCard:"A deck must have at least 1 card",uploadImageError:"Could not upload image, please try again",jsonMustBeArray:"Must be a JSON array with at least 1 element",jsonMissingFields:'Item {{index}} is missing "front" or "back"',jsonAdded:"Added {{count}} cards from AI",jsonInvalid:"Invalid JSON",excelEmpty:"File contains no data",excelRowEmpty:"Row {{row}}: both columns are empty",excelAdded:"Added {{count}} cards from Excel",excelReadError:"Could not read Excel file",emptyContentError:"Please add at least 1 card with content",libraryFieldsRequired:"Please select school level, subject, and grade to publish to the library",audioUploadError:"Audio file upload failed. Please check your connection and click Save again.",updateSuccess:"Updated deck successfully",createSuccess:"Created new deck successfully",snapshotTooLarge:"Deck is too large to publish to library",saveFailed:"Failed to save, please try again later"},excelTemplate={frontHeader:"Front side",backHeader:"Back side",row1Front:"Photosynthesis",row1Back:"Process by which green plants synthesize nutrients from COâ and water",row2Front:"Cellular respiration",row2Back:"Process of decomposing organic matter to release energy",row3Front:"$\\frac{a}{b}$",row3Back:"Fraction a divided by b (math formula supported)",fileName:"sample-flashcard.xlsx"},enFlashcard={form:form$g,aiModal,messages:messages$1,excelTemplate},form$f={newTitle:"Create New Lesson",editTitle:"Edit Lesson",generalInfo:"General Information",lessonTitle:"Lesson Title",timeLimitPerQuestion:"Time per question (seconds)",gameplay:"Gameplay",gameMode:"Game Mode",modeArrange:"Sentence Arrangement",modeFind:"Find Target Words",wordSpeed:"Flight Speed",speedVerySlow:"Very Slow",speedSlow:"Slow",speedMedium:"Medium",speedFast:"Fast",defaultCardFontSize:"Default Word Card Font Size",fontSizes:{1:"Small",2:"Medium",3:"Large",4:"Extra Large",5:"Huge"}
541,bgColor:"Frame Background Color",cameraGesture:"Play with camera (hand gestures)",scoring:"Scoring (off = presentation mode only, no points)",bgMusic:"Background Music (off = do not autoplay, can toggle in game)",questionsList:"Sentence List ({{current}}/{{max}})",questionNum:"Sentence {{num}}",moveUp:"Move up",moveDown:"Move down",deleteQuestion:"Delete this sentence",completeSentenceAnswer:"Complete Sentence (Answer)",hintFontSize:"Hint Sentence Font Size",sentencePlaceholder:"Enter complete sentence, e.g.: Hanoi is the capital of Vietnam",mathFormulaHint:"Math Formula: each formula must fit within <1>a single word</1> (sentences are split by spaces) â write <3>$x^2$ $+$ $y^2$</3> (3 cards), do not write <5>$x^2 + y^2$</5> (will be split into <7>$x^2$</7>, <9>+</9>, <11>y^2$</11> and display incorrectly).",hintLabel:"Hint for this sentence (optional)",hintPlaceholderArrange:"Default: Arrange the words below into a complete sentence",hintPlaceholderFind:"Default: Find and catch the correct words below",findInstruction:"Click on the correct target word(s) for students to find:",arrangeInstruction:"Students will arrange {{count}} words into the correct sentence â check the word cards below:",maxQuestionsReached:"Maximum number of sentences reached.",aiSuggest:"AI Suggestions",addManualQuestion:"Add Sentence Manually",communityLibrary:"Community Library",cancel:"Cancel",saving:"Saving...",saveLesson:"Save Lesson"},messages={loadError:"Could not load lesson",maxQuestionsError:"A lesson can have at most {{max}} sentences",minOneQuestionError:"A lesson must have at least 1 sentence",aiImportWarning:"Added {{total}} sentences, but {{unmatched}} sentences did not match any target words â please click to select target words",aiImportSuccess:"Added {{total}} sentences from AI",timeLimitError:"Time limit per question must be at least 7 seconds",emptySentenceError:"Sentence {{num}} cannot be empty",minWordsError:"Sentence {{num}} must have at least 2 words",targetWordRequiredError:"Sentence {{num}} must have at least 1 target word marked",libraryFieldsRequired:"Please select school level, subject, and grade to publish to the library",audioUploadError:"Audio file upload failed. Please check your connection and click Save again.",genericError:"An error occurred"},enFlyingWords={form:form$f,messages},heroTitle$1="Educational Utilities",heroSub="Supplemental tools for teachers on the web platform to save time and enhance teaching efficiency.",fullTienIchRemaining="FullTienIch · {{days}} days remaining",upgradeFullTienIch="Upgrade FullTienIch",sectionExtensionsTitle="Utilities",sectionExtensionsBadge="Standalone purchase · 30,000 VND/year",nhanxetTitle="Ministry Database, VnEdu & SMAS Comments",nhanxetDesc="Automatically fill in student evaluation comments â save hours each term.",usageGuide="ð User Guide",licenseActive="â
License is active · {{days}} days left",licenseInactiveNhanxet="â ï¸ Not activated · evaluate up to 5 students only",useBtn="Use",downloadBtn="Download",extendBtn="Renew / Extend",activateBtn="Activate",chuanNNTitle="Teacher Standards Evaluation on Database",chuanNNDesc="Automatically fill out the professional standards evaluation form and export the self-assessment report (.docx).",licenseInactiveChuanNN="â ï¸ Not activated · fills 6/15 criteria only",downloadSelfAssessmentDocx="ð Download self-assessment form (.docx)",pasteAiTitle="Convert AI Output to DOCX",pasteAiDesc="Paste content from ChatGPT, Gemini, Claude⦠and receive a formatted Word document with tables and math equations.",pasteAiFreeUntil="ð Free until July 1, 2026",licenseInactivePasteAi="â ï¸ Not activated · limited to 3 uses",sectionAddInTitle="Microsoft Word Add-in",sectionAddInBadge="Word Add-in · 50,000 VND/year",addInWordTitle="GVDM Word Add-in",addInWordDesc="Standardize math formulas, apply Decree 30 formatting, shuffle multiple-choice tests, and more directly inside Word.",licenseInactiveAddInWord="â ï¸ Not purchased · 50,000 VND/year/PC",gettingToken="â³ Fetching...",getActivationCode="ð Get Activation Code",buyAndActivate="
541ð Purchase & Activate",mathAssistantTitle="Math Teacher Assistant",mathAssistantDesc="Assists math teachers with specialized tasks: drawing geometric figures, shape templates, customizing mathematical diagramsâ¦",licenseInactiveMathAssistant="â ï¸ Not purchased · 3-day trial · 50,000 VND/year",getActivationKey="ð Get Activation Key",buyAndGetKey="ð Purchase & Get Key",mathKeyTitle="ð Math Teacher Assistant Activation Key",mathKeyInstruction="Open Word â go to <1>Trợ lý cho GV Toán</1> tab â select activate â paste the key below into the input box.",mathKeyDuration="Duration: {{years}} year(s) (starting from activation date in the add-in)",mathKeyWarning='â ï¸ This key is tied to your account. Please save it â clicking "Get Activation Key" will return this exact key without issuing a new one.',copied="â
Copied",copyKey="ð Copy key",close$3="Close",mathDownloadTitle="ð¥ Download Math Teacher Assistant",mathDownloadDesc="Download the .zip file â <1>extract</1> â run the installer inside, then reopen Word.",mathDownloadTrialNote="ð The add-in includes a <1>3-day trial</1> â install and test it first before purchasing a key.",windowsDefenderWarning='â ï¸ If Windows displays a blue prompt <1>"Windows protected your PC"</1>, click <3>More info</3> â <5>Run anyway</5> (the file is safe, it simply lacks an expensive commercial signing certificate).',cancel$4="Cancel",confirmDownload="ð¥ Confirm Download",fullTienIchExtendTitle="FullTienIch · {{days}} days remaining",fullTienIchExtendMsg="You have {{days}} days of FullTienIch remaining. Additional payments will accumulate onto your remaining days.",ok="OK",trialFirstTitle="ð¡ Please try before purchasing",trialFirstDesc="Every computer environment varies (OS, Word version, installation privilegesâ¦) so the Add-in may not run on some setups. To avoid purchasing something you cannot use, please click <1>Download</1> and <3>try installing first</3> â once verified in Word, return to buy and activate.",downloadTrial="ð¥ Download Free Trial",stillBuyNow="Proceed to Purchase Now",addInTokenTitle="ð Word Add-in Activation Code",addInTokenInstruction='Copy the code below, open Word â go to "Giáo viên Äá»i má»i" tab â click <1>KÃCH HOẠT Äá» SỬ DỤNG</1> â paste the code.',addInTokenExpireWarning="â ï¸ This code is single-use and expires after 24 hours.",copyCode="ð Copy code",addInDownloadTitle="ð¥ Word Add-in Installation Guide",addInDownloadDesc="Download the .zip file â <1>extract</1> â run <3>bam-de-cai-add-in.exe</3>.",addInReadmeNote="Please read <1>HUONGDAN.txt</1> in the extracted folder for details.",activationGuideAlt="Extension activation guide",understood="Understood",mathKeyError="Could not retrieve key. Please try again.",tokenError="Could not retrieve code. Please try again.",connectionError="Connection error. Please try again.",enEdutechExtensions={heroTitle:heroTitle$1,heroSub,fullTienIchRemaining,upgradeFullTienIch,sectionExtensionsTitle,sectionExtensionsBadge,nhanxetTitle,nhanxetDesc,usageGuide,licenseActive,licenseInactiveNhanxet,useBtn,downloadBtn,extendBtn,activateBtn,chuanNNTitle,chuanNNDesc,licenseInactiveChuanNN,downloadSelfAssessmentDocx,pasteAiTitle,pasteAiDesc,pasteAiFreeUntil,licenseInactivePasteAi,sectionAddInTitle,sectionAddInBadge,addInWordTitle,addInWordDesc,licenseInactiveAddInWord,gettingToken,getActivationCode,buyAndActivate,mathAssistantTitle,mathAssistantDesc,licenseInactiveMathAssistant,getActivationKey,buyAndGetKey,mathKeyTitle,mathKeyInstruction,mathKeyDuration,mathKeyWarning,copied,copyKey,close:close$3,mathDownloadTitle,mathDownloadDesc,mathDownloadTrialNote,windowsDefenderWarning,cancel:cancel$4,confirmDownload,fullTienIchExtendTitle,fullTienIchExtendMsg,ok,trialFirstTitle,trialFirstDesc,downloadTrial,stillBuyNow,addInTokenTitle,addInTokenInstruction,addInTokenExpireWarning,copyCode,addInDownloadTitle,addInDownloadDesc,addInReadmeNote,activationGuideAlt,understood,mathKeyError,tokenError,connectionError},pageTitle$8="ð ABC Exercise",myQuizzes$2="My Quizzes",loadingQuizzes$2="Loading...",errorLoading$5="Error loading quizzes",confirmDelete$2="Are you sure you want to delete this quiz?",deleteSuccess$5="Quiz deleted",emptyQuizzes$2="No quizzes yet",createFirst$2="Create your first quiz",demo$6={title:"Smart Pose Quiz - Demo",badge:"Demo",hint:"Try this demo to experience the game before creating your own"},questionsCount$2="{{count}} questions",play$2="Present",edit$2="Edit",assign$7="Assign",upgradeToUnlock$2="Upgrade to unlock this exercise",lockedTip$5="Upgrade to unlock this exercise",packageExpired$5="Subscription expired! Unpinned quizzes are locked.",extendSubscription$5="Extend 30k/year",pinStatus$2="Pinned {{current}}/{{limit}} quizzes",createNew$8="Create Normal",createCameraNew$2="Create Camera",cameraBadge$2
541="New",createFormTitle$2="Create New ABC Exercise",editFormTitle$2="Edit ABC Exercise",createCameraFormTitle$2="Create ABC Exercise (Camera Mode)",editCameraFormTitle$2="Edit ABC Exercise (Camera Mode)",titleLabel$5="Title",titlePlaceholder$5="Enter quiz title...",slideModeLabel$2="Slide advance mode:",slideModeManual$2="Manual (teacher clicks Next)",slideModeAuto$2="Auto (timed)",autoSecondsLabel$2="Seconds per slide:",addQuestion$2="Add Question",questionLabel$2="Question {{index}}",addAnswer$2="Add Answer (max 3)",saving$5="Saving...",savePoseQuiz$2="Save Quiz",errorTitleRequired$2="Please enter a title",errorNoQuestions$2="Please add at least 1 question",errorEmptyQuestion$2="Question {{index}} cannot be empty",errorAnswerCount$2="Question {{index}} must have 2-3 answers",errorNoCorrectAnswer$2="Question {{index}} has no correct answer marked",errorAutoSeconds$2="Auto timer must be between 5 and 60 seconds",errorMaxAnswers$2="Maximum 3 answers per question",toastCreateSuccess$2="â
Quiz created successfully",toastUpdateSuccess$2="â
Quiz updated",toastSaveError$2="Error saving: ",toastLimitReached$2="Quiz limit reached. Please upgrade to create more.",usageCount$2="Created {{current}}/{{limit}} quizzes (Trial)",back$2="Back",stopAudio$2="Stop audio",playAudio$2="Play audio",resume$2="Resume",pause$2="Pause",enableBGM$2="Enable background music",disableBGM$2="Disable background music",exitFullscreen$2="Exit fullscreen",enterFullscreen$2="Fullscreen",finishedTitle$2="Finished!",backToHome$2="Back to main page",restart$2="Restart",questionImageAlt$2="Question image",poseAlt$2="Pose {{char}}",seconds$2="seconds",characterSize$2="ð§ Character size",sizeS$2="Small",sizeM$2="Standard",sizeL$2="Large",sizeXL$2="Extra Large",imageSet$2="ð¼ï¸ Image set",setBody$2="ð Body",setHand$2="â Hand",bgmLabel$2="ðµ Background music",bgmTrack$2="Track {{index}}",questionsReady$2="â
{{count}} questions ready",questionsNotReady$2="â Questions ({{count}})",confirmDeleteAll$2="Delete all questions?",deleteAll$2="ðï¸ Delete all",chooseFromBank$2="ð Select from Bank or AI",manualInput$2="âï¸ Manual input",questionsList$2="Questions list ({{count}})",imageOnly$2="(Image only)",answersCount$2="{{count}} answers",hasImage$2=" · ð¼ï¸ has image",hasAudio$2=" · ð has audio",editQuestionTooltip$2="Edit",removeQuestionTooltip$2="Delete",noQuestionsDesc$2="No questions yet",addQuestionsHint$2="Select from Bank or enter manually",pickerModalTitle$2="Select questions for ABC Exercise",cameraModeLabel$2="ð· Camera Mode",cameraModeDesc$2="Students perform body poses to select answers â camera detects automatically",cameraModeNew$2="New",cameraReady$2="Camera ready",cameraStarting$2="Starting camera...",cameraHide$2="Hide camera",cameraShow$2="Show camera",cameraDenied$2="Camera denied",cameraError$2="Cannot open camera",cameraDeniedDesc$2="Please grant camera permission in browser settings and reload.",cameraErrorDesc$2="Check camera connection and try reloading the page.",cooldownHint$2="Return to standing pose to continue...",errorNoCompatibleQuestions$2="No compatible questions found.",toastAddedFromLesson$2="Added {{count}} questions. Skipped {{skipped}} incompatible questions.",toastAddedFromLessonSuccess$2="Added {{count}} questions from existing lesson.",errorLibraryMetadataRequired$2="Please select Level, Subject, and Grade to publish to Community Library.",cameraModeTitle$2="Camera Mode",cameraModeInstruction$2="Students pose with their bodies to select answers â camera detects automatically",questionFontSize$2="Question font size",answerFontSize$2="Answer font size",questionImageSize$2="Question image size",answerImageSize$2="Answer image size",sizeXS$2="Small",sizeStandard$2="Standard",sizeLG$2="Large",sizeXL_text$2="Extra Large",sizeXXL$2="Maximum",customBgmPro$2="Or upload custom track (FullGame):",shuffleMode$2="ð Shuffle questions and answers",shuffleModeDesc$2="When enabled, questions and answers are randomly shuffled each time you play",aiVoice$2="ð AI Voice",aiVoiceReady$2="â
Ready",aiVoiceSetup$2="â ï¸ Needs setup",aiVoiceDesc$2="Automatically read questions using AI if no audio is uploaded",btnChooseFromBank$2="ðï¸ Choose from Bank or AI",btnFromExisting$2="ð From existing lesson",lessonPickerTitle$2="Add questions from existing lesson",report$3="Report",sessionResults$2="Session Results",questionNumber$2="Question {{number}}",selectedAnswer$2="Selected",close$2="Close",cameraModeIntro$2="Camera Mode â Posing",cameraStep1$2="Body pose detection",cameraStep1Desc$2="Stand ~1m away from camera, ensure good lighting and body visibility.",cameraStep2$2="One pose per answer",cameraStep2Desc$2="See the pose name on each answer card and perform the correct action.",cameraStep3$2="Hold for 1.5s to select",cameraStep3Desc$2="A progress bar will appear when detected. Hold until full.",cameraStartHint$2="{{count}} questions · Camera will start when you click Start",startGame$2="Start",defaultAnswer$2="Answer {{number}}",btnManual$2="âï¸ Manual input",manualLabel$2="ð Manual",secondsShort$2="s",shuffleQuestionsMode$2="ð Shuffle question order",shuffleQuestionsModeDesc$2="Questions appear in a different order each time you play",shuffleAnswersMode$2="ð Shuffle answer order",shuffleAnswersModeDesc$2="Answer positions within each question change each time you play",enPoseQuiz={pageTitle:pageTitle$8,myQuizzes:myQuizzes$2,loadingQuizzes:loadingQuizzes$2,errorLoading:errorLoading$5,confirmDelete:confirmDelete$2,deleteSuccess:deleteSuccess$5,emptyQuizzes:emptyQuizzes$2,createFirst:createFirst$2,demo:demo$6,questionsCount:questionsCount$2,play:play$2,edit:edit$2,assign:assign$7,delete:"Delete",upgradeToUnlock:upgradeToUnlock$2,lockedTip:lockedTip$5,packageExpired:packageExpired$5,extendSubscription:extendSubscription$5,pinStatus:pinStatus$2,createNew:createNew$8,createCameraNew:createCameraNew$2,cameraBadge:cameraBadge$2,createFormTitle:createFormTitle$2,editFormTitle:editFormTitle$2,createCameraFormTitle:createCameraFormTitle$2,editCameraFormTitle:editCameraFormTitle$2,titleLabel:titleLabel$5,titlePlaceholder:titlePlaceholder$5,slideModeLabel:slideModeLabel$2,slideModeManual:slideModeManual$2,slideModeAuto:slideModeAuto$2,autoSecondsLabel:autoSecondsLabel$2,addQuestion:addQuestion$2,questionLabel:questionLabel$2,addAnswer:addAnswer$2,saving:saving$5,savePoseQuiz:savePoseQuiz$2,errorTitleRequired:errorTitleRequired$2,errorNoQuestions:errorNoQuestions$2,errorEmptyQuestion:errorEmptyQuestion$2,errorAnswerCount:errorAnswerCount$2,errorNoCorrectAnswer:errorNoCorrectAnswer$2,errorAutoSeconds:errorAutoSeconds$2,errorMaxAnswers:errorMaxAnswers$2,toastCreateSuccess:toastCreateSuccess$2,toastUpdateSuccess:toastUpdateSuccess$2,toastSaveError:toastSaveError$2,toastLimitReached:toastLimitReached$2,usageCount:us
541ageCount$2,back:back$2,stopAudio:stopAudio$2,playAudio:playAudio$2,resume:resume$2,pause:pause$2,enableBGM:enableBGM$2,disableBGM:disableBGM$2,exitFullscreen:exitFullscreen$2,enterFullscreen:enterFullscreen$2,finishedTitle:finishedTitle$2,backToHome:backToHome$2,restart:restart$2,questionImageAlt:questionImageAlt$2,poseAlt:poseAlt$2,seconds:seconds$2,characterSize:characterSize$2,sizeS:sizeS$2,sizeM:sizeM$2,sizeL:sizeL$2,sizeXL:sizeXL$2,imageSet:imageSet$2,setBody:setBody$2,setHand:setHand$2,bgmLabel:bgmLabel$2,bgmTrack:bgmTrack$2,questionsReady:questionsReady$2,questionsNotReady:questionsNotReady$2,confirmDeleteAll:confirmDeleteAll$2,deleteAll:deleteAll$2,chooseFromBank:chooseFromBank$2,manualInput:manualInput$2,questionsList:questionsList$2,imageOnly:imageOnly$2,answersCount:answersCount$2,hasImage:hasImage$2,hasAudio:hasAudio$2,editQuestionTooltip:editQuestionTooltip$2,removeQuestionTooltip:removeQuestionTooltip$2,noQuestionsDesc:noQuestionsDesc$2,addQuestionsHint:addQuestionsHint$2,pickerModalTitle:pickerModalTitle$2,cameraModeLabel:cameraModeLabel$2,cameraModeDesc:cameraModeDesc$2,cameraModeNew:cameraModeNew$2,cameraReady:cameraReady$2,cameraStarting:cameraStarting$2,cameraHide:cameraHide$2,cameraShow:cameraShow$2,cameraDenied:cameraDenied$2,cameraError:cameraError$2,cameraDeniedDesc:cameraDeniedDesc$2,cameraErrorDesc:cameraErrorDesc$2,cooldownHint:cooldownHint$2,errorNoCompatibleQuestions:errorNoCompatibleQuestions$2,toastAddedFromLesson:toastAddedFromLesson$2,toastAddedFromLessonSuccess:toastAddedFromLessonSuccess$2,errorLibraryMetadataRequired:errorLibraryMetadataRequired$2,cameraModeTitle:cameraModeTitle$2,cameraModeInstruction:cameraModeInstruction$2,questionFontSize:questionFontSize$2,answerFontSize:answerFontSize$2,questionImageSize:questionImageSize$2,answerImageSize:answerImageSize$2,sizeXS:sizeXS$2,sizeStandard:sizeStandard$2,sizeLG:sizeLG$2,sizeXL_text:sizeXL_text$2,sizeXXL:sizeXXL$2,customBgmPro:customBgmPro$2,shuffleMode:shuffleMode$2,shuffleModeDesc:shuffleModeDesc$2,aiVoice:aiVoice$2,aiVoiceReady:aiVoiceReady$2,aiVoiceSetup:aiVoiceSetup$2,aiVoiceDesc:aiVoiceDesc$2,btnChooseFromBank:btnChooseFromBank$2,btnFromExisting:btnFromExisting$2,lessonPickerTitle:lessonPickerTitle$2,report:report$3,sessionResults:sessionResults$2,questionNumber:questionNumber$2,selectedAnswer:selectedAnswer$2,close:close$2,cameraModeIntro:cameraModeIntro$2,cameraStep1:cameraStep1$2,cameraStep1Desc:cameraStep1Desc$2,cameraStep2:cameraStep2$2,cameraStep2Desc:cameraStep2Desc$2,cameraStep3:cameraStep3$2,cameraStep3Desc:cameraStep3Desc$2,cameraStartHint:cameraStartHint$2,startGame:startGame$2,defaultAnswer:defaultAnswer$2,btnManual:btnManual$2,manualLabel:manualLabel$2,secondsShort:secondsShort$2,shuffleQuestionsMode:shuffleQuestionsMode$2,shuffleQuestionsModeDesc:shuffleQuestionsModeDesc$2,shuffleAnswersMode:shuffleAnswersMode$2,shuffleAnswersModeDesc:shuffleAnswersModeDesc$2},pageTitle$7="ð Thá» dục ABC",myQuizzes$1="Bà i cá»§a tôi",loadingQuizzes$1="Äang tải...",errorLoading$4="Lá»i khi tải danh sách bà i",confirmDelete$1="Bạn có chắc muá»n xóa bà i nà y không?",deleteSuccess$4="Äã xóa bà i",emptyQuizzes$1="Chưa có bà i nà o",createFirst$1="Tạo bà i Äầu tiên",demo$5={title:"Tạo Dáng Thông Minh - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"},questionsCount$1="{{count}} câu há»i",play$1="Chiếu",edit$1="Chá»nh sá»a",assign$6="Giao bà i",upgradeToUnlock$1="Gia hạn Äá» má» bà i nà y",packageExpired$4="Gói Äã hết hạn! Các bà i chưa ghim bá» khóa.",extendSubscription$4="Gia hạn 30k/nÄm",pinStatus$1="Äã ghim {{current}}/{{limit}} bà i",createNew$7="Tạo bà i thưá»ng",createCameraNew$1="Tạo bà i Camera",cameraBadge$1="Má»i",createFormTitle$1="Tạo bà i Thá» dục ABC má»i",editFormTitle$1="Chá»nh sá»a bà i Thá» dục ABC",createCameraFormTitle$1="Tạo bà i Thá» dục ABC (Chế Äá» Camera)",editCameraFormTitle$1="Chá»nh sá»a bà i Thá» dục ABC (Chế Äá» Camera)",titleLabel$4="Tiêu Äá»",titlePlaceholder$4="Nháºp tiêu Äá» bà i...",slideModeLabel$1="Chế Äá» chuyá»n slide:",slideModeManual$1="Thá»§ công (GV nhấn Tiếp theo)",slideModeAuto$1="Tá»± Äá»ng (tÃnh giá»)",autoSecondsLabel$1="Thá»i gian má»i câu:",addQuestion$1="Thêm câu há»i",questionLabel$1="Câu {{index}}",addAnswer$1="Thêm Äáp án (tá»i Äa 3)",saving$4="Äang lưu...",savePoseQuiz$1="Lưu bà i",errorTitleRequired$1="Vui lòng nháºp tiêu Äá»",errorNoQuestions$1="Vui lòng thêm Ãt nhất 1 câu há»i",errorEmptyQuestion$1="Câu há»i {{index}}
541 không ÄÆ°á»£c Äá» trá»ng",errorAnswerCount$1="Câu há»i {{index}} phải có 2-3 Äáp án",errorNoCorrectAnswer$1="Câu há»i {{index}} chưa chá»n Äáp án Äúng",errorAutoSeconds$1="Thá»i gian tá»± Äá»ng phải từ 5 Äến 60 giây",errorMaxAnswers$1="Má»i câu tá»i Äa 3 Äáp án",toastCreateSuccess$1="â
Äã tạo bà i thà nh công",toastUpdateSuccess$1="â
Äã cáºp nháºt bà i",toastSaveError$1="Lá»i khi lưu: ",toastLimitReached$1="Äã Äạt giá»i hạn sá» bà i. Vui lòng gia hạn Äá» tạo thêm.",usageCount$1="Äã tạo {{current}}/{{limit}} bà i (gói Trial)",back$1="Quay lại",stopAudio$1="Dừng âm thanh",playAudio$1="Phát âm thanh",resume$1="Tiếp tục",pause$1="Tạm dừng",enableBGM$1="Báºt nhạc ná»n",disableBGM$1="Tắt nhạc ná»n",exitFullscreen$1="Thoát toà n mà n hình",enterFullscreen$1="Toà n mà n hình",finishedTitle$1="Äã hoà n thà nh!",backToHome$1="Vá» trang chÃnh",restart$1="Chiếu lại",questionImageAlt$1="Hình câu há»i",poseAlt$1="Tư thế {{char}}",seconds$1="giây",characterSize$1="ð§ Cỡ nhân váºt",sizeS$1="Bé",sizeM$1="Chuẩn",sizeL$1="Lá»n",sizeXL$1="Rất lá»n",imageSet$1="ð¼ï¸ BỠảnh",setBody$1="ð CÆ¡ thá»",setHand$1="â Bà n tay",bgmLabel$1="ðµ Nhạc ná»n",bgmTrack$1="Bà i {{index}}",questionsReady$1="â
Äã Äá»§ {{count}} câu há»i",questionsNotReady$1="â Câu há»i ({{count}})",confirmDeleteAll$1="Xóa tất cả câu há»i?",deleteAll$1="ðï¸ Xóa tất cả",chooseFromBank$1="ð Chá»n từ Kho hoặc AI",manualInput$1="âï¸ Nháºp thá»§ công",questionsList$1="Danh sách câu há»i ({{count}})",imageOnly$1="(ChỠảnh)",answersCount$1="{{count}} Äáp án",hasImage$1=" · ð¼ï¸ có ảnh",hasAudio$1=" · ð có âm thanh",editQuestionTooltip$1="Chá»nh sá»a",removeQuestionTooltip$1="Xóa",noQuestionsDesc$1="Chưa có câu há»i nà o",addQuestionsHint$1="Chá»n từ Kho câu há»i hoặc nháºp thá»§ công",pickerModalTitle$1="Chá»n câu há»i cho Thá» dục ABC",cameraModeLabel$1="ð· Chế Äá» camera",cameraModeDesc$1="Há»c sinh tạo dáng bằng cÆ¡ thá» Äá» chá»n Äáp án â camera tá»± Äá»ng nháºn diá»n",cameraModeNew$1="Má»i",cameraReady$1="Camera sẵn sà ng",cameraStarting$1="Äang khá»i Äá»ng camera...",cameraHide$1="Ẩn camera",cameraShow$1="Hiá»n camera",cameraDenied$1="Camera bá» từ chá»i",cameraError$1="Không thá» má» camera",cameraDeniedDesc$1="Hãy cấp quyá»n camera trong cà i Äặt trình duyá»t rá»i tải lại trang.",cameraErrorDesc$1="Kiá»m tra lại kết ná»i camera và thá» tải lại trang.",cooldownHint$1="Vá» tư thế Äứng thẳng Äá» tiếp tục...",errorNoCompatibleQuestions$1="Không có câu nà o phù hợp.",toastAddedFromLesson$1="Äã thêm {{count}} câu. Bá» qua {{skipped}} câu không tương thÃch.",toastAddedFromLessonSuccess$1="Äã thêm {{count}} câu từ bà i có sẵn.",errorLibraryMetadataRequired$1="Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng.",cameraModeTitle$1="Chế Äá» camera",cameraModeInstruction$1="Há»c sinh tạo dáng bằng cÆ¡ thá» Äá» chá»n Äáp án â camera tá»± Äá»ng nháºn diá»n",questionFontSize$1="Cỡ chữ câu há»i",answerFontSize$1="Cỡ chữ Äáp án",questionImageSize$1="Cỡ ảnh câu há»i",answerImageSize$1="Cỡ ảnh Äáp án",sizeXS$1="Bé",sizeStandard$1="Chuẩn",sizeLG$1="Lá»n",sizeXL_text$1="Rất lá»n",sizeXXL$1="Cá»±c Äại",customBgmPro$1="Hoặc tải nhạc riêng (FullGame):",shuffleMode$1="ð Äảo lá»n thứ tá»± câu và Äáp án",shuffleModeDesc$1="Khi báºt, thứ tá»± câu há»i và Äáp án sẽ ÄÆ°á»£c xáo ngẫu nhiên má»i lần chÆ¡i",aiVoice$1="ð Giá»ng Äá»c AI",aiVoiceReady$1="â
Sẵn sà ng",aiVoiceSetup$1="â ï¸ Cần cà i Äặt",aiVoiceDesc$1="Tá»± Äá»ng Äá»c câu há»i bằng AI nếu câu há»i không có audio upload",btnChooseFromBank$1="ðï¸ Chá»n từ Kho hoặc AI",btnFromExisting$1="ð Từ bà i có sẵn",lessonPickerTitle$1="Thêm câu từ bà i có sẵn",report$2="Báo cáo",sessionResults$1="Kết quả là m bà i",questionNumber$1="Câu {{number}}",selectedAnswer$1="Äã chá»n",close$1="Äóng",cameraModeIntro$1="Chế Äá» camera â Tạo dáng",cameraStep1$1="Camera nháºn diá»n tư thế cÆ¡ thá»",cameraStep1Desc$1="Äứng cách camera ~1m, Äảm bảo ánh sáng tá»t và thấy ÄÆ°á»£c từ Äầu Äến hông.",cameraStep2$1="Má»i Äáp án gắn vá»i 1 tư thế",cameraStep2Desc$1="Xem tên tư thế trên má»i ô Äáp án rá»i thá»±c hiá»n Äúng Äá»ng tác.",cameraStep3$1="Giữ dáng 1.5 giây Äá» chá»n",cameraStep3Desc$1="Thanh tiến trình sẽ hiá»n khi camera nháºn ra. Giữ cho Äến khi Äầy.",cameraStartHint$1="{{count}} câu há»i · Camera sẽ báºt ngay khi nhấn Bắt Äầu",startGame$1="Bắt Äầu",defaultAnswer$1="Äáp án {{number}}",lockedTip$4="Gia hạn Äá» má» bà i nà y",btnManual$1="âï¸ Nháºp thá»§ công",manualLabel$1="ð
541 Thá»§ công",secondsShort$1="s",shuffleQuestionsMode$1="ð Äảo lá»n thứ tá»± câu há»i",shuffleQuestionsModeDesc$1="Má»i lần chÆ¡i, các câu hiá»n theo thứ tá»± khác nhau",shuffleAnswersMode$1="ð Äảo lá»n thứ tá»± Äáp án",shuffleAnswersModeDesc$1="Má»i lần chÆ¡i, vá» trà các Äáp án trong 1 câu Äá»i chá»",viPoseQuiz={pageTitle:pageTitle$7,myQuizzes:myQuizzes$1,loadingQuizzes:loadingQuizzes$1,errorLoading:errorLoading$4,confirmDelete:confirmDelete$1,deleteSuccess:deleteSuccess$4,emptyQuizzes:emptyQuizzes$1,createFirst:createFirst$1,demo:demo$5,questionsCount:questionsCount$1,play:play$1,edit:edit$1,assign:assign$6,delete:"Xóa",upgradeToUnlock:upgradeToUnlock$1,packageExpired:packageExpired$4,extendSubscription:extendSubscription$4,pinStatus:pinStatus$1,createNew:createNew$7,createCameraNew:createCameraNew$1,cameraBadge:cameraBadge$1,createFormTitle:createFormTitle$1,editFormTitle:editFormTitle$1,createCameraFormTitle:createCameraFormTitle$1,editCameraFormTitle:editCameraFormTitle$1,titleLabel:titleLabel$4,titlePlaceholder:titlePlaceholder$4,slideModeLabel:slideModeLabel$1,slideModeManual:slideModeManual$1,slideModeAuto:slideModeAuto$1,autoSecondsLabel:autoSecondsLabel$1,addQuestion:addQuestion$1,questionLabel:questionLabel$1,addAnswer:addAnswer$1,saving:saving$4,savePoseQuiz:savePoseQuiz$1,errorTitleRequired:errorTitleRequired$1,errorNoQuestions:errorNoQuestions$1,errorEmptyQuestion:errorEmptyQuestion$1,errorAnswerCount:errorAnswerCount$1,errorNoCorrectAnswer:errorNoCorrectAnswer$1,errorAutoSeconds:errorAutoSeconds$1,errorMaxAnswers:errorMaxAnswers$1,toastCreateSuccess:toastCreateSuccess$1,toastUpdateSuccess:toastUpdateSuccess$1,toastSaveError:toastSaveError$1,toastLimitReached:toastLimitReached$1,usageCount:usageCount$1,back:back$1,stopAudio:stopAudio$1,playAudio:playAudio$1,resume:resume$1,pause:pause$1,enableBGM:enableBGM$1,disableBGM:disableBGM$1,exitFullscreen:exitFullscreen$1,enterFullscreen:enterFullscreen$1,finishedTitle:finishedTitle$1,backToHome:backToHome$1,restart:restart$1,questionImageAlt:questionImageAlt$1,poseAlt:poseAlt$1,seconds:seconds$1,characterSize:characterSize$1,sizeS:sizeS$1,sizeM:sizeM$1,sizeL:sizeL$1,sizeXL:sizeXL$1,imageSet:imageSet$1,setBody:setBody$1,setHand:setHand$1,bgmLabel:bgmLabel$1,bgmTrack:bgmTrack$1,questionsReady:questionsReady$1,questionsNotReady:questionsNotReady$1,confirmDeleteAll:confirmDeleteAll$1,deleteAll:deleteAll$1,chooseFromBank:chooseFromBank$1,manualInput:manualInput$1,questionsList:questionsList$1,imageOnly:imageOnly$1,answersCount:answersCount$1,hasImage:hasImage$1,hasAudio:hasAudio$1,editQuestionTooltip:editQuestionTooltip$1,removeQuestionTooltip:removeQuestionTooltip$1,noQuestionsDesc:noQuestionsDesc$1,addQuestionsHint:addQuestionsHint$1,pickerModalTitle:pickerModalTitle$1,cameraModeLabel:cameraModeLabel$1,cameraModeDesc:cameraModeDesc$1,cameraModeNew:cameraModeNew$1,cameraReady:cameraReady$1,cameraStarting:cameraStarting$1,cameraHide:cameraHide$1,cameraShow:cameraShow$1,cameraDenied:cameraDenied$1,cameraError:cameraError$1,cameraDeniedDesc:cameraDeniedDesc$1,cameraErrorDesc:cameraErrorDesc$1,cooldownHint:cooldownHint$1,errorNoCompatibleQuestions:errorNoCompatibleQuestions$1,toastAddedFromLesson:toastAddedFromLesson$1,toastAddedFromLessonSuccess:toastAddedFromLessonSuccess$1,errorLibraryMetadataRequired:errorLibraryMetadataRequired$1,cameraModeTitle:cameraModeTitle$1,cameraModeInstruction:cameraModeInstruction$1,questionFontSize:questionFontSize$1,answerFontSize:answerFontSize$1,questionImageSize:questionImageSize$1,answerImageSize:answerImageSize$1,sizeXS:sizeXS$1,sizeStandard:sizeStandard$1,sizeLG:sizeLG$1,sizeXL_text:sizeXL_text$1,sizeXXL:sizeXXL$1,customBgmPro:customBgmPro$1,shuffleMode:shuffleMode$1,shuffleModeDesc:shuffleModeDesc$1,aiVoice:aiVoice$1,aiVoiceReady:aiVoiceReady$1,aiVoiceSetup:aiVoiceSetup$1,aiVoiceDesc:aiVoiceDesc$1,btnChooseFromBank:btnChooseFromBank$1,btnFromExisting:btnFromExisting$1,lessonPickerTitle:lessonPickerTitle$1,report:report$2,sessionResults:sessionResults$1,questionNumber:questionNumber$1,selectedAnswer:selectedAnswer$1,close:close$1,cameraModeIntro:cameraModeIntro$1,cameraStep1:cameraStep1$1,cameraStep1Desc:cameraStep1Desc$1,cameraStep2:cameraStep2$1,cameraStep2Desc:cameraStep2Desc$1,cameraStep3:cameraStep3$1,cameraStep3Desc:cameraStep3Desc$1,cameraStartHint:cameraStartHint$1,startGame:startGame$1,defaultAnswer:defaultAnswer$1,lockedTip:lockedTip$4,btnManual
541:btnManual$1,manualLabel:manualLabel$1,secondsShort:secondsShort$1,shuffleQuestionsMode:shuffleQuestionsMode$1,shuffleQuestionsModeDesc:shuffleQuestionsModeDesc$1,shuffleAnswersMode:shuffleAnswersMode$1,shuffleAnswersModeDesc:shuffleAnswersModeDesc$1},title$6="ðï¸ Question Bank",stats$2={count:"{{count}} / 1000 questions",unit:"questions"},actions$4={exportAll:"Export all",importExcel:"Import Excel",searchPlaceholder:"Search questions...",importFromFile:"Import from file",prevPage:"â Previous",nextPage:"Next â",addQuestion:"Add Question",duplicateLastQuestion:"Duplicate last question",save:"Save {{count}} questions",saveChanges:"Save changes",cancel:"Cancel",useSelected:"Use {{count}} selected",deleteAudio:"Delete audio"},alerts$a={quotaReached:"Bank reached 1000 questions â oldest questions will be auto-deleted when adding new ones.",quotaWarning:"You have used {{count}}/1000 questions. When full, new ones will replace the oldest.",pastingImage:"Uploading image from clipboard...",saveGuidance:"ð¾ You should enter less than 10 questions then Save, then add more â to prevent data loss.",noQuestionsPlaceholder:'No questions yet. Click "Add Question" to start.',answerLimit:{multiple:"Accepts questions with 2-{{max}} answers with exactly 1 correct answer.",single:"Only accepts questions with 2 answers with exactly 1 correct answer."},multiTypeHint:"Supports 4 types: Multiple choice, True/False, Multiple answers, Fill in the blank."},empty$3={noResults:"No questions found",noQuestions:"No questions yet",tryDifferentKeyword:"Try a different keyword",autoSaveInfo:"Questions will be auto-saved when you create them in features (Video, Wheel, Hand Slash...)",notEntered:"(Not entered)",drafting:"Drafting..."},error$4={loadFailed:"Could not load questions. Please try again.",loadExportFailed:"Could not load questions for export. Please try again.",deleteFailed:"Error occurred while deleting question",loadMoreFailed:"Error loading more questions",syncFailed:"Sync error question {{index}}: {{message}}",importFailed:"Error importing questions",pasteImageFailed:"Error uploading image from clipboard. Please try again.",validation:{atLeastOne:"Must have at least 1 question",maxReached:"Maximum {{count}} questions allowed (currently {{current}})",maxQuestions:"Maximum {{count}} questions needed",emptyQuestion:"Question {{index}} cannot be empty",atLeastTwoAnswers:"Must have at least 2 answers",maxAnswers:"Question {{index}} can have at most {{count}} answers",maxAnswersPerQuestion:"Maximum {{count}} answers per question",mustHaveCorrect:"Question {{index}} must have a correct answer",emptyAnswer:"Question {{index}} has an empty answer",emptyStatement:"Question {{index}} has an empty statement",mustHaveCorrectAnswer:"Question {{index}} must have a correct answer",mustHaveMultipleCorrect:"Question {{index}} must have at least 1 correct answer",maxQuestionsReached:"You can select at most {{count}} questions"},audioUploadFailed:"Audio upload failed. Check your connection and press Save again.",saveChanges:"Could not save changes. Please try again.",exportFailed:"Export failed. Please try again."},confirm$2={deleteSingle:"Are you sure you want to delete this question?",deleteFromBank:"Are you sure you want to delete this from the bank?",deleteAudio:"Delete audio"},editor$2={title:"Select from Question Bank",maxSelection:"({{count}} max)",loadedCount:"Loaded: {{count}} questions{{hasMore}}",hasMoreSuffix:" (more...)",searchInternal:"Search questions (loaded data only)...",filterBySource:"Filter by source",filterSearch:"Search",filterClear:"Clear filter",sourceAll:"Select question source",sourceManual:"Manual",sourceImport:"Imported",filterResultCount:"{{count}} questions",searchFiltered:"Search questions...",selectAll:"Select all {{count}}",deselectAll:"Deselect all",selectedCount:"Selected: {{count}}",tryLoadMore:'Try clicking "Load more" to search in unloaded part',loadMore:"Load {{count}} more",loading:"Loading...",manualEntry:"âï¸ Manual Entry",editQuestion:"âï¸ Edit Question",questionNum:"Question {{index}}",questionContent:"Question content:",answersTitle:"Answers (check the correct one):",addAnswer:"Add Answer",questionType:"Type",typeAbcd:"ð¤ Multiple Choice",typeTrueFalse:"â
True/False",typeMultiple:"âï¸ Multi-Answer",typeShortAnswer:"âï¸ Fill In",typeChangeWarning:"Changing type will clear current answers. Continue?",statementsTitle:"Statements (select True/False):",statementPlaceholder:"Statement {{index}}",trueBtn:"T",falseBtn:"F",answersMultipleTitle:"Answers (check all correct):",correctAnswerLabel:"Correct answer:",altAnswersLabel:"Alternative answers:",markAsAnswer:"Mark as answer",resetAnswer:"Reset answer",shortAnswerGuide:"Select text in question â click 'Mark as answer'",addAltAnswer:"Add",altAnswerPlaceholder:"Alternative answer...",fontSize:{label:"Font size",general:"Use global size",small:"Small",medium:"Standard",large:"Large",xl:"Extra Large",huge:"Huge"},imageSize:{label:"Image size",small:"Small",medium:"Standard",large:"Large",xl:"Extra Large",sizeSmall:"Small",sizeMedium:"Standard",sizeLarge:"Large",sizeXl:"Extra Large"},syncToBank:{tooltip:"Sync to Bank (usage intensive â use only when needed)",confirm:"Tap again to confirm sync",success:"â
Synced!"}
541,simpleKeyboard:"⨠Standard Keyboard",mathLive:"⨠Math Editor",closeTooltip:"Close",deleteQuestionTooltip:"Delete question",duplicateQuestionTooltip:"Duplicate question",deleteTooltip:"Delete",simpleKeyboardTooltip:"Use standard keyboard",mathLiveTooltip:"Use math formula editor",pastedImageTooltip:"Uploading image from clipboard...",restrictedTo:"Only {{type}} questions are accepted.",maxAnswersSuffix:"Up to {{count}} answers."},pagination$1={page:"Page {{page}}"},lessonPicker$2={title:"Pick a lesson to import questions",cancel:"Cancel",loadMore:"Load more",emptyFeature:"No lessons yet in {{feature}}",questionCount:"{{count}} questions",conversionNote:"Questions will be converted to the target format.",noQuestions:"This lesson has no questions.",errorList:"Could not load lessons. Please try again.",errorLesson:"Could not load questions. Please try again.",featureLabels:{wheel_quiz:"Spin Wheel",hand_slash:"Fruit Slash Quiz",head_tilt:"Head Tilt Quiz",paced_quiz:"Paced Quiz",tug_of_war:"Tug of War",pose_quiz:"Pose Quiz",turn_based:"Turn-Based Game",versus_game:"Versus Game",star_bag:"Lucky Star Bag",minesweeper:"Minesweeper",crossword:"Crossword",interactive_image:"Interactive Image",journey:"Journey",interactive_video:"Interactive Video"}},uploader$2={image:{label:"Image",uploadBtn:"Upload from computer",cropUploadBtn:"Crop then upload",cropUploadHint:"Pick an image, crop it first, then upload",errorType:"Please select an image file",errorGeneric:"Error uploading image. Please try again.",uploading:"Uploading...",tooltipUpload:"Upload image from computer",cropTitle:"Crop image",cropHint:"Drag to select the area to keep. Cropping makes the image sharper and lighter.",cropConfirm:"Crop & upload",cropCancel:"Cancel",rotateLeft:"Rotate left 90°",rotateRight:"Rotate right 90°",cropTooltip:"Crop / rotate image",errorCropLoad:"Could not load the image for cropping. Please try again."},audio:{uploadBtn:"Upload Audio",recordBtn:"Record",stopBtn:"Stop",aiVoiceBtn:"AI Voice",uploading:"Uploading...",errorMic:"Could not access microphone. Please grant permission.",proOnly:"ð FullGame PLAN only",proDesc:"Get FullGame (200k/year) to upload audio for questions.",upgradeBtn:"Get FullGame",tooltipUpload:"Upload audio (MP3/WAV/OGG, max 5MB)",tooltipUploadPro:"Upload audio â FullGame PLAN only",tooltipRecord:"Record directly",tooltipRecordPro:"Record â FullGame PLAN only",tooltipAi:"Create AI voice",tooltipStop:"Stop recording",tooltipPlay:"Audio file â click to listen",tooltipDelete:"Delete audio",confirmTitle:"ð¤ Confirm recording",confirmDesc:"Listen to the recording before using:",btnRetry:"Record again",btnUse:"Use recording",aiModal:{title:"ðï¸ Create AI Voice",desc:"You will be redirected to the AI Voice tool. Create your .mp3 file then come back and upload it.",instruction:"After you have the .mp3 file, upload it here:",btnOpen:"I understand, open tool",btnClose:"Close"},pendingHint:"â³ File not uploaded yet â press Save to finish."}},bgm$2={uploadBtn:"Upload music",uploadTooltip:"Upload custom background music",deleteTooltip:"Delete custom music",customLabel:"Custom music",proOnly:"FullGame PLAN only",proDesc:"Get FullGame to upload your own background music.",upgradeBtn:"Get FullGame",errorType:"Only .mp3, .wav, .ogg files are accepted",errorSize:"File too large ({{size}} MB). Maximum 5 MB.",errorLogin:"You must be logged in to upload music.",errorGeneric:"Upload failed. Please try again.",disclaimer:{title:"âï¸ Copyright Notice",intro:"By uploading music, you confirm that:",point1:"You own or have the right to use this track.",point2:"The music does not infringe any third-party copyright.",point3:"You bear full legal responsibility for any related issues.",cancel:"Cancel",confirm:"I agree, proceed with upload"}},enQuestionBank={title:title$6,stats:stats$2,actions:actions$4,alerts:alerts$a,empty:empty$3,error:error$4,confirm:confirm$2,editor:editor$2,pagination:pagination$1,import:{tabs:{paste:"Paste from AI",upload:"Upload File",export:"Export File"},paste:{title:"ð How to Paste JSON from AI",instruction:"Go to: <0>AI Question Generator</0><br />Create questions there, then click <1>Copy to giaoviendoimoi</1> and paste below.",placeholder:"Paste JSON content from AI Studio...",label:"Paste JSON here:",shuffle:"Auto-shuffle answer positions",shuffleDesc:"Randomly shuffle A/B/C/D order â correct answer content remains the same",btnImport:"Import JSON",btnImporting:"Importing...",btnConfirm:"Save to Bank ({{count}} questions)",previewTitle:"Preview ({{count}} questions)",previewMeta:"{{count}} answers",previewMore:"... and {{count}} other questions",errorArray:"Data must be an array of questions",errorMissing:"Question {{index}}: Missing required field (question_content or options)",errorMinAnswers:"Question {{index}}: Must have at least 2 answers",errorNoCorrect:"Question {{index}}: No correct answer found",errorEmpty:"Please paste JSON content into the box below",errorLimit:"Maximum 30 questions per import",errorNoQuestions:"No questions foun
541d in data",errorInvalid:"Invalid JSON format. Please check again.",successParsed:"Parsed {{count}} questions from JSON{{shuffle}}.",shuffledSuffix:" (answers shuffled)"},upload:{formatLabel:"Format",templateTitle:"ð No file yet? Download template",templateDesc:"Excel template with standard format (ID, Question, Answer A/B/C/D, Correct Answer). Includes 2 example questions.",btnDownload:"Download Excel Template",docxGuideTitle:"Word file format guide",docxGuideDesc:"Write questions as shown below. Underline the letter (A-F) of the correct answer. You can underline the entire answer line.",btnDownloadDocx:"Download sample Word file",btnSelect:"Select file to import",btnProcessing:"Processing...",errorFormat:"File format must be {{format}}",successRead:"Read {{count}} questions from file{{shuffle}}.",instructionTitle:"ð¡ Import Guide",instructionList:{li1:"Use the Excel template to ensure correct formatting (download above)",li2:"AI Generator compatible: Excel files from ⨠Create with AI can be imported directly",li3:"Excel Format: ID, Question, Answer A/B/C/D, Correct Answer",li4:"Word Format (.docx): Câu 1: ..., A. B. C. D. â underline the correct answer label",li5:"LaTeX support: Use $formula$ syntax (e.g., $2 + 2$)",li6:"Correct Answer: Enter A, B, C, or D (multiple: A, C or A C)",li7:"Limit: Maximum 20-30 questions per import"}},export:{title:"ð Export Info",countInfo:"Questions to be exported: {{count}}",formatExcel:"Excel File (.xlsx) - Best for editing and re-importing",formatJson:"JSON File (.json) - Best for backup and system integration",formatCsv:"CSV File (.csv) - Best for processing with other tools",btnExport:"Export",btnExporting:"Exporting file...",success:"Exported {{count}} questions successfully!",notesTitle:"ð Notes",notesList:{li1:"The file will be downloaded to your Downloads folder",li2:"Filename will be: cau-hoi-YYYY-MM-DD",li3:"Math formulas will keep $...$ format",li4:"Excel files can be re-imported to restore or share questions"},errorNoQuestions:"There are no questions to export"}},lessonPicker:lessonPicker$2,uploader:uploader$2,bgm:bgm$2},title$5="ðï¸ Kho Câu Há»i",stats$1={count:"{{count}} / 1000 câu",unit:"câu"},actions$3={exportAll:"Xuất toà n bá» kho",importExcel:"Nháºp từ Excel/Word",searchPlaceholder:"Tìm kiếm câu há»i...",importFromFile:"Import từ file",prevPage:"â Trang trưá»c",nextPage:"Trang sau â",addQuestion:"Thêm câu há»i",duplicateLastQuestion:"Nhân bản câu trên",save:"Lưu {{count}} câu há»i",saveChanges:"Lưu thay Äá»i",cancel:"Há»§y",useSelected:"Dùng {{count}} câu Äã chá»n",deleteAudio:"Xóa âm thanh"},alerts$9={quotaReached:"Kho Äã Äạt 1000 câu â khi thêm câu má»i, câu cÅ© nhất sẽ tá»± Äá»ng bá» xóa.",quotaWarning:"Bạn Äã dùng {{count}}/1000 câu. Khi Äầy, câu má»i sẽ thay thế câu cÅ© nhất.",pastingImage:"Äang tải lên hình ảnh từ clipboard...",saveGuidance:"ð¾ Nên nháºp dưá»i 10 câu rá»i Lưu, sau Äó nháºp thêm â phòng mất dữ liá»u.",noQuestionsPlaceholder:'Chưa có câu há»i nà o. Nhấn "Thêm câu há»i" Äá» bắt Äầu.',answerLimit:{multiple:"Chấp nháºn các câu có 2-{{max}} Äáp án vá»i Äúng 1 Äáp án Äúng.",single:"Chá» chấp nháºn các câu có 2 Äáp án vá»i Äúng 1 Äáp án Äúng."},multiTypeHint:"Há» trợ 4 dạng: Trắc nghiá»m, Äúng/Sai, Nhiá»u Äáp án, Äiá»n từ."},empty$2={noResults:"Không tìm thấy câu há»i nà o",noQuestions:"Chưa có câu há»i nà o",tryDifferentKeyword:"Thá» từ khóa khác",autoSaveInfo:"Câu há»i sẽ tá»± Äá»ng lưu khi bạn tạo á» các chức nÄng (Video, Vòng quay, Hand Slash...)",notEntered:"(Chưa nháºp)",drafting:"Äang soạn thảo..."},error$3={loadFailed:"Không thá» tải câu há»i. Vui lòng thá» lại.",loadExportFailed:"Không thá» tải câu há»i Äá» xuất. Vui lòng thá» lại.",deleteFailed:"Có lá»i xảy ra khi xóa câu há»i",loadMoreFailed:"Lá»i tải thêm câu há»i",syncFailed:"Lá»i Äá»ng bá» câu {{index}}: {{message}}",importFailed:"Lá»i khi nháºp câu há»i",pasteImageFailed:"Lá»i khi tải lên hình ảnh từ clipboard. Vui lòng thá» lại.",validation:{atLeastOne:"Phải có Ãt nhất 1 câu há»i",maxReached:"Chá» ÄÆ°á»£c tá»i Äa {{count}} câu há»i (hiá»n có {{current}})",maxQuestions:"Chá» cần tá»i Äa {{count}} câu há»i",emptyQuestion:"Câu há»i {{index}} không ÄÆ°á»£c Äá» trá»ng",atLeastTwoAnswers:"Phải có Ãt nhất 2 Äáp án",maxAnswers:"Câu há»i {{index}} chá» ÄÆ°á»£c có tá»i Äa {{count}} Äáp án",maxAnswersPerQuestion:"Tá»i Äa {{count}} Äáp án cho má»i câu há»i",mustHaveCorrect:"Câu há»i {{index}} phải có Äáp án Äúng",emptyAnswer:"Câu há»i {{index}} có Äáp án bá» trá»ng",emptyStatement:"Câu há»i {{index}} có má»nh Äá» bá» trá»ng",mustHaveCorrectAnswer:"Câu há»i {{index}} phải có Äáp án Äúng",mustHaveMultipleCorrect:"Câu há»i {{index}} phải có Ãt nhất 1 Äáp án Äúng",maxQuestionsReached:"Chá» ÄÆ°á»£c chá»n tá»i Äa {{count}} câu há»i"},audioUploadFailed:"Tải tá»p âm thanh lên thất bại. Kiá»m tra kết ná»i rá»i bấm Lưu lại.",saveChanges:"Không lưu ÄÆ°á»£c thay Äá»i. Vui lòng thá» lại.",exportFailed:"Xuất file thất bại. Vui lòng thá» lại."},confirm$1={deleteSingle:"Bạn có chắc muá»n xóa câu há»i nà y?",deleteFromBank:"Bạn có chắc muá»n xóa câu há»i nà y khá»i kho?",deleteAudio:"Xóa âm thanh"},editor$1={title:"Chá»n câu há»i từ Kho câu há»i",maxSelection:"(Tá»i Äa {{count}} câu)",loadedCount:"Äã tải: {{count}} câu{{hasMore}}",hasMoreSuffix:" (còn thêm)",searchInternal:"Tìm kiếm câu há»i (tìm trong dữ liá»u Äã tải)...",filterBySource:"Lá»c theo
541nguá»n",filterSearch:"Tìm",filterClear:"Xoá lá»c",sourceAll:"Chá»n nÆ¡i xuất phát cá»§a câu há»i (Tất cả)",sourceManual:"Tạo thá»§ công",sourceImport:"Nháºp file",filterResultCount:"{{count}} câu",searchFiltered:"Tìm kiếm câu há»i...",selectAll:"Chá»n tất cả {{count}}",deselectAll:"Bá» chá»n",selectedCount:"Äã chá»n: {{count}}",tryLoadMore:'Thá» bấm "Tải thêm" Äá» tìm trong phần chưa tải',loadMore:"Tải thêm {{count}} câu",loading:"Äang tải...",manualEntry:"âï¸ Nháºp câu há»i thá»§ công",editQuestion:"âï¸ Sá»a câu há»i",questionNum:"Câu {{index}}",questionContent:"Ná»i dung câu há»i:",answersTitle:"Äáp án (tick chá»n Äáp án Äúng):",addAnswer:"Thêm Äáp án",questionType:"Dạng câu",typeAbcd:"ð¤ Trắc nghiá»m",typeTrueFalse:"â
Äúng/Sai",typeMultiple:"âï¸ Nhiá»u ÄA",typeShortAnswer:"âï¸ Äiá»n từ",typeChangeWarning:"Äá»i dạng sẽ xóa Äáp án hiá»n tại. Tiếp tục?",statementsTitle:"Các má»nh Äá» (chá»n Äúng/Sai):",statementPlaceholder:"Má»nh Äá» {{index}}",trueBtn:"Ä",falseBtn:"S",answersMultipleTitle:"Äáp án (tick chá»n các Äáp án Äúng):",correctAnswerLabel:"Äáp án Äúng:",altAnswersLabel:"Äáp án thay thế:",markAsAnswer:"Äánh dấu Äáp án",resetAnswer:"Há»§y Äánh dấu",shortAnswerGuide:"Bôi chá»n từ/cụm từ trong câu há»i â bấm 'Äánh dấu Äáp án'",addAltAnswer:"Thêm",altAnswerPlaceholder:"Äáp án thay thế...",fontSize:{label:"Cỡ chữ",general:"Theo cỡ chung",small:"Bé",medium:"Chuẩn",large:"Lá»n",xl:"Rất lá»n",huge:"Cá»±c Äại"},imageSize:{label:"Cỡ ảnh",small:"Bé",medium:"Chuẩn",large:"Lá»n",xl:"Rất lá»n",sizeSmall:"Bé",sizeMedium:"Chuẩn",sizeLarge:"Lá»n",sizeXl:"Rất lá»n"},syncToBank:{tooltip:"Cáºp nháºt câu nà y lên Kho (tá»n tà i nguyên â chá» dùng khi cần thiết)",confirm:"Nhấn lần nữa Äá» xác nháºn Äá»ng bá»",success:"â
Äã Äá»ng bá»!"},simpleKeyboard:"⨠Bà n phÃm chuẩn",mathLive:"⨠Soạn thảo Toán",closeTooltip:"Äóng",deleteQuestionTooltip:"Xóa câu há»i",duplicateQuestionTooltip:"Nhân bản câu há»i",deleteTooltip:"Xóa",simpleKeyboardTooltip:"Sá» dụng bà n phÃm chuẩn",mathLiveTooltip:"Sá» dụng soạn thảo công thức Toán",pastedImageTooltip:"Äang tải lên hình ảnh từ clipboard...",restrictedTo:"Chá» nháºn câu há»i dạng {{type}}.",maxAnswersSuffix:"Tá»i Äa {{count}} Äáp án."},pagination={page:"Trang {{page}}"},lessonPicker$1={title:"Chá»n bà i Äá» lấy câu há»i",cancel:"Há»§y",loadMore:"Tải thêm",emptyFeature:"Chưa có bà i nà o trong {{feature}}",questionCount:"{{count}} câu há»i",conversionNote:"Câu há»i sẽ ÄÆ°á»£c chuyá»n Äá»i sang Äá»nh dạng phù hợp.",noQuestions:"Bà i nà y chưa có câu há»i nà o.",errorList:"Không thá» tải danh sách bà i. Vui lòng thá» lại.",errorLesson:"Không thá» tải câu há»i. Vui lòng thá» lại.",featureLabels:{wheel_quiz:"Vòng Quay - Äua Vá»t",hand_slash:"Quiz Chém Hoa Quả",head_tilt:"Quiz Nghiêng Äầu",paced_quiz:"Trắc nghiá»m theo nhá»p Äá»",tug_of_war:"Kéo Co - Äua thuyá»n kiến thức",pose_quiz:"Thá» dục ABC",turn_based:"Game Theo Lượt",versus_game:"Äá»i Kháng",star_bag:"Túi Sao May Mắn",minesweeper:"Dò Mìn",crossword:"à Chữ",interactive_image:"Ảnh Tương Tác",journey:"Hà nh Trình",interactive_video:"Video Tương Tác"}},uploader$1={image:{label:"Hình ảnh",uploadBtn:"Tải lên từ máy",cropUploadBtn:"Cắt rá»i tải lên",cropUploadHint:"Chá»n ảnh, cắt trưá»c rá»i má»i tải lên",errorType:"Vui lòng chá»n file hình ảnh",errorGeneric:"Lá»i khi tải lên hình ảnh. Vui lòng thá» lại.",uploading:"Äang tải...",tooltipUpload:"Tải lên hình ảnh từ máy",cropTitle:"Cắt ảnh",cropHint:"Kéo Äá» chá»n vùng cần giữ lại. Cắt bá»t giúp ảnh nét hÆ¡n và nhẹ hÆ¡n.",cropConfirm:"Cắt & tải lên",cropCancel:"Huá»·",rotateLeft:"Xoay trái 90°",rotateRight:"Xoay phải 90°",cropTooltip:"
541Cắt / xoay ảnh",errorCropLoad:"Không tải ÄÆ°á»£c ảnh Äá» cắt. Vui lòng thá» lại."},audio:{uploadBtn:"Tải âm thanh",recordBtn:"Thu âm",stopBtn:"Dừng",aiVoiceBtn:"Giá»ng AI",uploading:"Äang tải lên...",errorMic:"Không thá» truy cáºp microphone. Vui lòng cho phép quyá»n sá» dụng micro.",proOnly:"ð Chá» dà nh cho FullGame",proDesc:"Mua FullGame (200k/nÄm) Äá» upload âm thanh cho câu há»i.",upgradeBtn:"Mua FullGame",tooltipUpload:"Tải lên âm thanh (MP3/WAV/OGG, tá»i Äa 5MB)",tooltipUploadPro:"Upload âm thanh â Chá» FullGame",tooltipRecord:"Thu âm trá»±c tiếp",tooltipRecordPro:"Thu âm â Chá» FullGame",tooltipAi:"Tạo giá»ng AI",tooltipStop:"Dừng thu âm",tooltipPlay:"Có file âm thanh â click Äá» nghe",tooltipDelete:"Xóa âm thanh",confirmTitle:"ð¤ Xác nháºn bản thu âm",confirmDesc:"Nghe lại bản thu âm trưá»c khi sá» dụng:",btnRetry:"Thu lại",btnUse:"Sá» dụng",aiModal:{title:"ðï¸ Tạo giá»ng Äá»c AI",desc:"Bạn sẽ ÄÆ°á»£c chuyá»n sang công cụ Tạo giá»ng Äá»c AI, hãy tạo tá»p .mp3 cá»§a bạn và Tải lên bằng nút Tải lên âm thanh.",instruction:"Sau khi có tá»p .mp3, tải lên tại Äây:",btnOpen:"Äã hiá»u, má» công cụ",btnClose:"Äóng"},pendingHint:"â³ Tá»p chưa ÄÆ°á»£c tải lên â bấm Lưu Äá» hoà n tất."}},bgm$1={uploadBtn:"Tải nhạc lên",uploadTooltip:"Tải nhạc ná»n tùy chá»nh",deleteTooltip:"Xóa nhạc tùy chá»nh",customLabel:"Nhạc tùy chá»nh",proOnly:"Chá» dà nh cho FullGame",proDesc:"Mua FullGame Äá» tải nhạc ná»n riêng cá»§a bạn.",upgradeBtn:"Mua FullGame",errorType:"Chá» chấp nháºn file .mp3, .wav, .ogg",errorSize:"File quá lá»n ({{size}} MB). Tá»i Äa 5 MB.",errorLogin:"Bạn cần ÄÄng nháºp Äá» tải nhạc lên.",errorGeneric:"Tải lên thất bại. Vui lòng thá» lại.",disclaimer:{title:"âï¸ Lưu ý bản quyá»n",intro:"Khi tải nhạc lên, bạn xác nháºn rằng:",point1:"Bạn sá» hữu hoặc có quyá»n sá» dụng bản nhạc nà y.",point2:"Nhạc không vi phạm bản quyá»n cá»§a bên thứ ba.",point3:"Bạn chá»u toà n bá» trách nhiá»m pháp lý liên quan.",cancel:"Há»§y",confirm:"Tôi Äá»ng ý, tiếp tục tải lên"}},viQuestionBank={title:title$5,stats:stats$1,actions:actions$3,alerts:alerts$9,empty:empty$2,error:error$3,confirm:confirm$1,editor:editor$1,pagination,import:{tabs:{paste:"Dán từ AI",upload:"Nháºp tá»p sẵn có",export:"Xuất tá»p"},paste:{title:"ð Hưá»ng dẫn Dán câu há»i từ AI",instruction:"Truy cáºp và o: <0>Phần má»m AI tạo câu há»i</0><br />Tạo câu há»i trên phần má»m Äó, sau Äó bấm nút <1>Copy sang giaoviendoimoi</1> và dán và o ô bên dưá»i.",placeholder:"Dán ná»i dung (hoặc nhấn Ctrl+V) sau khi bạn Äã bấm nút Copy sang Giáo viên Äá»i má»i...",label:"Dán câu há»i và o Äây:",shuffle:"Tá»± Äá»ng Äảo vá» trà Äáp án",shuffleDesc:"Xáo trá»n thứ tá»± A/B/C/D ngẫu nhiên â Äáp án Äúng vẫn giữ nguyên ná»i dung",btnImport:"Nháºp câu há»i",btnImporting:"Äang nháºp...",btnConfirm:"Xác nháºn ÄÆ°a và o Kho ({{count}} câu)",previewTitle:"Xem trưá»c ({{count}} câu há»i)",previewMeta:"{{count}} Äáp án",previewMore:"... và {{count}} câu há»i khác",errorArray:"Dữ liá»u phải là má»t mảng các câu há»i",errorMissing:"Câu há»i {{index}}: Thiếu trưá»ng bắt buá»c (question_content hoặc options)",errorMinAnswers:"Câu há»i {{index}}: Phải có Ãt nhất 2 Äáp án",errorNoCorrect:"Câu há»i {{index}}: Không tìm thấy Äáp án Äúng",errorEmpty:"Vui lòng dán ná»i dung JSON và o ô bên dưá»i",errorLimit:"Tá»i Äa 30 câu há»i má»i lần import",errorNoQuestions:"Không tìm thấy câu há»i nà o trong dữ liá»u",errorInvalid:"Äá»nh dạng JSON không hợp lá». Vui lòng kiá»m tra lại.",successParsed:"Äã phân tÃch {{count}} câu há»i từ JSON{{shuffle}}.",shuffledSuffix:" (Äã Äảo Äáp án)"},upload:{formatLabel:"Äá»nh dạng",templateTitle:"ð Chưa có file? Tải template mẫu",templateDesc:"Template Excel vá»i format chuẩn (ID, Câu há»i, Äáp án A/B/C/D, Äáp án Äúng). Bao gá»m 2 câu há»i và dụ.",btnDownload:"Tải Template Excel",docxGuideTitle:"Hưá»ng dẫn format file Word",docxGuideDesc:"Viết câu há»i theo mẫu bên dưá»i. Gạch chân chữ cái (A-F) cá»§a Äáp án Äúng. Có thá» gạch chân cả dòng Äáp án.",btnDownloadDocx:"Tải file Word mẫu",btnSelect:"Chá»n file Äá» import",btnProcessing:"Äang xá» lý...",errorFormat:"File không Äúng Äá»nh dạng {{format}}",successRead:"Äã Äá»c {{count}} câu há»i từ file{{shuffle}}
541.",instructionTitle:"ð¡ Hưá»ng dẫn Import",instructionList:{li1:"Sá» dụng template Excel Äá» Äảm bảo Äúng Äá»nh dạng (tải á» trên)",li2:"Tương thÃch vá»i AI Generator: File Excel từ ⨠Tạo bằng AI có thá» import trá»±c tiếp",li3:"Format Excel: ID, Câu há»i, Äáp án A/B/C/D, Äáp án Äúng",li4:"Format Word (.docx): Câu 1: ..., A. B. C. D. â gạch chân chữ cái Äáp án Äúng",li5:"LaTeX support: Dùng cú pháp $công thức$ (và dụ: $2 + 2$)",li6:"Äáp án Äúng: Nháºp A, B, C, hoặc D (nhiá»u Äáp án: A, C hoặc A C)",li7:"Giá»i hạn: Tá»i Äa 20-30 câu há»i má»i lần import"}},export:{title:"ð Thông tin Export",countInfo:"Sá» câu há»i sẽ ÄÆ°á»£c export: {{count}}",formatExcel:"File Excel (.xlsx) - Phù hợp Äá» chá»nh sá»a và import lại",formatJson:"File JSON (.json) - Phù hợp Äá» backup và tÃch hợp há» thá»ng",formatCsv:"File CSV (.csv) - Phù hợp Äá» xá» lý vá»i các công cụ khác",btnExport:"Export",btnExporting:"Äang xuất file...",success:"Äã export {{count}} câu há»i thà nh công!",notesTitle:"ð Lưu ý",notesList:{li1:"File sẽ ÄÆ°á»£c tải xuá»ng và o thư mục Downloads cá»§a bạn",li2:"Tên file sẽ có dạng: cau-hoi-YYYY-MM-DD",li3:"Công thức toán há»c sẽ ÄÆ°á»£c giữ nguyên Äá»nh dạng $...$",li4:"File Excel có thá» import lại Äá» phục há»i hoặc chia sẻ câu há»i"},errorNoQuestions:"Chưa có câu há»i nà o Äá» xuất"}},lessonPicker:lessonPicker$1,uploader:uploader$1,bgm:bgm$1},dashboard$3={title:"Hà nh Trình Xuyên Viá»t",subtitle:"Tạo hà nh trình vượt ải cho há»c sinh",tabs:{questionSets:"Bá» Äá» ({{count}})",journeys:"Hà nh trình ({{count}})",sessions:"Các phiên giao bà i ({{count}})"},questionSets:{createNew:"Tạo bá» Äá» má»i",empty:"Chưa có bá» Äá» nà o",emptyDesc:"Bạn cần tạo bá» Äá» (vá»i các câu há»i) trưá»c khi tạo Hà nh trình.",questionsCount:"{{count}} câu há»i",copyIdTooltip:"Sao chép ID",copiedId:"Äã sao chép ID: {{id}}",editTooltip:"Sá»a",deleteTooltip:"Xóa",deleteConfirm:'Xóa bá» Äá» "{{title}}"?',deleteSuccess:"Äã xóa bá» Äá»"},journeys:{createNew:"Tạo hà nh trình má»i",empty:"Chưa có hà nh trình nà o",emptyDesc:'Bấm "Tạo hà nh trình má»i" Äá» bắt Äầu tạo hà nh trình vượt ải cho há»c sinh',deleteConfirm:'Xóa hà nh trình "{{title}}"?',deleteSuccess:"Äã xóa hà nh trình"},sessions:{empty:"Chưa có session nà o active",endSession:"Kết thúc session",endConfirm:'Kết thúc session "{{title}}"? HS sẽ không thá» tham gia nữa.',endSuccess:"Äã kết thúc session",copyCodeTooltip:"Sao chép mã",progress:"Ải {{current}}/{{total}}",studentCount:"<strong>{{count}}</strong> HS",studentCountPlain:"{{count}} HS",copyLinkTooltip:"Sao chép link",showQrTooltip:"Hiá»n mã QR"}},premium$1={title:"Hà nh Trình Há»c Táºp",badge:"TÃnh nÄng Premium",desc:"Hà nh Trình Há»c Táºp cho phép giáo viên tạo các lá» trình há»c táºp tương tác vá»i nhiá»u chặng, má»i chặng chứa bá» Äá» trắc nghiá»m. Há»c sinh thi Äấu qua từng chặng Äá» hoà n thà nh hà nh trình.",featuresTitle:"⨠TÃnh nÄng ná»i báºt:",features:["Tạo hà nh trình vá»i nhiá»u chặng","Má»i chặng gắn bá» Äá» trắc nghiá»m vá»i 4 dạng câu há»i","Giao bà i cho há»c sinh bằng mã phòng","Theo dõi kết quả chi tiết từng há»c sinh"],upgradeNow:"ð Nâng cấp ngay"},assign$5={dialogTitle:"Giao hà nh trình cho lá»p",title:"Giao hà nh trình cho lá»p",successTitle:"Giao hà nh trình thà nh công!",joinCode:"Mà CODE",qrInstruction:"Hoặc chiếu mã QR cho há»c sinh quét:",linkInstruction:"Hoặc gá»i ÄÆ°á»ng dẫn tham gia nhanh:",copy:"Sao chép",noCodeNeeded:"Há»c sinh truy cáºp qua link sẽ không cần nháºp mã code nữa.",journeyLabel:"Hà nh trình: ",sessionNameLabel:"Tên session (VD: Lá»p 9A - Hè 2026)",durationLabel:"Thá»i hạn (ngà y)",durationHelper:"Mặc Äá»nh 90 ngà y (hè)",cooldownLabel:"Thá»i gian chá» giữa các ải (ngà y)",cooldownHelper:"Äặt 0 Äá» HS chÆ¡i liên tục không giá»i hạn",cooldownGuideTitle:'â³ Cách hoạt Äá»ng "Thá»i gian chá»"',cooldownGuideDesc:"Sau khi HS vượt qua 1 ải, ải tiếp theo sẽ tá»± Äá»ng má» sau {{count}} ngà y. Trong thá»i gian chá», HS vẫn thấy ải kế tiếp nhưng chưa thá» chÆ¡i.",cooldownReason:"Lý do: Tránh HS chÆ¡i liên tục hết các ải trong 1 buá»i, Äá»
541ng thá»i giúp GV có thá»i gian theo dõi tiến trình tá»± há»c cá»§a các em.",assigning:"Äang giao...",assignBtn:"Giao",defaultSessionTitle:"Lá»p ... - {{title}}"},alerts$8={indexError:"Cần tạo Firestore Index. Xem Console (F12) Äá» lấy link tạo index.",loadError:"Lá»i tải dữ liá»u: {{message}}",deleteError:"Lá»i xóa",loadHsError:"Lá»i tải danh sách HS",endSessionError:"Lá»i kết thúc session",copiedCode:"Äã sao chép mã {{code}}",copiedLink:"Äã sao chép link!",notFound:"Không tìm thấy hà nh trình",loadErrorSingle:"Lá»i tải hà nh trình",saveError:"Lá»i lưu hà nh trình",limitReached:"Äã Äạt giá»i hạn tạo hà nh trình. Mua FullGame Äá» tạo thêm!",invalidCode:"Mã hà nh trình không hợp lá»",codeNotFound:"Mã hà nh trình không tá»n tại hoặc Äã hết hạn",codeExpired:"Mã hà nh trình Äã hết hạn",sessionNotFound:"Phiên hà nh trình không tá»n tại",sessionEnded:"Hà nh trình Äã kết thúc",allStagesOpened:"Äã má» hết tất cả các ải"},creator$1={editTitle:"âï¸ Sá»a Hà nh Trình",createTitle:"ðºï¸ Tạo Hà nh Trình Má»i",subtitle:"Thiết kế hà nh trình vượt ải cho há»c sinh",journeyNameLabel:"Tên hà nh trình",journeyNamePlaceholder:"VD: Hà nh Trình Xuyên Viá»t Hè 2026",stagesList:"ð Danh sách ải ({{count}})",provinceLabel:"Tá»nh/Thà nh",questionSetLabel:"Bá» Äá»",noQuestionSets:'Chưa có bá» Äá» â tạo á» tab "Bá» Äá»"',questionSetItem:"ð {{title}} ({{count}} câu)",deleteStageTooltip:"Xóa ải nà y",stageChip:"Ải {{index}}: {{emoji}} {{name}}",addStageBtn:"Thêm ải má»i",saving:"Äang lưu...",updateBtn:"Cáºp nháºt",saveBtn:"Lưu hà nh trình",validation:{titleRequired:"Vui lòng nháºp tên hà nh trình",provinceRequired:"Vui lòng chá»n tá»nh thà nh cho tất cả các ải",questionSetRequired:"Ải {{index}} chưa chá»n bá» Äá». Vui lòng chá»n bá» Äá» cho tất cả các ải.",updateSuccess:"Äã cáºp nháºt hà nh trình!",createSuccess:"Äã tạo hà nh trình! Äang chuyá»n hưá»ng..."}},player$b={noQuestionSet:"Ải nà y chưa có bá» Äá». Liên há» thầy/cô nhé!",defaultJourneyTitle:"Hà nh Trình",passportInfo:"ð {{code}} â {{name}}",newPhotos:"ð¸ Ảnh má»i!",cooldownDays:"{{count}} ngà y",cooldownHours:"{{count}} giá»",stageTitle:"Ải {{index}}: {{name}}",status:{completed:"⨠Äã vượt qua!",current:"ð Äang chá» bạn",cooldown:"â³ Má» sau {{time}}",locked:"ð Chưa má»"},playBtn:"ChÆ¡i",switchPassport:"Äá»i há» chiếu",journeyCompleteTitle:"Hoà n thà nh hà nh trình!",journeyCompleteDesc:"Bạn Äã vượt qua tất cả {{count}} ải. Tuyá»t vá»i! ð"},quiz$1={loading:"Äang tải câu há»i...",back:"Quay lại",excellent:"Xuất sắc!",failed:"Chưa Äạt rá»i...",scoreInfo:"{{score}}/{{total}} câu Äúng ({{percent}}%)",passMsg:"Bạn Äã vượt qua ải <strong>{{province}}</strong> thà nh công! ð",continueBtn:"â
Tiếp tục hà nh trình",failMsg:"Cần Äạt Ãt nhất {{threshold}}% Äá» vượt ải. Thá» lại nhé! ðª",retryBtn:"ð Là m lại",exitBtn:"Thoát",nextLoading:"Äang tải câu tiếp...",stageInfo:"ð Ải {{index}}: {{province}}",photoLabel:"ð· {{label}}",types:{abcd:"ð¤ Trắc nghiá»m",true_false:"â
Äúng/Sai",multiple:"âï¸ Nhiá»u Äáp án",short_answer:"âï¸ Äiá»n từ"},multipleInstruction:"Chá»n tất cả Äáp án Äúng",confirmBtn:"Xác nháºn",true:"Äúng",false:"Sai",shortAnswerPlaceholder:"Nháºp Äáp án rá»i nhấn Enter...",correctAnswerLabel:"ð¡ Äáp án Äúng: ",emptyQuestions:"Bá» Äá» chưa có câu há»i. Liên há» thầy/cô nhé!",loadQSError:"Lá»i tải bá» Äá»: {{message}}"},manager$1={advanceConfirm:"MỠải {{index}}? Há»c sinh sẽ thấy ải má»i.",advanceSuccess:"Äã mỠải {{index}}!",uploadSuccess:"Äã upload ảnh cho ải {{index}}!",deliverConfirm:"Phát ảnh cho há»c sinh? Các em sẽ thấy ảnh lần sau và o.",deliverSuccess:"Äã phát ảnh thà nh công!",searchError:"Lá»i tra cứu",searchPlaceholder:"Tra cứu HS theo tên...",searchBtn:"Tìm",studentNotFound:"Không tìm thấy há»c sinh.",studentResult:"<strong>{{code}}</strong> â {{name}} · Hoà n thà nh: {{count}} ải",stageTitle:"Ải {{index}}: {{emoji}} {{name}}",completedCount:"{{count}}/{{total}} HS Äã vượt",completedLabel:"HS Äã vượt:",studentChip:"{{code}} â {{name}}",uploading:"Äang upload...",uploadCommonBtn:"Upload ảnh chung",delivering:"Äang phát...",deliverBtn:"Phát ảnh",advancing:"Äang má»...",advanceBtn:"ð MỠải {{index}}: {{name}}",managePassportsBtn:"Quản lý há» chiếu ({{count}})",managePassportsHint:"Há» chiếu trùng tên ÄÆ°á»£c gom nhóm và Äánh dấu cam. Giữ lại há» chiếu có tiến Äá» Äúng nhất, xoá các bản dư.",duplicateGroupBadge:"â ï¸ {{count}} há» chiếu trùng tên",passportStagesDone:"Äã vượt {{count}}
541 ải",deleteBtn:"Xoá",deletePassportConfirm:`Xoá há» chiếu {{code}} â {{name}}? 542 543Há» chiếu nà y chưa vượt ải nà o. Thao tác KHÃNG khôi phục ÄÆ°á»£c.`,deletePassportConfirmWithProgress:`â ï¸ Xoá há» chiếu {{code}} â {{name}}? 544 545Há» chiếu nà y Äà VƯỢT {{count}} ải. Xoá là MẤT TOÃN Bá» Äiá»m và tiến Äá», KHÃNG khôi phục ÄÆ°á»£c. 546 547Chá» xoá nếu chắc chắn Äây là bản trùng dư!`,deletePassportSuccess:"Äã xoá há» chiếu {{code}}",deletePassportError:"Không xoá ÄÆ°á»£c há» chiếu. Vui lòng thá» lại."},passport$1={nameMinLength:"Tên phải có Ãt nhất 2 ký tá»± nhé! ð",createError:"Lá»i tạo há» chiếu",invalidCodeFormat:"Mã há» chiếu gá»m 2 chữ cái in hoa",codeNotFound:"Mã há» chiếu không Äúng. Hãy kiá»m tra lại!",checkError:"Lá»i kiá»m tra há» chiếu",successTitle:"Há» chiếu cá»§a bạn!",writeDownNote:"ð <strong>Ghi ra giấy</strong> mã <strong>{{code}}</strong> Äá» dùng cho lần sau!",welcomeMsg:"Xin chà o <strong>{{name}}</strong>! Má»i lần và o lại, em chá» cần nháºp mã nà y.",startJourneyBtn:"ðºï¸ Bắt Äầu hà nh trình!",defaultJourneyTitle:"Hà nh Trình",firstTimeBtn:"⨠Lần Äầu â Nháºn há» chiếu",havePassportBtn:"ð Äã có há» chiếu â Nháºp mã",askNameTitle:"Bạn tên gì nà o?",askNameSubtitle:"Äá» thầy/cô biết bạn là ai nhé",namePlaceholder:"VD: Nguyá» n VÄn A",backBtn:"Quay lại",getPassportBtn:"ð Nháºn há» chiếu",enterCodeTitle:"Nháºp mã há» chiếu",enterCodeSubtitle:"2 chữ cái in hoa (VD: AC, BK)",codePlaceholder:"VD: AC",continueJourneyBtn:"ðºï¸ Tiếp tục hà nh trình",duplicateTitle:"Äã có há» chiếu tên nà y!",duplicateDesc:"Trong lá»p Äã có <strong>{{count}}</strong> há» chiếu mang tên <strong>{{name}}</strong>. Nếu là cá»§a em, hãy chá»n Äúng mã bên dưá»i Äá» giữ tiến Äá» cÅ© â Äừng tạo mã má»i.",duplicateUseCode:"Äây là há» chiếu cá»§a em",duplicateStagesDone:"Äã vượt {{count}} ải",duplicateCreateAnyway:"Em là ngưá»i khác â vẫn tạo mã má»i",duplicateCheckError:"Không kiá»m tra ÄÆ°á»£c tên trùng",forgotCodeDivider:"hoặc",findByNameLabel:"ð Quên mã rá»i? Gõ tên em Äá» tìm lại há» chiếu:",findBtn:"Tìm",findNoResult:'Không tìm thấy há» chiếu nà o vá»i tên nà y. Em kiá»m tra lại chÃnh tả, hoặc quay lại chá»n "Lần Äầu â Nháºn há» chiếu" nhé!'},completion$1={title:"Chúc mừng!",passedMsg:"Bạn Äã vượt ải <strong>{{province}}</strong>! ð",photoNote:"ð¸ Ảnh ká»· niá»m sẽ sá»m gá»i tá»i em. Hãy kiá»m tra lại sau nhé!",continueBtn:"ðºï¸ Tiếp tục hà nh trình"},photo$1={readyTitle:"ð¸ Ảnh ká»· niá»m Äã sẵn sà ng!",filename:"ky-niem-{{index}}.jpg",altText:"Ảnh ká»· niá»m",defaultCaption:"Ká»· niá»m hà nh trình",downloadBtn:"Tải xuá»ng",continueBtn:"Tiếp tục"},qsCreator$1={typeAbcd:"Trắc nghiá»m ABCD",descAbcd:"4 Äáp án, chá»n 1 Äáp án Äúng",typeTrueFalse:"Äúng / Sai",descTrueFalse:"4 má»nh Äá», chá»n Äúng hoặc Sai",typeMultiple:"Nhiá»u Äáp án Äúng",descMultiple:"4 Äáp án, chá»n nhiá»u Äáp án Äúng",typeShortAnswer:"Trả lá»i ngắn",descShortAnswer:"Äiá»n từ / câu trả lá»i ngắn",errorTitleRequired:"Vui lòng nháºp tên bá» Äá»",errorQuestionsRequired:"Vui lòng thêm Ãt nhất 1 câu há»i",errorQuestionEmpty:"Câu há»i #{{index}} chưa có ná»i dung",saveSuccess:"Äã lưu bá» Äá»!",saveError:"Lá»i lưu",titleField:"Tên bá» Äá»",titlePlaceholder:"VD: Bá» ÄỠẢi Hà Ná»i",totalCount:"Tá»ng: {{count}} câu",chooseTypeHint:"ð Chá»n dạng câu há»i Äá» thêm / quản lý:",manageCount:"Quản lý {{count}} câu",addQuestion:"Thêm câu",saving:"Äang lưu...",saveBtn:"ð¾ Lưu bá» Äá» ({{count}} câu)",questionCount:"<strong>{{count}}</strong> câu há»i",importBankBtn:"Nháºp từ Kho & AI",importLessonBtn:"Từ bà i có sẵn",importLessonTitle:"Chá»n bà i Äá» lấy câu â {{label}}",emptyQuestions:"Chưa có câu há»i nà o",addFirstBtn:"Thêm câu Äầu tiên",incompleteWarning:"â ï¸ Có <strong>{{count}}</strong> câu chưa nháºp Äá»§ ná»i dung (câu há»i hoặc Äáp án rá»ng). Vui lòng hoà n thiá»n hoặc xóa câu rá»ng.",addNewBtn:"Thêm câu má»i",doneBtn:"â Xong ({{count}} câu)",importTitle:"Nháºp câu há»i â {{label}}",shortAnswerPlaceholder:"VD: Thá»§ Äô cá»§a Viá»t Nam là Hà Ná»i",questionPlaceholder:"Nháºp ná»i dung câu há»i...",deleteTooltip:"Xóa câu",answerPlaceholder:"Äáp án {{label}}",statementPlaceholder:"Má»nh Äá» {{index}}",trueBtn:"Äúng",falseBtn:"Sai",shortAnswerGuideTitle:"ð Hưá»ng dẫn tạo câu Äiá»n từ:",shortAnswerStep1:'<strong>Bưá»c 1:</strong> Gõ câu há»i Äầy Äá»§ kèm Äáp án (VD: "Thá»§ Äô cá»§a Viá»t Nam là <u>Hà Ná»i</u>")',shortAnswerStep2:"<strong>Bưá»c 2:</strong> Dùng chuá»t <strong>bôi chá»n</strong> Äoạn cần là m chá» trá»ng",shortAnswerStep3:'<strong>Bưá»c 3:</strong> Bấm nút <strong>"âï¸ Äặt là m Äáp án"</strong> â Äoạn bôi sẽ thà nh ___',setAsAnswerBtn:"âï¸ Äặt là m Äáp án",resetBtn:"ð Äặt lại",correctAnswerLabel:"â Äáp án Äúng:",altAnswerLabel:"ð Äáp án thay thế (há»c sinh nháºp hÆ¡i khác vẫn tÃnh Äúng):",noAltAnswerHint:"Chưa có â Thêm nếu muá»n chấp nháºn nhiá»u cách viết",altAnswerPlaceholder:"VD: Ha Noi, HN...",addAltBtn:"+ Thêm"},card$1={info:"{{count}} ải · Tạo {{date}}",assignTooltip:"Giao cho lá»p",editTooltip:"Sá»a",deleteTooltip:"Xóa",btnAssign:"Giao bà i",btnEdit:"Sá»a",btnDelete:"Xóa"},common$4={cancel:"Há»§y"},viJourney={dashboard:dashboard$3,premium:premium$1,assign:assign$5,alerts:alerts$8,creator:creator$1,player:player$b,quiz:quiz$1,manager:manager$1,passport:passport$1,completion:completion$1,photo:photo$1,qsCreator:qsCreator$1,c
547ard:card$1,common:common$4},dashboard$2={title:"Learning Journey",subtitle:"Create learning paths for your students",tabs:{questionSets:"Question Sets ({{count}})",journeys:"Journeys ({{count}})",sessions:"Sessions ({{count}})"},questionSets:{createNew:"Create new set",empty:"No question sets yet",emptyDesc:"You need to create a question set before creating a Journey.",questionsCount:"{{count}} questions",copyIdTooltip:"Copy ID",copiedId:"Copied ID: {{id}}",editTooltip:"Edit",deleteTooltip:"Delete",deleteConfirm:'Delete question set "{{title}}"?',deleteSuccess:"Question set deleted"},journeys:{createNew:"Create new journey",empty:"No journeys yet",emptyDesc:'Click "Create new journey" to start creating a learning path',deleteConfirm:'Delete journey "{{title}}"?',deleteSuccess:"Deleted journey"},sessions:{empty:"No active sessions",endSession:"End session",endConfirm:'End session "{{title}}"? Students will no longer be able to join.',endSuccess:"Session ended",copyCodeTooltip:"Copy code",progress:"Stage {{current}}/{{total}}",studentCount:"<strong>{{count}}</strong> students",studentCountPlain:"{{count}} students",copyLinkTooltip:"Copy link",showQrTooltip:"Show QR code"}},premium={title:"Learning Journey",badge:"Premium Feature",desc:"Learning Journey allows teachers to create interactive learning paths with multiple stages, each containing quiz sets. Students compete through stages to complete the journey.",featuresTitle:"⨠Key Features:",features:["Create journeys with multiple stages","Each stage linked to a quiz set with 4 question types","Assign to students using a join code","Track detailed results for each student"],upgradeNow:"ð Upgrade now"},assign$4={dialogTitle:"Assign journey to class",title:"Assign journey to class",successTitle:"Journey assigned successfully!",joinCode:"JOIN CODE",qrInstruction:"Or show QR code for students to scan:",linkInstruction:"Or send quick access link:",copy:"Copy",noCodeNeeded:"Students accessing via link will not need to enter a code.",journeyLabel:"Journey: ",sessionNameLabel:"Session name (e.g., Class 9A - Summer 2026)",durationLabel:"Duration (days)",durationHelper:"Default 90 days",cooldownLabel:"Wait time between stages (days)",cooldownHelper:"Set 0 for unlimited play",cooldownGuideTitle:'â³ How "Wait time" works',cooldownGuideDesc:"After a student passes a stage, the next stage will automatically open after {{count}} days. During the wait time, students can see the next stage but cannot play it yet.",cooldownReason:"Reason: Prevents students from playing all stages in one session, while giving the teacher time to prepare content (images, questions) for the next stage.",assigning:"Assigning...",assignBtn:"Assign",defaultSessionTitle:"Class ... - {{title}}"},alerts$7={indexError:"Firestore Index required. Check Console (F12) for the creation link.",loadError:"Data load error: {{message}}",deleteError:"Delete error",loadHsError:"Error loading student list",endSessionError:"Error ending session",copiedCode:"Copied code {{code}}",copiedLink:"Copied link!",notFound:"Journey not found",loadErrorSingle:"Error loading journey",saveError:"Error saving journey",limitReached:"Journey creation limit reached. Get FullGame to create more!",invalidCode:"Invalid journey code",codeNotFound:"Journey code does not exist or has expired",codeExpired:"Journey code has expired",sessionNotFound:"Journey session not found",sessionEnded:"Journey has ended",allStagesOpened:"All stages have been opened"},creator={editTitle:"âï¸ Edit Journey",createTitle:"ðºï¸ Create New Journey",subtitle:"Design a learning path for students",journeyNameLabel:"Journey name",journeyNamePlaceholder:"e.g., Vietnam Explorer Summer 2026",stagesList:"ð Stage List ({{count}})",provinceLabel:"Province/City",questionSetLabel:"Question Set",noQuestionSets:'No sets yet â create in "Question Sets" tab',questionSetItem:"ð {{title}} ({{count}} questions)",deleteStageTooltip:"Delete this stage",stageChip:"Stage {{index}}: {{emoji}} {{name}}",addStageBtn:"Add new stage",saving:"Saving...",updateBtn:"Update",saveBtn:"Save Journey",validation:{titleRequired:"Please enter a journey title",provinceRequired:"Please select a province for all stages",questionSetRequired:"Stage {{index}} has no question set selected. Please select for all stages.",updateSuccess:"Journey updated!",createSuccess:"Journey created! Redirecting..."}},player$a={noQuestionSet:"This stage has no question set. Please contact your teacher!",defaultJourneyTitle:"Journey",passportInfo:"ð {{code}} â {{name}}",newPhotos:"ð¸ New photos!",cooldownDays:"{{count}} days",cooldownHours:"{{count}} hours",stageTitle:"Stage {{index}}: {{name}}
547",status:{completed:"⨠Completed!",current:"ð Waiting for you",cooldown:"â³ Opens in {{time}}",locked:"ð Locked"},playBtn:"Play",switchPassport:"Switch passport",journeyCompleteTitle:"Journey Complete!",journeyCompleteDesc:"You have passed all {{count}} stages. Amazing! ð"},quiz={loading:"Loading questions...",back:"Back",excellent:"Excellent!",failed:"Not passed...",scoreInfo:"{{score}}/{{total}} correct ({{percent}}%)",passMsg:"You have successfully passed <strong>{{province}}</strong>! ð",continueBtn:"â Continue Journey",failMsg:"Need at least {{threshold}}% to pass. Try again! ðª",retryBtn:"ð Retry",exitBtn:"Exit",nextLoading:"Loading next...",stageInfo:"ð Stage {{index}}: {{province}}",photoLabel:"ð· {{label}}",types:{abcd:"ð¤ Multiple Choice",true_false:"â True/False",multiple:"âï¸ Multiple Answers",short_answer:"âï¸ Short Answer"},multipleInstruction:"Select all correct answers",confirmBtn:"Confirm",true:"True",false:"False",shortAnswerPlaceholder:"Enter answer and press Enter...",correctAnswerLabel:"ð¡ Correct answer: ",emptyQuestions:"This set has no questions. Please contact your teacher!",loadQSError:"Error loading set: {{message}}"},manager={advanceConfirm:"Open stage {{index}}? Students will see the new stage.",advanceSuccess:"Stage {{index}} opened!",uploadSuccess:"Photo uploaded for stage {{index}}!",deliverConfirm:"Deliver photos to students? They will see them next time they join.",deliverSuccess:"Photos delivered successfully!",searchError:"Search error",searchPlaceholder:"Search student by name...",searchBtn:"Search",studentNotFound:"Student not found.",studentResult:"<strong>{{code}}</strong> â {{name}} · Completed: {{count}} stages",stageTitle:"Stage {{index}}: {{emoji}} {{name}}",completedCount:"{{count}}/{{total}} students passed",completedLabel:"Students passed:",studentChip:"{{code}} â {{name}}",uploading:"Uploading...",uploadCommonBtn:"Upload shared photo",delivering:"Delivering...",deliverBtn:"Deliver photos",advancing:"Opening...",advanceBtn:"ð Open stage {{index}}: {{name}}",managePassportsBtn:"Manage passports ({{count}})",managePassportsHint:"Passports with the same name are grouped and marked orange. Keep the one with correct progress, delete the extras.",duplicateGroupBadge:"â ï¸ {{count}} duplicate passports",passportStagesDone:"{{count}} stage(s) completed",deleteBtn:"Delete",deletePassportConfirm:`Delete passport {{code}} â {{name}}? 548 549This passport has not completed any stage. This action CANNOT be undone.`,deletePassportConfirmWithProgress:`â ï¸ Delete passport {{code}} â {{name}}? 550 551This passport has COMPLETED {{count}} stage(s). Deleting will PERMANENTLY LOSE all scores and progress. 552 553Only delete if you are sure this is a duplicate!`,deletePassportSuccess:"Deleted passport {{code}}",deletePassportError:"Could not delete passport. Please try again."},passport={nameMinLength:"Name must be at least 2 characters! ð",createError:"Error creating passport",invalidCodeFormat:"Passport code consists of 2 uppercase letters",codeNotFound:"Invalid passport code. Please check again!",checkError:"Error checking passport",successTitle:"Your Passport!",writeDownNote:"ð <strong>Write down</strong> the code <strong>{{code}}</strong> for next time!",welcomeMsg:"Hello <strong>{{name}}</strong>! Each time you return, just enter this code.",startJourneyBtn:"ðºï¸ Start Journey!",defaultJourneyTitle:"Journey",firstTimeBtn:"⨠First time â Get Passport",havePassportBtn:"ð Have Passport â Enter Code",askNameTitle:"What's your name?",askNameSubtitle:"So the teacher knows who you are",namePlaceholder:"Ex: John Doe",backBtn:"Back",getPassportBtn:"ð Get Passport",enterCodeTitle:"Enter Passport Code",enterCodeSubtitle:"2 uppercase letters (Ex: AC, BK)",codePlaceholder:"Ex: AC",continueJourneyBtn:"ðºï¸ Continue Journey",duplicateTitle:"A passport with this name already exists!",duplicateDesc:"This class already has <strong>{{count}}</strong> passport(s) named <strong>{{name}}</strong>. If one is yours, pick it below to keep your progress â do not create a new code.",duplicateUseCode:"This is my passport",duplicateStagesDone:"{{count}} stage(s) completed",duplicateCreateAnyway:"I am someone else â create a new code",duplicateCheckError:"Could not check for duplicate names",forgotCodeDivider:"or",findByNameLabel:"
553ð Forgot your code? Type your name to find your passport:",findBtn:"Find",findNoResult:'No passport found with this name. Please check the spelling, or go back and choose "First time â Get Passport".'},completion={title:"Congratulations!",passedMsg:"You have passed <strong>{{province}}</strong>! ð",photoNote:"ð¸ A commemorative photo will be sent to you soon. Please check back later!",continueBtn:"ðºï¸ Continue Journey"},photo={readyTitle:"ð¸ Your memento is ready!",filename:"memento-{{index}}.jpg",altText:"Commemorative photo",defaultCaption:"Journey memento",downloadBtn:"Download",continueBtn:"Continueæ¢ç´¢"},qsCreator={typeAbcd:"Multiple Choice ABCD",descAbcd:"4 answers, 1 correct choice",typeTrueFalse:"True / False",descTrueFalse:"4 statements, select True or False each",typeMultiple:"Multiple Answers",descMultiple:"4 answers, multiple correct choices",typeShortAnswer:"Short Answer",descShortAnswer:"Fill in the blanks / Short answer",errorTitleRequired:"Please enter a title for the set",errorQuestionsRequired:"Please add at least 1 question",errorQuestionEmpty:"Question #{{index}} has no content",saveSuccess:"Question set saved!",saveError:"Error saving",titleField:"Question Set Title",titlePlaceholder:"Ex: Hanoi Stage Set",totalCount:"Total: {{count}} questions",chooseTypeHint:"ð Choose question type to add / manage:",manageCount:"Manage {{count}} questions",addQuestion:"Add question",saving:"Saving...",saveBtn:"ð¾ Save Set ({{count}} questions)",questionCount:"<strong>{{count}}</strong> questions",importBankBtn:"Import from Bank & AI",importLessonBtn:"From existing lesson",importLessonTitle:"Pick a lesson â {{label}}",emptyQuestions:"No questions yet",addFirstBtn:"Add first question",incompleteWarning:"â ï¸ There are <strong>{{count}}</strong> incomplete questions (empty question or answers). Please complete or remove them.",addNewBtn:"Add new question",doneBtn:"â
Done ({{count}} questions)",importTitle:"Import Questions â {{label}}",shortAnswerPlaceholder:"Ex: The capital of Vietnam is Hanoi",questionPlaceholder:"Enter question content...",deleteTooltip:"Delete question",answerPlaceholder:"Answer {{label}}",statementPlaceholder:"Statement {{index}}",trueBtn:"True",falseBtn:"False",shortAnswerGuideTitle:"ð Guide for Short Answer:",shortAnswerStep1:'<strong>Step 1:</strong> Type the full question with answer (Ex: "The capital of Vietnam is <u>Hanoi</u>")',shortAnswerStep2:"<strong>Step 2:</strong> <strong>Select/Highlight</strong> the portion to become a blank",shortAnswerStep3:'<strong>Step 3:</strong> Click <strong>"âï¸ Set as Answer"</strong> â highlighted text becomes ___',setAsAnswerBtn:"âï¸ Set as Answer",resetBtn:"ð Reset",correctAnswerLabel:"â
Correct Answer:",altAnswerLabel:"ð Alternative Answers (accepted as correct if slightly different):",noAltAnswerHint:"None â Add if you want to accept multiple spellings/variations",altAnswerPlaceholder:"Ex: Ha Noi, HN...",addAltBtn:"+ Add"},card={info:"{{count}} stages · Created {{date}}",assignTooltip:"Assign to class",editTooltip:"Edit",deleteTooltip:"Delete",btnAssign:"Assign",btnEdit:"Edit",btnDelete:"Delete"},common$3={cancel:"Cancel"},enJourney={dashboard:dashboard$2,premium,assign:assign$4,alerts:alerts$7,creator,player:player$a,quiz,manager,passport,completion,photo,qsCreator,card,common:common$3},page$a={title:"Game Theo Lượt",sidebar:{myGames:"Bà i cá»§a tôi",createNew:"Tạo bà i má»i",upgradeLabel:"Nâng Cấp Lẻ"},quota:{proPermanent:"Ko giá»i hạn vÄ©nh viá»
n",proDaysRemaining:"{{days}} ngà y ko giá»i hạn",usedCount:"Äã dùng {{current}}/{{total}} bà i",limitReached:"Äã Äạt giá»i hạn dùng thá»"}},list$3={title:"ð² Bà i chÆ¡i cá»§a tôi",subtitle:"Quản lý các bà i Game theo Lượt Äã tạo",pinHint:"Ghim bà i Äá» luôn truy cáºp ÄÆ°á»£c ká» cả khi hết hạn",pinnedCount:"({{current}}/{{total}} Äã ghim)",subscriptionExpired:"â ï¸ Gói Äã hết hạn!",renewBtn:"Gia hạn",empty:"Chưa có bà i chÆ¡i nà o",emptyDesc:"Tạo bà i Äầu tiên Äá» bắt Äầu!",createFirstBtn:"â Tạo bà i Äầu tiên",item:{questionsCount:"{{count}} câu há»i",playersCount:"{{count}} ngưá»i chÆ¡i",cellsCount:"{{count}} ô",renewToUnlock:"ð Gia hạn Äá» má» bà i nà y",playTooltip:"
553ChÆ¡i",editTooltip:"Chá»nh sá»a",assignTooltip:"Giao bà i",deleteTooltip:"Xóa",playBtn:"ChÆ¡i",editBtn:"Sá»a",assignBtn:"Giao"},pagination:{prev:"â Trang trưá»c",current:"Trang {{page}}",next:"Trang sau â"},deleteDialog:{title:"Xóa bà i chÆ¡i?",content:"Bà i chÆ¡i sẽ bá» xóa vÄ©nh viá»
n. Bạn có chắc không?",cancel:"Há»§y",delete:"Xóa"}},myGames$b={demo:{title:"Game Theo Lượt - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn"},playTest:"ChÆ¡i thá»",downloadOffline:"Tải xuá»ng",downloadOfflineUpgrade:"Nâng cấp Äá» tải xuá»ng",downloading:"Äang tải...",downloadOfflineError:"â Không tạo ÄÆ°á»£c file tải xuá»ng, vui lòng thá» lại"},form$e={createTitle:"ð² Tạo Game Theo Lượt má»i",editTitle:"âï¸ Chá»nh sá»a Game Theo Lượt",titleLabel:"Tiêu Äá» bà i chÆ¡i",playersLabel:"Sá» ngưá»i chÆ¡i",playersOption:"{{count}} ngưá»i chÆ¡i",charactersLabel:"Nhân váºt: ",playerNamesLabel:"Tên ngưá»i chÆ¡i",playerNamesHint:"(tùy chá»n)",playerNamePlaceholder:"Ngưá»i {{index}}",obstaclesLabel:"Sá» chưá»ng ngại váºt má»i ÄÆ°á»ng:",obstaclesDesc:"(tá»ng {{total}} CNV cho {{players}} ngưá»i)",reuseQuestionsHint:"Câu há»i Ãt hÆ¡n tá»ng CNV sẽ ÄÆ°á»£c tái sá» dụng.",bgmLabel:"ðµ Nhạc ná»n mặc Äá»nh",bgmOption:"Bà i {{index}}",bgmHint:"GV có thá» Äá»i bà i nhạc trong khi chÆ¡i.",questionsTitle:"Câu há»i ({{count}})",questionsReuseWarn:"â cần Ãt nhất {{total}} câu hoặc sẽ tái sá» dụng",clearAllBtn:"Xóa tất cả",importBankBtn:"ð Lấy từ Kho câu há»i",importQuestionPickerBtn:"ðï¸ Chá»n từ Kho hoặc AI",importLessonBtn:"ð Từ bà i có sẵn",manualInputBtn:"âï¸ Nháºp thá»§ công",listHeader:"Danh sách câu há»i",imageLabel:"[ð¼ï¸ Ảnh]",noValidQuestions:"Không có câu nà o phù hợp.",addedFromLesson:"Äã thêm {{count}} câu từ bà i có sẵn.",lessonsPickerTitle:"Thêm câu từ bà i có sẵn",subtitleStatements:"{{count}} má»nh Äá»",subtitleShortAnswer:"Äiá»n từ: {{answer}}",empty:"Chưa có câu há»i nà o",emptyDesc:"Thêm câu há»i Äá» gắn và o chưá»ng ngại váºt trên map",cancelBtn:"Há»§y",saveBtn:"Lưu bà i chÆ¡i",saving:"Äang lưu...",pickerTitle:"Chá»n câu há»i từ Kho",clearAllConfirm:"Xóa tất cả câu há»i?"},player$9={loading:"Äang tải bà i chÆ¡i...",errorLoad:"Không tải ÄÆ°á»£c bà i chÆ¡i",bgm1:"Bà i 1",bgm2:"Bà i 2",bgm3:"Bà i 3",bgm4:"Bà i 4",bgm5:"Bà i 5",dice:{skip:"Mất lượt",blast:"Bắn ná» CNV",turbo:"Siêu tá»c",rolling:"ð² Äang tung...",rollBtn:"ð² Tung xúc xắc",skipStatus:"Rất tiếc! Bạn Äã tung trúng mất lượt, giá» Äến ngưá»i chÆ¡i tiếp theo",blastStatus:"â Bắn ná» chưá»ng ngại váºt! Di chuyá»n {{steps}} bưá»c",turboStatus:"â¡ Siêu tá»c! Di chuyá»n {{steps}} bưá»c",moveStatus:"Di chuyá»n {{steps}} bưá»c!"},bubbles:{retryQuestion:"ð Trả lá»i lại câu há»i!",obstacleEncounter:"â ï¸ Gặp chưá»ng ngại váºt!!",monsterTitle:"GẶP CHƯá»NG NGẠI VẬT",playerTurn:"Lượt cá»§a {{emoji}} {{name}}",blastSuccess:"â Bắt ná» CNV! Äi {{steps}} bưá»c!",noObstacles:"â Không có CNV! Äi {{steps}} bưá»c!",noObstaclesStatus:"â Không có CNV phÃa trưá»c. Di chuyá»n {{steps}} bưá»c",turboSuccess:"â¡ Siêu tá»c! Äi {{steps}} bưá»c!",moveSuccess:"Di chuyá»n {{steps}} bưá»c!",goalReached:"ð Vá» ÄÃch! Thắng rá»i!",correctTurnEnd:"â
ChÃnh xác! Chuyá»n lượt.",wrongTurnEnd:"â Sai rá»i! Mất lượt!"},quiz:{title:"â Câu há»i chưá»ng ngại váºt",correct:"ð ChÃnh xác!",wrong:"â Sai rá»i! Lượt sau trả lá»i lại!"},win:{message:"{{emoji}} {{name}} thắng!",desc:"Äã vá» ÄÃch thà nh công!",exitBtn:"â Thoát",playAgainBtn:"ð ChÆ¡i lại"},assignment:{nameTitle:"Nháºp tên cho từng ngưá»i chÆ¡i",playerLabel:"{{emoji}} Ngưá»i chÆ¡i {{index}}",startBtn:"â¶ Bắt Äầu chÆ¡i",defaultPlayerName:"Ngưá»i {{index}}"},controls:{playerLabel:"Ngưá»i {{index}}",currentTurn:"â¶ Äến lượt",turnPrompt:"Äến lượt",bgmTitle:"ðµ Nhạc ná»n:",playBgmBtn:"â¶ Phát nhạc ná»n",muteTooltip:"Tắt nhạc",unmuteTooltip:"Báºt nhạc",exitFullscreenTooltip:"Thoát toà n mà n hình",enterFullscreenTooltip:"Toà n mà n hình",exitFullscreenBtn:"â¶ Thu nhá»",enterFullscreenBtn:"â¶ Toà n mà n hình",exitBtn:"â Thoát"}},alerts$6={loadGamesError:"Lá»i tải danh sách bà i",deleteSuccess:"Äã xóa bà i chÆ¡i",deleteError:"Lá»i khi xóa bà i",pinLimitReached:"Chá» ghim ÄÆ°á»£c tá»i Äa {{limit}} bà i",pinRemovedSuccess:"Äã bá» ghim",pinAddedSuccess:"Äã ghim bà i",assignSuccess:"Äã tạo bà i táºp thà nh công!",saveSuccess:"Äã lưu bà i chÆ¡i!",saveError:"Lá»i lưu bà i chÆ¡i",loadDataError:"Lá»i tải dữ liá»u bà i chÆ¡i",invali
553dQuestion:"Không có câu há»i hợp lá» (cần Ãt nhất 2 Äáp án)",addSuccess:"Äã thêm {{count}} câu, bá» qua {{skipped}} câu không hợp lá»",updateQuestionSuccess:"Äã cáºp nháºt câu há»i",addQuestionsSuccess:"Äã thêm {{count}} câu há»i",removeQuestionSuccess:"Äã xóa câu há»i {{index}}",clearAllSuccess:"Äã xóa tất cả câu há»i",titleRequired:"Vui lòng nháºp tiêu Äá» bà i chÆ¡i",questionRequired:"Vui lòng thêm Ãt nhất 1 câu há»i",minQuestionsRequired:"Bà i chÆ¡i phải có Ãt nhất 1 câu há»i",maxQuestionsExceeded:"Bà i chÆ¡i chá» ÄÆ°á»£c tá»i Äa 200 câu há»i",notFound:"Không tìm thấy bà i chÆ¡i"},viTurnBasedGame={page:page$a,list:list$3,myGames:myGames$b,form:form$e,player:player$9,alerts:alerts$6},page$9={title:"Turn-Based Game",sidebar:{myGames:"My Games",createNew:"Create New",upgradeLabel:"Upgrade"},quota:{proPermanent:"FullGame Lifetime",proDaysRemaining:"{{days}} FullGame days left",usedCount:"Used {{current}}/{{total}} games",limitReached:"Trial limit reached"}},list$2={title:"ð² My Games",subtitle:"Manage your created turn-based games",pinHint:"Pin games to access even after expiration",pinnedCount:"({{current}}/{{total}} pinned)",subscriptionExpired:"â ï¸ Plan expired!",renewBtn:"Renew",empty:"No games yet",emptyDesc:"Create your first game to start!",createFirstBtn:"â Create First Game",item:{questionsCount:"{{count}} questions",playersCount:"{{count}} players",cellsCount:"{{count}} cells",renewToUnlock:"ð Renew to unlock this game",playTooltip:"Play",editTooltip:"Edit",assignTooltip:"Assign",deleteTooltip:"Delete",playBtn:"Play",editBtn:"Edit",assignBtn:"Assign"},pagination:{prev:"â Previous",current:"Page {{page}}",next:"Next â"},deleteDialog:{title:"Delete game?",content:"This game will be permanently deleted. Are you sure?",cancel:"Cancel",delete:"Delete"}},myGames$a={demo:{title:"Turn-Based Game - Demo Version",badge:"Demo",hint:"Try out this demo to experience the feature before creating your own game"},playTest:"Try Demo",downloadOffline:"Download",downloadOfflineUpgrade:"Upgrade to download",downloading:"Downloading...",downloadOfflineError:"â Could not create the download file, please try again"},form$d={createTitle:"ð² Create New Turn-Based Game",editTitle:"âï¸ Edit Turn-Based Game",titleLabel:"Game Title",playersLabel:"Number of Players",playersOption:"{{count}} players",charactersLabel:"Characters: ",playerNamesLabel:"Player names",playerNamesHint:"(optional)",playerNamePlaceholder:"Player {{index}}",obstaclesLabel:"Obstacles per lane:",obstaclesDesc:"(total {{total}} obstacles for {{players}} players)",reuseQuestionsHint:"Questions will be reused if fewer than total obstacles.",bgmLabel:"ðµ Default Background Music",bgmOption:"Track {{index}}",bgmHint:"Teacher can change music during gameplay.",questionsTitle:"Questions ({{count}})",questionsReuseWarn:"â at least {{total}} questions needed or they will be reused",clearAllBtn:"Clear All",importBankBtn:"ð Import from Question Bank",importQuestionPickerBtn:"ðï¸ From Question Bank or AI",importLessonBtn:"ð From Existing Lesson",manualInputBtn:"âï¸ Manual Input",listHeader:"Question List",imageLabel:"[ð¼ï¸ Image]",noValidQuestions:"No valid questions.",addedFromLesson:"Added {{count}} questions from lesson.",lessonsPickerTitle:"Add questions from lesson",subtitleStatements:"{{count}} statements",subtitleShortAnswer:"Fill in: {{answer}}",empty:"No questions yet",emptyDesc:"Add questions to attach to obstacles on the map",cancelBtn:"Cancel",saveBtn:"Save Game",saving:"Saving...",pickerTitle:"Select Questions from Bank",clearAllConfirm:"Clear all questions?"},player$8={loading:"Loading game...",errorLoad:"Failed to load game",bgm1:"Track 1",bgm2:"Track 2",bgm3:"Track 3",bgm4:"Track 4",bgm5:"Track 5",dice:{skip:"Skip Turn",blast:"Blast Obstacle",turbo:"Turbo",rolling:"ð² Rolling...",rollBtn:"ð² Roll Dice",skipStatus:"Too bad! You rolled Skip Turn, moving to next player",blastStatus:"â Obstacle blasted! Move {{steps}} steps",turboStatus:"â¡ Turbo speed! Move {{steps}} steps",moveStatus:"Move {{steps}} steps!"},bubbles:{retryQuestion:"ð Answer the question again!",obstacleEncounter:"â ï¸ Obstacle encountered!!",monsterTitle:"OBSTACLE ENCOUNTERED",playerTurn:"{{emoji}} Player {{name}}'s turn",blastSuccess:"â Obstacle blasted! Move {{steps}} steps!",noObstacles:"â No obstacles! Move {{steps}} steps!",noObstaclesStatus:"â No obstacles ahead. Moving {{steps}} steps",turboSuccess:"â¡ Turbo speed! Move {{steps}} steps!",moveSuccess:"Move {{steps}} steps!",goalReached:"ð Goal reached! You win!",correctTurnEnd:"â
Correct! Next turn.",wrongTurnEnd:"â Wrong! Turn lost!"},quiz:{title:"â Obstacle Question",correct:"ð Correct!",wrong:"â Wrong! Try again next turn!"},win:{message:"{{emoji}} {{name}} wins!",desc:"Reached the goal successfully!",exitBtn:"â Exit",playAgainBtn:"ð Play Again"},assignment:{nameTitle:"Enter names for each player",playerLabel:"{{emoji}} Player {{index}}",startBtn:"â¶ Start Game",defaultPlayerName:"Player {{index}}"},controls:{playerLabel:"Player {{index}}",currentTurn:"â¶ Current Turn",turnPrompt:"Current Turn",bgmTitle:"ðµ Backgroun
553d Music:",playBgmBtn:"â¶ Play Background Music",muteTooltip:"Mute",unmuteTooltip:"Unmute",exitFullscreenTooltip:"Exit Fullscreen",enterFullscreenTooltip:"Fullscreen",exitFullscreenBtn:"â¶ Exit Fullscreen",enterFullscreenBtn:"â¶ Fullscreen",exitBtn:"â Exit"}},alerts$5={loadGamesError:"Error loading game list",deleteSuccess:"Game deleted successfully",deleteError:"Error deleting game",pinLimitReached:"You can only pin up to {{limit}} games",pinRemovedSuccess:"Unpinned successfully",pinAddedSuccess:"Pinned successfully",assignSuccess:"Assignment created successfully!",saveSuccess:"Game saved successfully!",saveError:"Error saving game",loadDataError:"Error loading game data",invalidQuestion:"No valid questions (at least 2 answers required)",addSuccess:"Added {{count}} questions, skipped {{skipped}} invalid ones",updateQuestionSuccess:"Question updated successfully",addQuestionsSuccess:"Added {{count}} questions",removeQuestionSuccess:"Removed question {{index}}",clearAllSuccess:"Cleared all questions",titleRequired:"Please enter a game title",questionRequired:"Please add at least 1 question",minQuestionsRequired:"Game must have at least 1 question",maxQuestionsExceeded:"Game can have a maximum of 200 questions",notFound:"Game not found"},enTurnBasedGame={page:page$9,list:list$2,myGames:myGames$a,form:form$d,player:player$8,alerts:alerts$5},title$4="Giao bà i táºp",success$2={title:"Tạo bà i táºp thà nh công!",description:"Bạn có thá» gá»i Mã Code hoặc Link trá»±c tiếp cho há»c sinh",joinCodeLabel:"Mà CODE",copySuccess:"Äã sao chép!",copyCode:"Sao chép mã",shareLink:"Hoặc gá»i ÄÆ°á»ng dẫn tham gia nhanh:",copyLink:"Sao chép",copied:"Äã chép",noCodeNeeded:"Há»c sinh truy cáºp qua link sẽ <strong>không cần nháºp mã code</strong> nữa.",qrScan:"Quét QR Äá» và o chÆ¡i",qrDownload:"⬠Tải ảnh QR"},form$c={gameInfo:{noName:"Game không tên"},remembranceName:{label:"Tên gợi nhá»",placeholder:"VD: Lá»p 9A - Bà i vá» nhà ",helperText:"Tên nà y giúp bạn nháºn biết Äợt giao bà i (há»c sinh không thấy)"},expiration:{label:"Thá»i hạn hiá»u lá»±c cá»§a mã code:",options:{day_one:"1 ngà y",day_three:"3 ngà y",day_seven:"7 ngà y",day_fifteen:"15 ngà y",day_year_one:"â° 1 nÄm (Gói Dà i Hạn)",day_year_two:"â° 2 nÄm (Gói Dà i Hạn)",day_year_three:"â° 3 nÄm (Gói Dà i Hạn)",day_year_five:"â° 5 nÄm (Gói Dà i Hạn)"}},createBtn:"Tạo bà i táºp",allowRetry:"Cho phép há»c sinh là m lại nhiá»u lần",creating:"Äang tạo..."},alerts$4={turnBasedNote:'<strong>Lưu ý:</strong> Trò chÆ¡i nà y dà nh cho các há»c sinh chÆ¡i chung trên <strong>má»t thiết bá» duy nhất</strong> (máy tÃnh/máy tÃnh bảng cá»§a nhóm), chứ không phải má»i em má»t thiết bá». Nếu muá»n má»i em chÆ¡i riêng trên thiết bá» cá»§a mình, hãy chá»n tÃnh nÄng <strong>"Game Äá»i kháng"</strong> á» trang chá»§.',versusNote:"<strong>Game Äá»i Kháng 1v1:</strong> Má»i há»c sinh chÆ¡i trên <strong>thiết bá» riêng</strong>. Há»c sinh và o phòng chá», tá»± chá»n Äá»i thá»§ và bắt Äầu tráºn Äấu. Tá»i Äa <strong>20 tráºn</strong> cho má»i Äợt giao bà i.",versusLimit:"Bạn Äang má» 3 phòng á» các bà i khác, vui lòng Äóng bá»t trưá»c khi tạo thêm.",headTiltWarning:"ðµ <strong>Lưu ý quan trá»ng:</strong> Camera cá»§a trò chÆ¡i <strong>không thá» khá»i Äá»ng</strong> khi má» link bằng <strong>Zalo / Messenger</strong>. Hãy hưá»ng dẫn há»c sinh cá»§a bạn má» trò chÆ¡i bằng <strong>trình duyá»t Äiá»n thoại</strong> (Chrome, Safari)."},errors$5={titleRequired:"Vui lòng nháºp tên gợi nhá» cho bà i táºp",unsupportedGame:"Loại game chưa ÄÆ°á»£c há» trợ",createFailed:"Không thá» tạo bà i táºp. Vui lòng thá» lại.",endFailed:"Không thá» kết thúc bà i táºp. Vui lòng thá» lại.",extendedLinkRequired:"Bạn cần có Gói Lưu Trữ Dà i Hạn Äá» giao bà i vá»i thá»i hạn 1-2 nÄm.",extendedLinkLimitReached:"Vượt giá»i hạn 100 liên kết dà i hạn Äang hoạt Äá»ng. Vui lòng kết thúc bá»t bà i giao cÅ©.",invalidCode:"Mã code không hợp lá». Vui lòng nháºp 4-5 chữ sá».",codeNotFound:"Mã không tá»n tại hoặc Äã hết hạn",codeExpired:"Mã Äã hết hạn",assignmentNotFound:"Bà i táºp không tá»n tại",journeyNotFound:"Mã hà nh trình không tá»n tại",connectionError:"Không thá» kết ná»i. Vui lòng kiá»m tra mạng và thá» lại.",generalError:"Có lá»i xảy ra. Vui lòng thá» lại.",nameRequired:"Vui lòng nháºp tên cá»
553§a bạn nha! ð",nameTooShort:"Tên phải có Ãt nhất 2 ký tá»± nhé!",codeTooShort:"Vui lòng nháºp Äá»§ mã code (4 hoặc 5 ký tá»±)"},common$2={close:"Äóng",cancel:"Há»§y",back:"Quay lại"},duplicate$2={checking:"Äang kiá»m tra...",title:"Bà i nà y Äã ÄÆ°á»£c giao",description:"Bà i há»c nà y Äã ÄÆ°á»£c giao trưá»c Äó vá»i tên:",more:"khác",viewHistory:"Xem các lần Äã giao",assignNew:"Giao má»i"},player$7={loading:"Äang tải trò chÆ¡i...",unsupported:"Loại game không ÄÆ°á»£c há» trợ: {{type}}",notIntegrated:'Game "{{label}}" chưa ÄÆ°á»£c tÃch hợp vá»i Assignment Manager.',tryAnother:"Vui lòng thá» vá»i loại game khác.",scoreUpdated:"Äiá»m Äã ÄÆ°á»£c cáºp nháºt!",resultSaved:"Bà i là m Äã ÄÆ°á»£c lưu!",saveFailed:"Không thá» lưu kết quả. Vui lòng thá» lại.",invalidId:"ID bà i táºp không hợp lá»",notFound:"Không tìm thấy bà i táºp",unsupportedType:'Loại game "{{type}}" không ÄÆ°á»£c há» trợ',loadError:"Có lá»i xảy ra khi tải bà i táºp",loadingTitle:"Äang tải bà i táºp...",alreadyPlayedTitle:"Bạn Äã là m bà i nà y rá»i!",onceOnly:"Má»i há»c sinh chá» ÄÆ°á»£c là m bà i má»t lần.",previousResult:"Kết quả lần trưá»c:",playedAtLabel:"Thá»i gian:",nameLabel:"Há» tên:",contactTeacher:"Nếu bạn cần là m lại, hãy liên há» giáo viên.",goBack:"Quay lại",defaultTitle:"Bà i táºp",studentPrefix:"Há»c sinh:"},result$4={excellent:"Xuất sắc!",good:"Giá»i!",fair:"Khá!",passed:"Äạt",tryHarder:"Cần cá» gắng hÆ¡n",draw:"Hòa nhau!",winner:"ð {{name}} thắng!",percentageComplete:"{{percentage}}% hoà n thà nh",timeTaken:"Thá»i gian là m bà i: <strong>{{duration}}</strong>",saving:"Äang lưu kết quả...",goHome:"Vá» trang chá»§",duration:{seconds:"{{count}} giây",minutes:"{{count}} phút",mins_secs:"{{mins}} phút {{secs}} giây",s_short:"giây",m_short:"phút"}},details$2={joinCode:"Mã code:",status:"Trạng thái:",expired:"Hết hạn",submissionCount:"<strong>{{count}}</strong> há»c sinh Äã ná»p",noSubmissions:"Chưa có há»c sinh nà o ná»p bà i",sharePrompt:"Chia sẻ mã code <strong>{{code}}</strong> cho há»c sinh Äá» bắt Äầu",table:{stt:"STT",members:"Thà nh viên",players:"Ngưá»i chÆ¡i",name:"Há» và tên",result:"Kết quả",score:"Äiá»m",duration:"Thá»i gian",submittedAt:"Ná»p lúc"},viewDetail:"Chi tiết",viewDetailPro:"Chi tiết (FullGame)",downloadExcel:"Tải Excel báo cáo",downloadExcelFreeNote:"Bản free chá» có sheet Tá»ng quan. Mua FullGame Äá» có thêm sheet Chi tiết từng câu.",hideDetail
553:"Ẩn chi tiết",proFeature:"TÃnh nÄng dà nh cho gói FullGame",itemDetailTitle:"CHI TIẾT TỪNG CÃU",questionNum:"Câu {{index}}:",noTitle:"(Không có tiêu Äá»)",noContent:"(Không có ná»i dung)",imageAnswer:"Ảnh",notDone:"Chưa là m",correct:"â Äúng",wrong:"â Sai · Äáp án Äúng: <strong>{{answer}}</strong>",wrongChosen:"â Chá»n sai ({{chosen}}) · Äáp án Äúng: <strong>{{correct}}</strong>",correctChosen:"â Äúng ({{chosen}})",correctPaced:"â Äúng · Chá»n <strong>{{chosenKey}}</strong>: {{chosenText}}",wrongPaced:"â Chá»n <strong>{{chosenKey}}</strong>: {{chosenText}} · Äáp án Äúng: <strong>{{correctKey}}</strong>: {{correctText}}",reports:{fullImage:"ð¼ï¸ Xem báo cáo Äầy Äá»§",fullQuiz:"ð¯ Xem báo cáo Äầy Äá»§",proSuffix:" (FullGame)"},wrongAttempts:"â Sai {{n}} lần",pointUnit:"Ä",attemptNum:"Lần {{n}}:",decodeImage:"Giải mã ảnh:",correctExcl:"Äúng!",wrongExcl:"Sai",matchHistory:"Lá»ch sá» tráºn Äấu",totalQuestions:"Tá»ng câu há»i",scoreLabel:"Äiá»m",handSlashNote:"Chém Hoa Quả không lưu chi tiết từng câu"},join$2={title:"Và o chÆ¡i thôi! ð",journeyTitle:"ðºï¸ Hà nh trình nà o!",nameTitle:"Bạn tên gì nà o? ð",codeCaption:"Nháºp mã thầy/cô cho nhé (4-5 ký tá»±)",journeyCaption:"Nháºp mã X + 4 sá» thầy/cô cho nhé",nameCaption:"Äá» thầy/cô biết bạn là ai",inputLabel:"Mã tham gia",inputPlaceholder:"Nháºp mã 4-5 sá»",typingCode:"â¨ï¸ Äang nháºp mã...",clickHere:"ð Bấm và o Äây rá»i gõ mã code nhé!",finding:"Äang tìm...",continue:"â Tiếp tục!",enterJourney:"ðºï¸ Và o hà nh trình!",enterPanorama:"ð¨ Và o phòng triá»n lãm!",enterScanner:"ð± Má» máy quét",enterGame:"ð® Và o chÆ¡i!",back:"Quay lại",nameLabel:"Tên cá»§a bạn",namePlaceholder:"VD: Nguyá» n VÄn A ð",currentTask:"Bà i táºp cá»§a bạn ð¯",footer:"ð Mã code do thầy/cô cung cấp · Bắt Äầu bằng X = Hà nh trình",platformName:"ð Ná»n tảng Giáo Viên Äá»i Má»i"},history$2={title:"Lá»ch sá» giao bà i",stats:"{{count}} bà i táºp Äã tạo",deleteExpiredBtn:"ðï¸ Xóa bà i hết hạn ({{count}}) â khuyến khÃch",deleteExpiredTip:"Thá»±c hiá»n viá»c nà y giúp bạn sá» dụng trang ÄÆ°á»£c mượt mà hÆ¡n",endConfirm:`Bạn có chắc muá»n kết thúc bà i "{{title}}"? 554 555Há»c sinh sẽ không thá» nháºp mã code Äá» và o là m bà i nữa.`,deleteArchiveConfirm:`Bạn có chắc muá»n xóa "{{title}}"? 556 557Bảng kết quả cá»§a phiên nà y sẽ bá» xóa vÄ©nh viá» n, không thá» khôi phục.`,empty:{title:"Chưa có bà i táºp nà o",description:'Và o trang "Hoạt Äá»ng cá»§a tôi" và bấm nút "Giao" trên má»t game Äá» tạo bà i táºp',button:"Äi Äến Hoạt Äá»ng cá»§a tôi"},loadError:"Không thá» tải danh sách bà i táºp. Vui lòng thá» lại.",deleteError:"Không thá» xóa bà i hết hạn. Vui lòng thá» lại.",table:{stt:"STT",reminderName:"Tên gợi nhá»",lesson:"Bà i há»c",codeLink:"Mã / Link",status:"Trạng thái",statusEnded:"Äã kết thúc",statusExpired:"Hết hạn",submitted:"Ná»p",studentCount:"HS",actions:"Thao tác",copyCode:"Sao chép mã",copyLink:"Sao chép link tham gia",viewDetail:"Xem chi tiết",endAssignment:"Kết thúc bà i giao",deleteArchive:"Xóa phiên lưu trữ"},deleteModal:{title:"ðï¸ Xóa bà i hết hạn",successTitle:"â Xóa thà nh công",successMsg:"Äã xóa {{count}} bà i táºp hết hạn và toà n bá» bà i ná»p liên quan.",confirmMsg:"Bạn sắp xóa {{count}} bà i táºp Äã hết hạn hoặc Äã kết thúc, kèm theo toà n bá» bà i ná»p cá»§a há»c sinh.",warning:"Hà nh Äá»ng nà y không thá» hoà n tác. Dữ liá»u Äiá»m cá»§a há»c sinh sẽ bá» xóa vÄ©nh viá» n.",deleting:"Äang xóa...",confirmBtn:"Xác nháºn xóa"}},gameTypes$2={tug_of_war:{label:"Kéo Co",instruction:"𪢠Nháºp tên thà nh viên 2 Äá»i rá»i bắt Äầu kéo co! Trả lá»i Äúng Äá» kéo dây vá» phÃa mình."},flip_puzzle:{label:"Trò ChÆ¡i Láºt Mảnh Ghép",instruction:"ð§© Láºt mảnh ghép bằng cách trả lá»i câu há»i!"},quiz_game:{label:"Kéo Thả - Ná»i Ã",instruction:'ð¯ Là m theo yêu cầu hiá»n á» má»i câu. Nhấn "Hoà n thà nh" khi xong!'},hand_slash_quiz:{label:"Quiz Chém Hoa Quả",instruction:"â Sá» dụng tay (hoặc chuá»t) Äá» chém và o Äáp án Äúng khi hoa quả bay lên. Tránh chạm và o bomb!"},wheel_quiz:{label:"Vòng Quay Quiz",instruction:"ð¡ Quay vòng Äá» chá»n câu há»i và trả lá»i Äúng Äá» ghi Äiá»m. Vui lòng là m hết tất cả câu há»i!"},interactive_video:{label:"Video Tương Tác",instruction:"ð¬ Xem video và trả lá»i các câu há»i xuất hiá»n trong lúc xem. Má»i câu Äúng bạn ÄÆ°á»£c cá»ng 1 Äiá»m!"},crossword_puzzle:{label:"à Chữ / Khóa Bà Máºt",instruction:"Bấm và o tên hà ng (1,2,3,...) Äá» má» các hà ng ngang và tìm ra từ khóa mà u Äá»!"},interactive_image:{label:"Ảnh Tương Tác",instruction:"Click và o các ð Äiá»m chạm trên ảnh Äá» xem thông tin hoặc trả lá»i câu há»i!"},head_tilt_quiz:{label:"Quiz Nghiêng Äầu",instruction:"ð¤ Nghiêng Äầu sang trái hoặc phải Äá» chá»n Äáp án A hoặc B!"},paced_quiz:{label:"Quiz Có Nhá»p",instruction:"â±ï¸ Äá»c câu há»i và chá»n Äáp án Äúng. Hoà n thà nh tất cả câu há»i Äá» xem Äiá»m!"},pose_quiz:{label:"Thá» dục ABC",instruction:"ð§ Xem câu há»i, chá»n Äáp án Äúng theo tư thế nhân váºt. Hoà n thà nh tất cả Äá» xem Äiá»m!"},turn_based_game:{label:"Game Theo Lượt",instruction:"ð² Nháºp tên các ngưá»i chÆ¡i, tung xúc xắc và Äua Äến ÄÃch! Trả lá»i Äúng Äá» vượt chưá»ng ngại váºt."},versus_game:{label:"Game Äá»i Kháng",instruction:"âï¸ Trả lá»i Äúng câu há»i Äá» Äẩy gáºy vá» phÃa Äá»i thá»§. Ai Äạt má»c trưá»c thì thắng!"}},viAssignment={title:title$4,success:success$2,form:form$c,alerts:alerts$4,errors:errors$5,common:common$2,duplicate:duplicate$2,player:player$7,result:result$4,details:details$2,join:join$2,history:history$2,gameTypes:gameTypes$2},title$3="Assign Task",success$1={title:"Assignment created successfully!",description:"You can send the Join Code or direct Link to students",joinCodeLabel:"JOIN CODE",copySuccess:"Copied!",copyCode:"Copy code",shareLink:"Or send a quick join link:",copyLink:"Copy",copied:"Copied",noCodeNeeded:"Students accessing via link <strong>will not need to enter a code</strong>.",qrScan:"Scan QR to join",qrDownload:"⬠Download QR"},form$b={gameInfo:{noName:"Unnamed Game"},remembranceName:{label:"Remember name",placeholder:"e.g., Class 9A - Homework",helperText:"This
557name helps you identify the assignment (students don't see it)"},expiration:{label:"Code expiration duration:",options:{day_one:"1 day",day_three:"3 days",day_seven:"7 days",day_fifteen:"15 days",day_year_one:"â° 1 year (Extended Plan)",day_year_two:"â° 2 years (Extended Plan)",day_year_three:"â° 3 years (Extended Plan)",day_year_five:"â° 5 years (Extended Plan)"}},createBtn:"Create Assignment",allowRetry:"Allow students to retake multiple times",creating:"Creating..."},alerts$3={turnBasedNote:'<strong>Note:</strong> This game is for students playing together on <strong>a single device</strong> (group computer/tablet), not individual devices. If you want each student to play on their own device, select <strong>"Versus Game"</strong> on the home page.',versusNote:"<strong>1v1 Versus Game:</strong> Each student plays on their <strong>own device</strong>. Students enter the lobby, choose opponents, and start matches. Maximum of <strong>20 matches</strong> per assignment.",versusLimit:"You have 3 active rooms in other assignments, please close them before creating more.",headTiltWarning:"ðµ <strong>Important note:</strong> The game's camera <strong>cannot start</strong> when the link is opened in <strong>Zalo / Messenger</strong>. Please instruct your students to open the game in their <strong>phone's browser</strong> (Chrome, Safari)."},errors$4={titleRequired:"Please enter a remember name for the assignment",unsupportedGame:"Unsupported game type",createFailed:"Could not create assignment. Please try again.",endFailed:"Could not end the assignment. Please try again.",extendedLinkRequired:"You need the Extended Storage Plan to assign with a 1-2 year duration.",extendedLinkLimitReached:"You have reached the 50 active extended links limit. Please end some existing assignments first.",invalidCode:"Invalid code. Please enter 4-5 digits.",codeNotFound:"Code does not exist or has expired.",codeExpired:"Code has expired.",assignmentNotFound:"Assignment does not exist.",journeyNotFound:"Journey session does not exist.",connectionError:"Could not connect. Please check your network and try again.",generalError:"Something went wrong. Please try again.",nameRequired:"Please enter your name! ð",nameTooShort:"Name must be at least 2 characters!",codeTooShort:"Please enter the full code (4 or 5 characters)"},common$1={close:"Close",cancel:"Cancel",back:"Back"},duplicate$1={checking:"Checking...",title:"This lesson has already been assigned",description:"This lesson has already been assigned with the following names:",more:"more",viewHistory:"View assignment history",assignNew:"Assign again"},player$6={loading:"Loading game...",unsupported:"Unsupported game type: {{type}}",notIntegrated:'Game "{{label}}" is not yet integrated with Assignment Manager.',tryAnother:"Please try another game type.",scoreUpdated:"Score updated!",resultSaved:"Assignment saved!",saveFailed:"Could not save result. Please try again.",invalidId:"Invalid assignment ID",notFound:"Assignment not found",unsupportedType:'Game type "{{type}}" is not supported',loadError:"An error occurred while loading the assignment",loadingTitle:"Loading assignment...",alreadyPlayedTitle:"You have already completed this assignment!",onceOnly:"Each student can only complete this assignment once.",previousResult:"Previous result:",playedAtLabel:"Time:",nameLabel:"Name:",contactTeacher:"If you need to redo it, please contact your teacher.",goBack:"Go back",defaultTitle:"Assignment",studentPrefix:"Student:"},result$3={excellent:"Excellent!",good:"Good!",fair:"Fair!",passed:"Passed",tryHarder:"Try harder",draw:"It's a draw!",winner:"ð {{name}} wins!",percentageComplete:"{{percentage}}% complete",timeTaken:"Time taken: <strong>{{duration}}</strong>",saving:"Saving results...",goHome:"Back to Home",duration:{seconds:"{{count}} seconds",minutes:"{{count}} minutes",mins_secs:"{{mins}}m {{secs}}s",s_short:"s",m_short:"m"}},details$1={joinCode:"Join code:",status:"Status:",expired:"Expired",submissionCount:"<strong>{{count}}</strong> students submitted",noSubmissions:"No students have submitted yet",sharePrompt:"Share code <strong>{{code}}</strong> with students to start",table:{stt:"No.",members:"Members",players:"Players",name:"Full Name",result:"Result",score:"Score",duration:"Time",submittedAt:"Submitted at"},viewDetail:"Details",viewDetailPro:"Details (FullGame)",downloadExcel:"Download Excel",downloadExcelFreeNote:"Free plan only includes the Overview sheet. Get FullGame to get the per-question Detail sheet too.",hideDetail
557:"Hide details",proFeature:"Feature available for FullGame accounts",itemDetailTitle:"ITEM DETAILS",questionNum:"Question {{index}}:",noTitle:"(No title)",noContent:"(No content)",imageAnswer:"Image",notDone:"Not done",correct:"â Correct",wrong:"â Wrong · Correct answer: <strong>{{answer}}</strong>",wrongChosen:"â Wrong choice ({{chosen}}) · Correct answer: <strong>{{correct}}</strong>",correctChosen:"â Correct ({{chosen}})",correctPaced:"â Correct · Chose <strong>{{chosenKey}}</strong>: {{chosenText}}",wrongPaced:"â Chose <strong>{{chosenKey}}</strong>: {{chosenText}} · Correct answer: <strong>{{correctKey}}</strong>: {{correctText}}",reports:{fullImage:"ð¼ï¸ View full report",fullQuiz:"ð¯ View full report",proSuffix:" (FullGame)"},wrongAttempts:"â Wrong {{n}} times",pointUnit:"pt",attemptNum:"Attempt {{n}}:",decodeImage:"Decode image:",correctExcl:"Correct!",wrongExcl:"Wrong",matchHistory:"Match history",totalQuestions:"Total questions",scoreLabel:"Score",handSlashNote:"Fruit Slash does not save per-question details"},join$1={title:"Let's play! ð",journeyTitle:"ðºï¸ Let's go on a journey!",nameTitle:"What's your name? ð",codeCaption:"Enter the code from your teacher (4-5 characters)",journeyCaption:"Enter the X + 4 digit code from your teacher",nameCaption:"So your teacher knows who you are",inputLabel:"Join Code",inputPlaceholder:"Enter 4-5 digit code",typingCode:"â¨ï¸ Entering code...",clickHere:"ð Click here and type the code!",finding:"Searching...",continue:"â Continue!",enterJourney:"ðºï¸ Enter journey!",enterPanorama:"ð¨ Enter gallery room!",enterScanner:"ð± Open scanner",enterGame:"ð® Join game!",back:"Back",nameLabel:"Your Name",namePlaceholder:"e.g. John Doe ð",currentTask:"Your assignment ð¯",footer:"ð Code provided by teacher · Starts with X = Journey",platformName:"ð Innovating Teacher Platform"},history$1={title:"Assignment History",stats:"{{count}} assignments created",deleteExpiredBtn:"ðï¸ Delete expired ({{count}}) â recommended",deleteExpiredTip:"Doing this helps keep the page running smoothly",endConfirm:`Are you sure you want to end "{{title}}"? 558 559Students will no longer be able to enter the code to join.`,deleteArchiveConfirm:`Are you sure you want to delete "{{title}}"? 560 561This session's results will be permanently deleted and cannot be recovered.`,empty:{title:"No assignments yet",description:'Go to "My Activities" and click "Assign" on a game to create an assignment',button:"Go to My Activities"},loadError:"Unable to load assignments. Please try again.",deleteError:"Unable to delete expired assignments. Please try again.",table:{stt:"No.",reminderName:"Reminder Name",lesson:"Lesson",codeLink:"Code / Link",status:"Status",statusEnded:"Ended",statusExpired:"Expired",submitted:"Submitted",studentCount:"SS",actions:"Actions",copyCode:"Copy code",copyLink:"Copy join link",viewDetail:"View details",endAssignment:"End assignment",deleteArchive:"Delete archived session"},deleteModal:{title:"ðï¸ Delete Expired",successTitle:"â Deleted Successfully",successMsg:"Deleted {{count}} expired assignments and all related submissions.",confirmMsg:"You are about to delete {{count}} expired or ended assignments, along with all student submissions.",warning:"This action cannot be undone. Student score data will be permanently deleted.",deleting:"Deleting...",confirmBtn:"Confirm Delete"}},gameTypes$1={tug_of_war:{label:"Tug of War",instruction:"𪢠Enter names of 2 teams and start tug of war! Answer correctly to pull the rope to your side."},flip_puzzle:{label:"Flip Puzzle Game",instruction:"ð§© Flip puzzles by answering questions!"},quiz_game:{label:"Drag & Drop - Matching",instruction:'ð¯ Drag labels to correct positions (or click to select), drag matching items in connecting mode. Click "Finish" when done!'},hand_slash_quiz:{label:"Fruit Slash Quiz",instruction:"â Use your hand (or mouse) to slash the correct answer as fruits fly up. Avoid touching bombs!"},wheel_quiz:{label:"Wheel Quiz",instruction:"ð¡ Spin the wheel to choose a question and answer correctly to score points. Please complete all questions!"},interactive_video:{label:"Interactive Video",instruction:"ð¬ Watch the video and answer questions that appear. Each correct answer earns you 1 point!"},crossword_puzzle:{label:"Crossword / Secret Key",instruction:"Click on the row name (1, 2, 3, ...) to open horizontal rows and find the red keyword!"},interactive_image:{label:"Interactive Image",instruction:"Click on the ð touch points on the image to view information or answer questions!"},head_tilt_quiz:{label:"Head Tilt Quiz",instruction:"ð¤ Tilt your head left or right to choose answer A or B!"},paced_quiz:{label:"Paced Quiz",instruction:"â±ï¸ Read the question and choose the correct answer. Complete all questions to see your score!"},pose_quiz:{label:"ABC Exercise",instruction:"ð§ Watch the question, choose the correct answer according to the character's pose. Complete all to see your score!"},turn_based_game:{label:"Turn-based Game",instruction:"ð² Enter player names, roll the dice and race to the finish! Answer correctly to overcome obstacles."},versus_game:{label:"Versus Game",instruction:"âï¸ Answer correctly to push the stick toward your opponent. Whoever reaches the mark first wins!"}},enAssignment={title:title$3,success:success$1,form:form$b,alerts:alerts$3,errors:errors$4,common:common$1,duplicate:duplicate$1,player:player$6,result:result$3,details:details$1,join:join$1,history:history$1,gameTypes:gameTypes$1},modal$2={title:"Chia sẻ cho giáo viên: {{title}}",audienceBadge:"Dà nh cho giáo viên khác â không phải há»c sinh",howItWorksTitle:"Cách hoạt Äá»ng",step1:"Sao chép link bên dưá»i và gá»i cho Äá»ng nghiá»p giáo viên",step2:"Giáo viên nháºn link ÄÄng nháºp và o Giáo viên Äá»i má
561»i và má» link",step3:'Há» nhấn "Lưu vá» tà i khoản" â bà i sẽ ÄÆ°á»£c sao chép riêng và o tà i khoản cá»§a há»',generating:"Äang tạo link...",copySuccess:"â Äã sao chép!",copyLink:"Sao chép link chia sẻ",revokeLink:"Thu há»i link",revoking:"Äang thu há»i...",note:"Bà i chia sẻ luôn theo ná»i dung má»i nhất: bạn chá»nh sá»a rá»i má» lại há»p thoại nà y là link tá»± cáºp nháºt, không cần tạo link má»i.",revokeNote:"Thu há»i sẽ vô hiá»u hoá link: giáo viên Äã nháºn vẫn giữ bà i, nhưng không tải lại bản má»i ÄÆ°á»£c nữa."},claim$2={loading:"Äang tải...",notLoggedIn:{title:"Bạn chưa ÄÄng nháºp",description:"Hãy ÄÄng nháºp và o <strong>Giáo viên Äá»i má»i</strong> trưá»c, rá»i má»i dán hoặc má» lại link nà y.",button:"ÄÄng nháºp ngay"},notFound:{title:"Link không hợp lá»",description:"Link nà y không tá»n tại hoặc Äã bá» thu há»i.",backLink:"Vá» trang chÃnh"},expired:{title:"Link Äã hết hạn",description:"Link chia sẻ chá» có hiá»u lá»±c 30 ngà y. Hãy nhá» giáo viên tạo link má»i.",backLink:"Vá» trang chÃnh"},alreadyClaimed:{title:"Bạn Äã lưu bà i nà y rá»i",description:"Bà i Äã có trong danh sách cá»§a bạn.",button:"Xem danh sách bà i",reclaimButton:"Tải lại bản má»i nhất",reclaiming:"Äang tải lại...",reclaimNote:"Dùng khi giáo viên chia sẻ Äã sá»a bà i, hoặc khi bạn lỡ xoá bà i và muá»n lấy lại. Bà i cÅ© sẽ ÄÆ°á»£c ghi Äè, không tạo thêm bản trùng và không tá»n thêm lượt."},success:{title:"Äã lưu thà nh công!",description:"Äang chuyá»n vá» danh sách bà i...",updatedTitle:"Äã cáºp nháºt bà i!",updatedDescription:"Bà i cá»§a bạn Äã ÄÆ°á»£c thay bằng bản má»i nhất. Äang chuyá»n vá» danh sách bà i..."},preview:{defaultTitle:"Bà i ÄÆ°á»£c chia sẻ",sharedBy:"ÄÆ°á»£c chia sẻ bá»i: <strong>{{name}}</strong>",defaultName:"Giáo viên",questions_one:"ð 1 câu há»i",questions_other:"ð {{count}} câu há»i",timeLimit:"â± {{count}}s/câu",submitButton:"Lưu vá» tà i khoản",submitting:"Äang lưu...",footerNote:"Bà i sẽ ÄÆ°á»£c sao chép và o tà i khoản cá»§a bạn và tÃnh và o quota."}},errors$3={createFailed:"Không thá» tạo link. Vui lòng thá» lại.",revokeFailed:"Không thá» thu há»i link.",generalError:"Äã có lá»i xảy ra. Vui lòng thá» lại."},viTeacherShare={modal:modal$2,claim:claim$2,errors:errors$3},modal$1={title:"Share with teacher: {{title}}",audienceBadge:"For other teachers â not for students",howItWorksTitle:"How it works",step1:"Copy the link below and send it to a fellow teacher",step2:"The teacher logs in to Innovating Teacher and opens the link",step3:'They click "Save to Account" â the lesson is copied into their own account',generating:"Creating link...",copySuccess:"â Copied!",copyLink:"Copy share link",revokeLink:"Revoke link",revoking:"Revoking...",note:"The shared lesson always reflects your latest version: edit it, reopen this dialog, and the link updates itself â no need to create a new one.",revokeNote:"Revoking disables the link: teachers who already saved the lesson keep it, but can no longer pull your latest version."},claim$1={loading:"Loading...",notLoggedIn:{title:"You are not logged in",description:"Please log in to <strong>Innovating Teacher</strong> first, then paste or reopen this link.",button:"Log in now"},notFound:{title:"Invalid Link",description:"This link does not exist or has been revoked.",backLink:"Back to Home"},expired:{title:"Link Expired",description:"Share links are only valid for 30 days. Please ask the teacher for a new link.",backLink:"Back to Home"},alreadyClaimed:{title:"You already saved this game",description:"This game is already in your list.",button:"View my games",reclaimButton:"Reload the latest version",reclaiming:"Reloading...",reclaimNote:"Use this if the sharing teacher has edited the lesson, or if you deleted it and want it back. Your copy is overwritten â no duplicate is created and no extra quota is used."},success:{title:"Saved successfully!",description:"Redirecting to your game list...",updatedTitle:"Lesson updated!",updatedDescription:"Your copy has been replaced with the latest version. Redirecting to your game list..."},preview:{defaultTitle:"Shared Game",sharedBy:"Shared by: <strong>{{name}}</strong>",defaultName:"Teacher",questions_one:"ð 1 question",questions_other:"ð {{count}} questions",timeLimit:"â± {{count}}s/question",submitButton:"Save to Account",submitting:"Saving...",footerNote:"Game will be copied to your account and count towards your quota."}},errors$2={createFailed:"Could not create link. Please try again.",revokeFailed:"Could not revoke link.",generalError:"Something went wrong. Please try again."},enTeacherShare={modal:modal$1,claim:claim$1,errors:errors$2},page$8={title:"âï¸ Game Äá»i Kháng",sidebar:{myGames:"Bà i cá»§a tôi",createNew:"Tạo bà i má»i",rooms:"Phòng chÆ¡i",upgradeLabel:"Nâng Cấp Lẻ",helpLabel:"Hưá»ng dẫn sá» dụng"},help:{title:"Hưá»ng dẫn Game Äá»i Kháng",description:"Xem video hưá»ng dẫn cách tạo và sá» dụng Game Äá»i Kháng"},quota:{proPermanent:"Ko giá»i hạn vÄ©nh viá»
n",proDaysRemaining:"{{days}} ngà y ko giá»i hạn",usedCount:"Äã dùng {{current}}/{{total}} bà i",limitReached:"Äã Äạt giá»i hạn dùng thá»"}},myGames$9={title:"âï¸ Bà i chÆ¡i cá»§a tôi",subtitle:"Quản lý các bà i Game Äá»i Kháng Äã tạo",pinNote:"Ghim bà i Äá» luôn truy cáºp ÄÆ°á»£c ká» cả khi hết hạn",pinnedCount:"({{current}}/{{limit}} Äã ghim)",packageExpired:"â ï¸ Gói Äã hết hạn!",renew:"Gia hạn",empty:"Chưa có bà i chÆ¡i nà o",emptyDesc:"Tạo bà i Äầu tiên Äá» há»c sinh Äấu nhau!",createFirst:"â Tạo bà i Äầu tiên",lockedTip:"Gia hạn Äá» má» bà i nà y",questionsCount:"{{count}}
561 câu há»i",winSteps:"Thắng: {{count}} bưá»c",rooms:"Phòng chÆ¡i",roomsTooltip:"Xem danh sách phòng chÆ¡i",edit:"Sá»a",editTooltip:"Chá»nh sá»a",teacherShare:"Chia sẻ GV",shareTooltip:"Chia sẻ cho GV khác",delete:"Xóa",openRoomsBanner:"ð¢ Phòng Äang má»:",none:"Không có",roomLabel:"Phòng:",lessonLabel:"Bà i:",refreshRooms:"ð Cáºp nháºt DS phòng",loadDemo:"ð Dùng thá» bà i mẫu",loadingDemo:"Äang nạp...",demoDesc:"Bà i mẫu gá»m 8 câu há»i có sẵn â nạp và o tà i khoản Äá» má» phòng chÆ¡i thá» ngay.",pinLimitAlert:"Chá» ghim ÄÆ°á»£c tá»i Äa {{limit}} bà i",deleteDialog:{title:"Xóa bà i chÆ¡i?",content:"Bà i chÆ¡i sẽ bá» xóa vÄ©nh viá»
n. Bạn có chắc không?",cancel:"Há»§y",confirm:"Xóa"},toast:{loadError:"Lá»i tải danh sách bà i",deleteSuccess:"Äã xóa bà i chÆ¡i",deleteError:"Lá»i khi xóa bà i",demoSuccess:"Äã thêm bà i mẫu và o tà i khoản. Má» phòng Äá» chÆ¡i thá» ngay!",demoError:"Không thêm ÄÆ°á»£c bà i mẫu. Vui lòng thá» lại."}},matchRoom$1={track:"Bà i {{num}}",opponent:"Äá»i thá»§",student:"Há»c sinh",player1:"Ngưá»i chÆ¡i 1",player2:"Ngưá»i chÆ¡i 2",you:"(bạn)",sessionNotFoundTitle:"Tráºn Äã kết thúc",sessionNotFoundDesc:"Không tìm thấy tráºn Äấu nà y. Có thá» Äã kết thúc hoặc hết hạn.",backHome:"Vá» trang chá»§",victoryTitle:"ð Chiến thắng!",defeatTitle:"ð Thất bại",stoppedTitle:"Tráºn bá» dừng",youWon:"Bạn thắng!",youLost:"Bạn thua!",teacherStopped:"Giáo viên Äã ngừng tráºn Äấu nà y.",matchResultTitle:"Kết quả tráºn Äấu",correctAnswers:"câu Äúng",surrenderTitle:"Äầu hà ng?",surrenderDesc:"Bạn sẽ thua tráºn nà y và Äá»i thá»§ sẽ thắng ngay láºp tức.",continue:"Tiếp tục",surrender:"Äầu hà ng",cacheHint:"Nếu bá» ÄÆ¡ máy Hãy nhấn 2 phÃm Ctrl và H rá»i bấm ðï¸",surrenderBtn:"ð³ï¸ Äầu hà ng",pushImageAlt:"2 váºn Äá»ng viên Äẩy gáºy",oppDisconnected:"â³ Äá»i thá»§ mất kết ná»i â Äang chá» quay lại ({{seconds}}s)",matchPausedHint:"Tráºn tạm dừng, bạn chưa thá» ghi Äiá»m lúc nà y",frozenTimer:"âï¸ Äóng bÄng {{seconds}}s...",loadingQuestion:"Äang tải câu há»i...",confirm:"Xác nháºn",shortAnswerPlaceholder:"Nháºp Äáp án...",trueLabel:"Ä",falseLabel:"S",fillInBlank:"Äiá»n từ",loadingSpectator:"Äang tải...",backToRoom:"â Quay lại phòng"},form$a={createTitle:"âï¸ Tạo Game Äá»i Kháng má»i",editTitle:"âï¸ Chá»nh sá»a Game Äá»i Kháng",titleLabel:"Tiêu Äá» bà i chÆ¡i",winStepsLabel:"Sá» bưá»c Äá» thắng: {{steps}}",minQuestionsTip:"(khuyến nghá» tá»i thiá»u {{min}} câu há»i)",winStepsDesc:"HS Äẩy gáºy sang phÃa Äá»i thá»§ khi trả lá»i Äúng. Ai Äạt {{steps}} bưá»c trưá»c thì thắng.",freezeDurationLabel:"âï¸ Thá»i gian Äóng bÄng khi trả lá»i sai: {{seconds}}s",freezeDurationDesc:"HS trả lá»i sai sẽ bá» khóa {{seconds}} giây trưá»c khi ÄÆ°á»£c trả lá»i lại.",shuffleOptions:"Äảo thứ tá»± Äáp án",shuffleOptionsDesc:"Má»i lần hiá»n câu há»i, thứ tá»± A/B/C/D sẽ ÄÆ°á»£c xáo ngẫu nhiên â tránh HS nhá» vá» trà Äá» gian láºn",minQuestionsWarning:"â khuyến nghá» Ãt nhất {{min}} câu",bgmTitle:"ðµ Nhạc ná»n mặc Äá»nh",bgmCustom:"Nhạc riêng (FullGame):",bgmDesc:"GV có thá» Äá»i bà i nhạc trong khi chÆ¡i.",bgmMyMusic:"Nhạc cá»§a tôi",bgmTrack:"Bà i {{num}}",maxQuestionsWarning:"Tá»i Äa {{max}} câu há»i",excelSuccess:"Äã thêm {{count}} câu từ Excel",fontSizeQuestion:"Cỡ chữ câu há»i:",fontSizeAnswer:"Cỡ chữ Äáp án:",imgSizeQuestion:"Cỡ ảnh câu há»i:",imgSizeAnswer:"Cỡ ảnh Äáp án:",sizeSmall:"Bé",sizeStandard:"Chuẩn",sizeLarge:"Lá»n",sizeXLarge:"Rất lá»n",sizeHuge:"Cá»±c Äại",statementsCount:"{{count}} má»nh Äá»",fillInBlankFormat:"Äiá»n từ: {{answer}}",questionsSectionTitle:"Câu há»i ({{count}})",clearAll:"Xóa tất cả",pickFromBank:"ðï¸ Chá»n từ Kho hoặc AI",pickFromLesson:"ð Từ bà i có sẵn",manualInput:"âï¸ Nháºp thá»§ công",sizeHint:"Ãp dụng cho câu chưa chá»nh riêng",listHeader:"Danh sách câu há»i",emptyTitle:"Chưa có câu há»i nà o",emptyDesc:"Thêm câu há»i Äá» 2 HS cùng trả lá»i và Äẩy gáºy",cancel:"Há»§y",save:"Lưu bà i chÆ¡i",saving:"Äang lưu...",lessonPickerTitle:"Chá»n bà i Äá» lấy câu há»i",bankModalTitle:"Chá»n câu há»i từ Kho",toast:{loadError:"Lá»i tải dữ liá»u bà i chÆ¡i",noValidQuestions:"Không có câu há»i hợp lá»",addedSkippedLimit:"Äã thêm {{valid}} câu, bá» qua {{skipped}} câu do Äạt giá»i hạn {{max}} câu",addedSkippedInvalid:"Äã thêm {{valid}} câu, bá» qua {{skipped}} câu không hợp lá»",noMatchingLessonQuestions:"Không có câu nà o phù hợp ({{count}} câu bá» bá» qua).",addedFromLessonSkipped:'Äã thêm {{added}} câu từ "{{title}}". Bá» qua {{skipped}} câu không tương thÃch.',addedFromLesson:'Äã thêm {{added}} câu từ "{{title}}".',allowedManualLimit:"Chá» thêm ÄÆ°á»£c {{allowed}} câu do Äạt giá»i hạn {{max}} câu",questionUpdated:"Äã cáºp nháºt câu há»i",questionsAdded:"Äã thêm {{count}} câu há»i",questionDeleted:"Äã xóa câu há»i {{num}}",confirmDeleteAll:"Xóa tất cả câu há»i?",allQuestionsDeleted:"Äã xóa tất cả câu há»i",minOneQuestionRequired:"Vui lòng thêm Ãt nhất 1 câu há»i",libraryCategoryRequired:"Vui lòng chá»n Cấp há»c, Môn há»c và Khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»
561ng.",saveError:"Lá»i lưu bà i chÆ¡i"}},lobby$1={checkingMatch:"Äang kiá»m tra tráºn cá»§a bạn...",roomClosedTitle:"Phòng Äã Äóng",roomClosedByTeacher:"Giáo viên Äã Äóng phòng chÆ¡i nà y.",roomExpired:"Phòng chÆ¡i nà y Äã hết hạn.",askTeacherForCode:"Vui lòng há»i giáo viên Äá» ÄÆ°á»£c cấp mã má»i.",gameTitle:"âï¸ Game Äá»i Kháng",hello:"Xin chà o, <1>{{name}}</1>!",chooseAvatar:"Chá»n avatar cho mình:",title:"âï¸ Phòng chá»",waitingForOpponent:"â³ Äang chá» <1>{{name}}</1> trả lá»i...",cancel:"Há»§y",waitingPlayersCount:"Ngưá»i chÆ¡i Äang chá» ({{count}})",connecting:"Äang kết ná»i...",noOneWaiting:"Chưa có ai Äang chá»...",waitForClassmate:"Hãy Äợi bạn cùng lá»p và o nhé!",challengeBtn:"âï¸ Thách Äấu",allInRoom:"Tất cả trong phòng ({{count}}):",challengeModalTitle:"âï¸ Thách Äấu!",challengeModalDesc:"muá»n Äấu vá»i bạn. Chấp nháºn không?",reject:"Từ chá»i",accept:"âï¸ Chấp nháºn!",errors:{cannotJoin:"Không thá» và o phòng chá». Vui lòng thá» lại.",cannotStart:"Không thá» bắt Äầu tráºn Äấu. Vui lòng thá» lại.",acceptError:"Lá»i khi chấp nháºn thách Äấu."}},spectator$1={title:"âï¸ Phòng chÆ¡i: {{title}}",subtitle:"Bà i: {{gameTitle}} · {{count}} há»c sinh trong phòng",unnamed:"Chưa Äặt tên",back:"Quay lại",closeRoom:"Äóng phòng",roomClosedBanner:"ð Phòng nà y Äã bá» Äóng. Há»c sinh không thá» và o bằng mã cÅ© nữa.",roomExpiredBanner:"ð Phòng nà y Äã hết hạn. Há»c sinh không thá» và o bằng mã cÅ© nữa.",joinCode:"Mà THAM GIA",joinLink:"LINK THAM GIA",copied:"Äã sao chép!",copyCode:"Sao chép mã",copyLink:"Sao chép link",waitingTitle:"Äang chá» ({{count}})",noWaitingStudents:"Chưa có há»c sinh nà o Äang chá»...",activeMatchesTitle:"Tráºn Äang diá»
n ra ({{count}})",clickToSpectate:"· Click Äá» xem trá»±c tiếp",noActiveMatches:"Chưa có tráºn nà o Äang diá»
n ra...",finishedTitle:"Äã xong ({{count}} tráºn)",matchStatusFinished:"â
Kết thúc",matchStatusFighting:"âï¸ Äang Äấu",stopMatch:"â¹ Ngừng",winnerAnnounce:"ð {{name}} thắng",winCondition:"Thắng khi Äạt {{steps}} bưá»c",deleteDialog:{title:"â ï¸ Äóng phòng và xóa dữ liá»u?",intro:"Hà nh Äá»ng nà y sẽ:",step1:"Ngừng tất cả tráºn Äang diá»
n ra",step2:"Xóa toà n bá» dữ liá»u phòng chá»",step3:"Há»c sinh sẽ không thá» và o phòng nữa",note:"Kết quả các tráºn Äã hoà n thà nh vẫn ÄÆ°á»£c lưu lại.",cancel:"Há»§y",confirm:"Äóng phòng",closing:"Äang Äóng..."}},rooms$1={title:"ðï¸ Phòng chÆ¡i",refreshRooms:"ð Cáºp nháºt DS phòng",createRoom:"Tạo phòng",empty:"Chưa có phòng nà o",emptyDesc:'Bấm "Tạo phòng" á» trên Äá» bắt Äầu!',statusOpen:"ð¢ Äang má»",codeLabel:"Mã: {{code}}",expLabel:"HH: {{date}}",createdLabel:"Tạo: {{date}}",openRoomBtn:"ð Má» phòng",openingBtn:"â³ Äang má»...",enterRoomBtn:"ðï¸ Và o phòng",closeRoomBtn:"ð Äóng phòng",closingBtn:"â³ Äang Äóng...",limit3RoomsError:"Bạn Äang má» 3 phòng á» các bà i khác, vui lòng Äóng bá»t trưá»c khi tạo thêm."},viVersusGame={page:page$8,myGames:myGames$9,matchRoom:matchRoom$1,form:form$a,lobby:lobby$1,spectator:spectator$1,rooms:rooms$1},page$7={title:"âï¸ Versus Game",sidebar:{myGames:"My Games",createNew:"Create New",rooms:"Game Rooms",upgradeLabel:"Unlock Feature",helpLabel:"How to use"},help:{title:"Versus Game Guide",description:"Watch the tutorial video on how to create and use Versus Game"},quota:{proPermanent:"FullGame Permanent",proDaysRemaining:"{{days}} FullGame days left",usedCount:"Used {{current}}/{{total}} games",limitReached:"Trial limit reached"}},myGames$8={title:"âï¸ My Games",subtitle:"Manage your Versus Games",pinNote:"Pin games to keep them accessible even after expiry",pinnedCount:"({{current}}/{{limit}} pinned)",packageExpired:"â ï¸ Package expired!",renew:"Renew",empty:"No games yet",emptyDesc:"Create your first game for students to compete!",createFirst:"â Create First Game",lockedTip:"Upgrade to unlock this game",questionsCount:"{{count}} questions",winSteps:"Win: {{count}} steps",rooms:"Rooms",roomsTooltip:"View game rooms",edit:"Edit",editTooltip:"Edit game",teacherShare:"Teacher Share",shareTooltip:"Share with other teachers",delete:"Delete",openRoomsBanner:"ð¢ Open rooms:",none:"None",roomLabel:"Room:",lessonLabel:"Lesson:",refreshRooms:"ð Refresh room list",loadDemo:"ð Try demo lesson",loadingDemo:"Loading...",demoDesc:"Demo lesson includes 8 pre-made questions â add to your account to test playing immediately.",pinLimitAlert:"Can only pin up to {{limit}} games",deleteDialog:{title:"Delete game?",content:"This game will be permanently deleted. Are you sure?",cancel:"Cancel",confirm:"Delete"},toast:{loadError:"Error loading games",deleteSuccess:"Game deleted successfully",deleteError:"Error deleting game",demoSuccess:"Demo lesson added to account. Open a room to try playing now!",demoError:"Failed to add demo lesson. Please try again."}},matchRoom={track:"Track {{num}}",opponent:"Opponent",student:"Student",player1:"Player 1",player2:"Player 2",you:"(you)",sessionNotFoundTitle:"Match ended",sessionNotFoundDesc:"Match session not found. It may have finished or expired.",backHome:"Back to Home",victoryTitle:"ð Victory!",defeatTitle:"ð Defeat",stoppedTitle:"Match Stopped",youWon:"You Won!",youLost:"You Lost!",teacherStopped:"The teacher has stopped this match.",matchResultTitle:"Match Result",correctAnswers:"correct",surrenderTitle:"Surrender?",surrenderDesc:"You will forfeit this match and your opponent will win immediately.",continue:"Continue",surrender:"Surrender",cac
561heHint:"If your device freezes, press Ctrl + H and click ðï¸",surrenderBtn:"ð³ï¸ Surrender",pushImageAlt:"2 stick pushing athletes",oppDisconnected:"â³ Opponent disconnected â waiting for reconnection ({{seconds}}s)",matchPausedHint:"Match paused, you cannot score points right now",frozenTimer:"âï¸ Frozen for {{seconds}}s...",loadingQuestion:"Loading question...",confirm:"Confirm",shortAnswerPlaceholder:"Type your answer...",trueLabel:"T",falseLabel:"F",fillInBlank:"Fill in the blank",loadingSpectator:"Loading...",backToRoom:"â Back to room"},form$9={createTitle:"âï¸ Create New Versus Game",editTitle:"âï¸ Edit Versus Game",titleLabel:"Game title",winStepsLabel:"Steps to win: {{steps}}",minQuestionsTip:"(recommended minimum {{min}} questions)",winStepsDesc:"Students push the stick toward their opponent on correct answers. First to reach {{steps}} steps wins.",freezeDurationLabel:"âï¸ Freeze time on wrong answer: {{seconds}}s",freezeDurationDesc:"Students answering incorrectly will be frozen for {{seconds}} seconds before answering again.",shuffleOptions:"Shuffle answer options",shuffleOptionsDesc:"Randomize option order on each question to prevent memorizing positions",minQuestionsWarning:"â recommended at least {{min}} questions",bgmTitle:"ðµ Default background music",bgmCustom:"Custom music (FullGame):",bgmDesc:"Teachers can switch music tracks during the game.",bgmMyMusic:"My music",bgmTrack:"Track {{num}}",maxQuestionsWarning:"Maximum {{max}} questions",excelSuccess:"Added {{count}} questions from Excel",fontSizeQuestion:"Question font size:",fontSizeAnswer:"Answer font size:",imgSizeQuestion:"Question image size:",imgSizeAnswer:"Answer image size:",sizeSmall:"Small",sizeStandard:"Standard",sizeLarge:"Large",sizeXLarge:"Extra large",sizeHuge:"Huge",statementsCount:"{{count}} statements",fillInBlankFormat:"Fill in the blank: {{answer}}",questionsSectionTitle:"Questions ({{count}})",clearAll:"Clear all",pickFromBank:"ðï¸ Pick from Bank or AI",pickFromLesson:"ð From existing lesson",manualInput:"âï¸ Manual input",sizeHint:"Applies to questions without custom sizes",listHeader:"Questions list",emptyTitle:"No questions yet",emptyDesc:"Add questions for both students to answer and push the stick",cancel:"Cancel",save:"Save game",saving:"Saving...",lessonPickerTitle:"Select lesson to extract questions",bankModalTitle:"Select questions from Bank",toast:{loadError:"Error loading game data",noValidQuestions:"No valid questions found",addedSkippedLimit:"Added {{valid}} questions, skipped {{skipped}} questions due to {{max}} questions limit",addedSkippedInvalid:"Added {{valid}} questions, skipped {{skipped}} invalid questions",noMatchingLessonQuestions:"No matching questions found ({{count}} questions skipped).",addedFromLessonSkipped:'Added {{added}} questions from "{{title}}". Skipped {{skipped}} incompatible questions.',addedFromLesson:'Added {{added}} questions from "{{title}}".',allowedManualLimit:"Only added {{allowed}} questions due to {{max}} questions limit",questionUpdated:"Question updated",questionsAdded:"Added {{count}} questions",questionDeleted:"Deleted question {{num}}",confirmDeleteAll:"Delete all questions?",allQuestionsDeleted:"Deleted all questions",minOneQuestionRequired:"Please add at least 1 question",libraryCategoryRequired:"Please select Grade level, Subject and Grade to publish to Community Library.",saveError:"Error saving game"}},lobby={checkingMatch:"Checking your match...",roomClosedTitle:"Room Closed",roomClosedByTeacher:"The teacher has closed this room.",roomExpired:"This room has expired.",askTeacherForCode:"Please ask your teacher for a new join code.",gameTitle:"âï¸ Versus Game",hello:"Hello, <1>{{name}}</1>!",chooseAvatar:"Choose your avatar:",title:"âï¸ Waiting Lobby",waitingForOpponent:"â³ Waiting for <1>{{name}}</1> to respond...",cancel:"Cancel",waitingPlayersCount:"Waiting players ({{count}})",connecting:"Connecting...",noOneWaiting:"No one is waiting...",waitForClassmate:"Wait for your classmates to join!",challengeBtn:"âï¸ Challenge",allInRoom:"All in room ({{count}}):",challengeModalTitle:"âï¸ Challenge!",challengeModalDesc:"wants to battle you. Accept?",reject:"Decline",accept:"âï¸ Accept!",errors:{cannotJoin:"Could not join lobby. Please try again.",cannotStart:"Could not start match. Please try again.",acceptError:"Error accepting challenge."}},spectator={title:"âï¸ Game room: {{title}}",subtitle:"Lesson: {{gameTitle}} · {{count}} students in room",unnamed:"Untitled",back:"Back",closeRoom:"Close room",roomClosedBanner:"ð This room has been closed. Students can no longer join using the old code.",roomExpiredBanner:"ð This room has expired. Students can no longer join using the old code.",joinCode:"JOIN CODE",joinLink:"JOIN LINK",copied:"Copied!",copyCode:"Copy code",copyLink:"Copy link",waitingTitle:"Waiting ({{count}})",noWaitingStudents:"No students waiting yet...",activeMatchesTitle:"Active matches ({{count}})",clickToSpectate:"· Click to spectate live",noActiveMatches:"No active matches right now...",finishedTitle:"Finished ({{count}}
561 matches)",matchStatusFinished:"â Finished",matchStatusFighting:"âï¸ Fighting",stopMatch:"â¹ Stop",winnerAnnounce:"ð {{name}} won",winCondition:"Wins upon reaching {{steps}} steps",deleteDialog:{title:"â ï¸ Close room and delete data?",intro:"This action will:",step1:"Stop all active matches",step2:"Delete all lobby data",step3:"Students will no longer be able to enter",note:"Completed match results are still preserved.",cancel:"Cancel",confirm:"Close room",closing:"Closing..."}},rooms={title:"ðï¸ Game Rooms",refreshRooms:"ð Refresh room list",createRoom:"Create room",empty:"No rooms yet",emptyDesc:'Click "Create room" above to get started!',statusOpen:"ð¢ Open",codeLabel:"Code: {{code}}",expLabel:"Exp: {{date}}",createdLabel:"Created: {{date}}",openRoomBtn:"ð Open room",openingBtn:"â³ Opening...",enterRoomBtn:"ðï¸ Enter room",closeRoomBtn:"ð Close room",closingBtn:"â³ Closing...",limit3RoomsError:"You currently have 3 open rooms in other lessons, please close one before creating another."},enVersusGame={page:page$7,myGames:myGames$8,matchRoom,form:form$9,lobby,spectator,rooms},page$6={title:"Paper Mode",subtitle:"Quét thẻ giấy â Plickers Style",description:"Há»c sinh dùng thẻ giấy in sẵn, giáo viên quét bằng Äiá»n thoại từ xa"},dashboard$1={title:"Phiên quét cá»§a tôi",newSession:"Tạo phiên má»i",manageClasses:"Quản lý lá»p",noSessions:"Chưa có phiên quét nà o",noSessionsDesc:"Tạo phiên má»i Äá» bắt Äầu quét thẻ giấy",status:{draft:"Nháp",active:"Äang chạy",completed:"Hoà n thà nh"},actions:{edit:"Chá»nh sá»a",start:"Bắt Äầu quét",results:"Xem kết quả",duplicate:"Nhân bản",delete:"Xóa",confirmDelete:"Bạn có chắc muá»n xóa phiên nà y?"}},createSession$1={title:"Tạo phiên quét má»i",sessionTitle:"Tên phiên",sessionTitlePlaceholder:"VD: Kiá»m tra Toán chương 1",selectClass:"Chá»n lá»p",selectClassPlaceholder:"Chá»n lá»p há»c...",noClasses:"Chưa có lá»p nà o. Vui lòng tạo lá»p trưá»c.",createClass:"Tạo lá»p má»i",addQuestions:"Thêm câu há»i",addFromBank:"Thêm từ Ngân hà ng câu há»i",addManual:"Thêm thá»§ công",questionCount:"{{count}} câu há»i",save:"Lưu phiên",cancel:"Há»§y",errors:{titleRequired:"Vui lòng nháºp tên phiên",classRequired:"Vui lòng chá»n lá»p",questionsRequired:"Cần Ãt nhất 1 câu há»i"}},classes$1={title:"ð« Lá»p há»c cá»§a tôi",btnAdvanced:"âï¸ Quản lý nâng cao",createClass:"Tạo lá»p má»i",className:"Tên lá»p",studentCount:"{{count}} há»c sinh",noClasses:"Chưa có lá»p nà o",noClassesDesc:"Tạo lá»p má»i và thêm danh sách há»c sinh",actions:{scan:"Quét"},defaultRosterName:"Danh sách lá»p",statsSummary:"ð {{questions}} câu · ð§âð {{students}} hs",dialogEditTitle:"Sá»a lá»p: {{name}}",labelStudentList:"Danh sách há»c sinh (má»i tên 1 dòng - có thá» copy từ Excel)",placeholderStudentList:`Nguyá» n VÄn A 562Trần Thá» B 563Lê VÄn C`,cardNo:"Thẻ {{number}}",editHint:"Äá»i thứ tá»± danh sách thì sá» thẻ Äá»i theo â chá» cần chiếu danh sách lên cho há»c sinh Äá»i thẻ cho nhau, không phải in lại.",maxStudentsHint:"Tá»i Äa {{max}} há»c sinh má»i lá»p.",errorOverLimit:"Danh sách có {{count}} há»c sinh, vượt quá tá»i Äa {{max}}. Hãy bá»t bá»t rá»i lưu lại.",btnCancel:"Há»§y",btnSave:"Lưu",btnSaving:"Äang lưu...",successUpdate:"Äã cáºp nháºt lá»p",errorSave:"Lưu thất bại",errorName:"Vui lòng nháºp tên lá»p",description:"Danh sách lá»p <strong>dùng chung</strong> cho má»i tÃnh nÄng cần lá»p há»c â sá»a má»t nÆ¡i, các nÆ¡i khác thấy ngay. Bấm <strong>Quét</strong> Äá» bắt Äầu chấm bà i.",btnCreateFirst:"+ Tạo lá»p Äầu tiên",labelStudentCount:"{{count}} há»c sinh",labelClassName:"Tên lá»p",dialogCreateTitle:"Tạo lá»p má»i",dialogDeleteTitle:"Xóa lá»p há»c",dialogDeleteDesc:"Lá»p sẽ bá» xóa vÄ©nh viá» n. Hà nh Äá»ng nà y không thá» hoà n tác.",btnConfirmDelete:"Xóa",tooltipEdit:"Sá»a lá»p",tooltipDelete:"Xóa lá»p",errorMinStudent:"Lá»p phải có Ãt nhất 1 há»c sinh",errorLoad:"Không tải ÄÆ°á»£c danh sách lá»p",errorDelete:"Xóa thất bại",successCreate:"Äã tạo lá»p má»i",successDelete:"Äã xóa lá»p",hintMaxStudents:"Má»i tên 1 dòng. Tá»i Äa {{max}} há»c sinh má»i lá»p.",btnExportRoster:"In danh sách",btnExportingRoster:"Äang xuất...",tooltipExportRoster:"Xuất Excel: STT thẻ + Tên HS",noCardWarning:"Danh sách có {{count}} em, nhưng bá» thẻ PDF chá» có {{max}} thẻ. Các em từ sá» {{max}} trá» Äi chưa có thẻ giấy â in thêm thẻ hoặc bá»t bá»t danh sách."},roster$1={title:"Danh sách há»c sinh â {{className}}",addStudent:"Thêm há»c sinh",bulkImport:"Nháºp hà ng loạt",cardNumber:"Sá» thẻ",studentName:"Há» tên",note:"Ghi chú",noStudents:"Chưa có há»c sinh nà o",noStudents
563Desc:"Thêm há»c sinh hoặc nháºp hà ng loạt",actions:{edit:"Sá»a",delete:"Xóa",confirmDelete:"Xóa há»c sinh {{name}}?"},bulkImportModal:{title:"Nháºp hà ng loạt há»c sinh",description:"Nháºp má»i dòng: Sá» thẻ, Há» tên (cách nhau bằng dấu phẩy hoặc tab)",placeholder:`1, Nguyá» n VÄn A 5642, Trần Thá» B 5653, Lê VÄn C`,import:"Nháºp",cancel:"Há»§y",result:"Äã nháºp {{imported}} há»c sinh, bá» qua {{skipped}}"}},print$1={title:"In thẻ â {{className}}",description:"In 2 thẻ A5 trên má»i trang A4. Thẻ có thá» tái sá» dụng cả nÄm.",printButton:"In thẻ",instructions:"Hưá»ng dẫn:",step1:"Xoay thẻ Äá» Äáp án hưá»ng LÃN TRÃN",step2:"A = giữ nguyên, B = xoay 90° trái, C = láºt ngược, D = xoay 90° phải",step3:"Giáo viên quét bằng camera Äiá»n thoại từ 2-4 mét, có thá» quét nhiá»u thẻ cùng lúc",cardLabel:"Thẻ #{{number}} â {{name}}",answerGuide:"A â B â C â D â"},session$1={scanning:"Äang quét",results:"Kết quả",question:"Câu {{current}}/{{total}}",scanned:"Äã quét: {{count}}/{{total}}",nextQuestion:"Câu tiếp",prevQuestion:"Câu trưá»c",showResults:"Xem kết quả",endSession:"Kết thúc phiên",confirmEnd:"Kết thúc phiên quét? Kết quả sẽ ÄÆ°á»£c lưu lại.",openScanner:"Má» máy quét",scannerHint:"Má» trên Äiá»n thoại Äá» quét thẻ",projector:"Chiếu lên mà n hình"},results$1={titlePrefix:"Kết quả â",overallRate:"Tá»· lá» Äúng tá»ng thá»",studentScores:"Äiá»m từng há»c sinh",questionAnalysis:"Phân tÃch câu há»i",rank:"Hạng",name:"Há» tên",correct:"Äúng",score:"Äiá»m",export:"Xuất Excel",noResults:"Chưa có kết quả",answerDistribution:"Phân bá» câu trả lá»i",correctRate:"Tá»· lá» Äúng: {{rate}}%"},scan$1={connecting:"Äang kết ná»i...",invalidSession:"Phiên không hợp lá»",sessionEnded:"Phiên Äã kết thúc",cameraError:"Không thá» truy cáºp camera",cameraPermission:"Vui lòng cho phép truy cáºp camera",cameraWaitingHint:'Bấm "Cho phép" á» há»p thoại vừa hiá»n. Camera sẽ tá»± báºt ngay sau Äó.',noPreviewMode:"ð· Máy nà y không hiá»n ÄÆ°á»£c hình xem trưá»c, nhưng vẫn Äang quét bình thưá»ng. Cứ giÆ¡ máy vá» phÃa các em như thưá»ng lá».",tapToStart:"Chạm và o mà n hình Äá» bắt Äầu quét",tapToStartHint:"Camera Äã sẵn sà ng. Ứng dụng Äang má» cần bạn chạm má»t cái Äá» hiá»n hình.",cameraPermissionHint:'Nếu bạn Äã bấm "Cho phép" mà vẫn thấy mà n hình nà y, hãy bấm "Thá» lại". Nếu vẫn không ÄÆ°á»£c, má» trang bằng trình duyá»t Chrome/Safari thay vì Zalo, hoặc và o Cà i Äặt Äiá»n thoại â Ứng dụng â Zalo â Quyá»n â báºt Camera.',cameraBlockedHint:'Quyá»n camera Äang bá» chặn nên bấm "Thá» lại" sẽ không có tác dụng. Cách sá»a: và o Cà i Äặt Äiá»n thoại â Ứng dụng â Zalo â Quyá»n â báºt Camera, rá»i má» lại mã QR. Nhanh hÆ¡n: bấm dấu "..." góc trên bên phải â "Má» bằng trình duyá»t" và dùng Chrome/Safari.',cameraBusy:"Camera Äang ÄÆ°á»£c ứng dụng khác sá» dụng",cameraBusyHint:'Hãy Äóng các ứng dụng Äang dùng camera (máy ảnh, cuá»c gá»i video, ứng dụng quét mã...) rá»i bấm "Thá» lại".',cameraNotFound:"Không tìm thấy camera trên thiết bá» nà y",openInBrowser:{title:"â Cách chắc chắn nhất: má» bằng trình duyá»t",ifStuck:'â³ Chá» lâu hoặc bấm "Cho phép" mà không ÄÆ°á»£c?',step1:"Bưá»c 1: Bấm dấu ⯠(ba chấm) á» góc trên bên phải",step2:'Bưá»c 2: Chá»n "Má» bằng trình duyá»t"',copyLink:"Hoặc chép link, dán và o Chrome/Safari",copied:"Äã chép link â má» Chrome rá»i dán và o"},engineLoading:"Äang chuẩn bá» máy quét...",engineLoadingHint:"Tải bá» nháºn diá»n lần Äầu (khoảng 13MB). Lần sau sẽ nhanh hÆ¡n.",engineInit:"Äang khá»i Äá»ng...",engineError:"Không tải ÄÆ°á»£c bá» nháºn diá»n. Kiá»m tra kết ná»i mạng rá»i thá» lại.",retry:"Thá» lại",questionLabel:"Câu {{current}}/{{total}}",viewingResults:"Äang xem kết quả",finish:"Kết thúc phiên",finishConfirm:"Dừng nháºn quét cho phiên nà y. Và o trang Äiá»u khiá»n Äá» lưu và xem kết quả.",cancel:"Há»§y",endError:"Không kết thúc ÄÆ°á»£c phiên. Thá» lại.",ended:"Äã kết thúc phiên quét",endedHint:"Má» trang Äiá»u khiá»n phiên trên máy tÃnh Äá» lưu và xem kết quả chi tiết.",exit:"Thoát",prevQuestion:"Câu trưá»c",commitReveal:"ð Chá»t câu · Hiá»n Äáp án",commitSurvey:"ð Chá»t câu · Hiá»n ý kiến lá»p",goNextQuestion:"Sang câu {{next}} âº",cardNum:"Thẻ {{num}}",debugLogAria:"Xem nháºt ký chẩn Äoán",noLog:"(chưa có log)",copyLogSuccess:"Äã copy log",copyLogFallback:"Äã copy log (fallback)",cameraDetail:"Chi tiết: {{error}}",remindScreenShown:"â Äã chiếu tên lên mà n hình",remindPendingBtn:"ð Nhắc {{count}} em chưa quét",pendingListAria:"Xem danh sách em chưa quét",stats:{title:"Thá»ng kê câu nà y",answered:"Äã trả lá»i",correctIs:"Äáp án Äúng:",surveyMode:"Khảo sát â không có Äáp án Äúng",showVoters:"Hiá»n thá» ngưá»i chá»n",hideVoters:"Ẩn ngưá»i chá»n"}},sidebar$3={classes:"Lá»p há»c",questionSets:"Bá» câu há»i",results:"Lá»ch sá» quét",print:"In bá» thẻ"}
565,resultsHistory$1={title:"ð Lá»ch sá» quét",sortDateDesc:"Ngà y quét: má»i nhất",sortDateAsc:"Ngà y quét: cÅ© nhất",sortRateDesc:"Tá» lá» Äúng: cao nhất",sortRateAsc:"Tá» lá» Äúng: thấp nhất",sortClassNameAsc:"Tên lá»p: A â Z",deleteAllHistory:"Xóa toà n bá» lá»ch sá» (nên là m Äá» tá»i ưu tá»c Äá»)",loading:"Äang tải...",emptyTitle:"Chưa có lá»ch sá» quét",emptyDesc:"Hãy bắt Äầu quét bá» thẻ Äá» xem kết quả tại Äây.",surveyBadge:"ð Khảo sát",viewResults:"Xem kết quả",deleteTooltip:"Xóa",prevPage:"Trang trưá»c",nextPage:"Trang tiếp",confirmDeleteTitle:"Xóa lá»ch sá» quét",confirmDeleteMsg:"Bạn có chắc chắn muá»n xóa kết quả phiên quét nà y? Hà nh Äá»ng nà y không thá» hoà n tác.",deleting:"Äang xóa...",confirmDeleteAllTitle:"Xóa toà n bá» lá»ch sá» quét",confirmDeleteAllMsg:"Bạn có chắc chắn muá»n xóa TOÃN Bá» lá»ch sá» quét? Hà nh Äá»ng nà y không thá» hoà n tác.",deleteAllBtn:"Xóa toà n bá»"},printGuide$1={guideTitle:"ð¨ï¸ Hưá»ng dẫn sá» dụng In bá» thẻ",guideSubtitle:"Là m theo từng bưá»c dưá»i Äây Äá» tá» chức má»t buá»i kiá»m tra bằng thẻ giấy.",step1Title:"Bưá»c 1: In bá» thẻ ({{count}} thẻ)",step1Desc:'Bấm nút "Tải PDF bá» thẻ" bên dưá»i Äá» tải và in thẻ cho há»c sinh. Bá» thẻ gá»m {{count}} thẻ, Äánh sá» từ 1 Äến {{count}} â nên má»i lá»p dùng tá»i Äa {{count}} há»c sinh. Má»i thẻ có 4 mặt A/B/C/D â há»c sinh xoay thẻ Äá» chá»n Äáp án. Thẻ dùng lại ÄÆ°á»£c cả nÄm, không cần in lại má»i lần kiá»m tra.',step2Title:"Bưá»c 2: Cắt và phát thẻ",step2Desc:"Cắt rá»i từng thẻ theo sá» thứ tá»±, phát Äúng thẻ cho Äúng há»c sinh (theo sá» thẻ Äã gán á» Bưá»c 3).",step3Title:"Bưá»c 3: Tạo lá»p há»c & danh sách há»c sinh",step3Desc:'Và o mục "Lá»p há»c", tạo lá»p và nháºp danh sách há»c sinh (má»i dòng 1 tên, tá»i Äa {{count}} em). Má»i há»c sinh sẽ ÄÆ°á»£c gán 1 sá» thẻ tương ứng vá»i thứ tá»± trong danh sách.',step4Title:"Bưá»c 4: Tạo Bá» câu há»i",step4Desc:'Và o mục "Bá» câu há»i" á» thanh bên, tạo bá» câu há»i trắc nghiá»m cho bà i kiá»m tra. Má»i câu có thá» có 2, 3 hay 4 phương án â vẫn dùng chung bá» thẻ Äã in, không phải in lại. Câu 2 phương án chá» dùng mặt A/B, câu 3 phương án dùng A/B/C; mà n chiếu luôn hiá»n Äúng sá» phương án Äá» há»c sinh biết xoay mặt nà o.',step5Title:"Bưá»c 5: Bắt Äầu quét",step5Desc:'Và o mục "Lá»p há»c", bấm nút "Quét" trên lá»p cần kiá»m tra, chá»n Bá» câu há»i rá»i bắt Äầu. Dùng camera Äiá»n thoại quét thẻ há»c sinh giÆ¡ lên Äá» nháºn Äáp án tá»± Äá»ng.',downloadPdfBtn:"Tải PDF bá» thẻ ({{count}} thẻ)",downloadBackPdfBtn:"Tải PDF mặt sau thẻ (không bắt buá»c)",printConfirmTitle:"Xác nháºn in bá» thẻ",printConfirmMsg:"Bạn có chắc chắn muá»n tải vá» bá» thẻ dưá»i dạng PDF không? Bá» thẻ gá»m {{count}} thẻ (Äánh sá» 1â{{count}}), in ra {{pages}} trang A4.",backPrintDialogTitle:"ð Mặt sau thẻ dùng Äá» là m gì?",backPrintDialogP1:"Äây là phần <b>không bắt buá»c</b>. Bá» thẻ vẫn quét bình thưá»ng nếu bạn chá» in mặt trưá»c.",backPrintDialogP2:"Mặt sau <b>không có mã QR</b>, chá» in 4 chữ A/B/C/D cỡ lá»n kèm mÅ©i tên chá» ra 4 hưá»ng (A á» trên, B bên phải, C bên dưá»i, D bên trái) â <b>Äúng hưá»ng vá»i mã á» mặt trưá»c</b>.",backPrintDialogP3:"Há»c sinh nhìn mặt sau (mặt quay vá» phÃa mình) Äá» biết phải <b>xoay Äáp án nà o lên trên</b>, không phải Äoán mò hay láºt thẻ qua lại.",backPrintDialogP4:'Có sẵn dòng nhắc <i>"Nhá» Äừng che tay và o mã code"</i> â giảm lá»i quét không nháºn.',backPrintDialogP5:"Giáo viên Äứng phÃa sau lá»p nhìn mặt nà y cÅ©ng Äá»c ÄÆ°á»£c Äáp án há»c sinh Äang chá»n.",backPrintDialogP6:"<b>Cách in:</b> file nà y có cùng {{pages}} trang và cùng vá» trà thẻ vá»i mặt trưá»c.",downloadBackBtn:"Tải mặt sau"},tabs$2={questionsTab:"ð Bá» câu há»i",surveysTab:"ð Bá» khảo sát",pageTitle:"Chế Äá» giấy (Quét thẻ)",quotaTrial:"Äã sá» dụng {{current}}/{{limit}} lượt quét",help:"Hưá»ng dẫn",helpVideoTitle:"Hưá»ng dẫn Chế Äá» giấy (Quét thẻ)",helpVideoDesc:"Video hưá»ng dẫn in bá» thẻ, tạo lá»p há»c và quét Äáp án bằng camera.",exportNoStudentError:"Lá»p nà y chưa có há»c sinh nà o Äá» in.",exportError:"Không xuất ÄÆ°á»£c danh sách. Vui lòng thá» lại."},sessionControl$1={questionSetNotFound:"Không tìm thấy Bá» câu há»i",classNotFound:"Không tìm thấy Lá»p há»c",cardName:"Thẻ {{num}}",initError:"Lá»i khá»i tạo phiên",initializing:"Äang khá»i tạo phiên quét...",back:"Quay lại",trialLimitReached:"Äã hết lượt quét dùng thá»",trialLimitMsg:"Bản dùng thá» cho phép {{limit}} lượt quét. Nâng cấp Äá» tiếp tục sá» dụng không giá»i hạn.",backAndUpgrade:"Quay lại & Nâng cấp",summaryLabel:"{{className}} · {{questions}} câu · {{students}} há»c sinh",scanInstructionTitle:"Dùng Äiá»n thoại Äá» quét thẻ há»c sinh",scanInstruction1:"1. Quét mã QR bên cạnh, <strong>hoặc</strong> má» trang <strong>giaoviendoimoi.com/thamgia</strong> rá»i nháºp mã <strong>{{code}}</strong>",scanInstruction2:"2. Cho phép truy cáºp camera trên thiết bá» Äó",sendLinkTitle:"Hoặc gá»i link nà y cho thiết bá» quét:",copy:"Chép",copied:"Äã chép",connectedDevices:"Äã kết ná»i <strong>{{count}}</strong> thiết bá» quét",waitingDevices:"Äang chá» thiết bá» quét kết ná»i...",openScannerPc:"Má» máy quét bằng chÃnh máy tÃnh nà y",openScannerPcDesc:"Không cần cà i ứng dụng â chạy trá»±c tiếp trên trình duyá»t.",reconnectPhone:"Kết ná»i lại Äiá»n thoại",bgmTurnOn:"Báºt nhạc ná»n",bgmTurnOff:"Tắt nhạc ná»n",audioAutoplayOn:"Tá»± phát âm thanh khi chuyá»n câu",audioAutoplayOff:"Tắt tá»± phát âm thanh câu há»i",fontDecrease:"Giảm cỡ chữ",fontIncrease:"TÄng cỡ chữ",restartCountdown:"Äếm lại",fullscreenExit:"Thoát toà n mà n hình",fullscreenEnter:"Toà n mà n hình",scanCodeLabel:"Mã quét",orEnterCode:"Hoặc nháºp mã trên và o trang /thamgia · quét mã QR bên cạnh",timeUp:"HẾT GIá»",questionNum:"Câu {{num}}",surveyOpinions:"ð à kiến cả lá»p",correctIs:"â Äáp án Äúng: {{answer}}",answeredRatio:"{{answered}}/{{total}} Äã trả lá»i",playAudio:"Phát",stopAudio:"Dừng",resizeDragTooltip:"Kéo Äá» chá»nh Äá» rá»ng · Nháy Äúp Äá» Äặt lại",scannedCountRatio:"ð {{scanned}}/{{total}}
565 Äã quét",remindPendingTooltip:"Chiếu tên các em chưa quét lên mà n hình Äá» các em tá»± giÆ¡ lại thẻ",remindPendingBtn:"ð Nhắc {{count}} em chưa quét",remindSingleTooltip:"#{{card}} {{name}} â bấm Äá» chiếu tên nhắc em nà y",allScanned:"Cả lá»p Äã quét xong",remindBanner:"â ï¸ Các em sau hãy giÆ¡ cao thẻ lên",remindDismissHint:"Tên sẽ tá»± biến mất khi em Äó ÄÆ°á»£c quét · Bấm bất kỳ Äâu (hoặc Esc) Äá» Äóng",processing:"â³ Äang xá» lý..."},viPaperMode={page:page$6,dashboard:dashboard$1,createSession:createSession$1,classes:classes$1,roster:roster$1,print:print$1,session:session$1,results:results$1,scan:scan$1,sidebar:sidebar$3,resultsHistory:resultsHistory$1,printGuide:printGuide$1,tabs:tabs$2,sessionControl:sessionControl$1},page$5={title:"Paper Mode",subtitle:"Paper Card Scanning â Plickers Style",description:"Students use pre-printed paper cards, teachers scan with a mobile camera from a distance"},dashboard={title:"My Scanning Sessions",newSession:"New Session",manageClasses:"Manage Classes",noSessions:"No scanning sessions yet",noSessionsDesc:"Create a new session to start scanning paper cards",status:{draft:"Draft",active:"Active",completed:"Completed"},actions:{edit:"Edit",start:"Start Scanning",results:"View Results",duplicate:"Duplicate",delete:"Delete",confirmDelete:"Are you sure you want to delete this session?"}},createSession={title:"Create New Scanning Session",sessionTitle:"Session Title",sessionTitlePlaceholder:"e.g., Math Test Chapter 1",selectClass:"Select Class",selectClassPlaceholder:"Select a class...",noClasses:"No classes available. Please create a class first.",createClass:"Create New Class",addQuestions:"Add Questions",addFromBank:"Add from Question Bank",addManual:"Add Manually",questionCount:"{{count}} questions",save:"Save Session",cancel:"Cancel",errors:{titleRequired:"Please enter a session title",classRequired:"Please select a class",questionsRequired:"At least 1 question is required"}},classes={title:"ð« My Classes",btnAdvanced:"âï¸ Advanced Management",createClass:"Create New Class",className:"Class Name",studentCount:"{{count}} students",noClasses:"No classes yet",noClassesDesc:"Create a new class and add students",actions:{scan:"Scan"},defaultRosterName:"Class Roster",statsSummary:"ð {{questions}} question(s) · ð§âð {{students}} student(s)",dialogEditTitle:"Edit Class: {{name}}",labelStudentList:"Student List (one name per line - can copy from Excel)",placeholderStudentList:`John Doe 566Jane Smith 567Alex Brown`,cardNo:"Card {{number}}",editHint:"Reordering the list updates card numbers â simply project the list so students can swap cards, no re-printing needed.",maxStudentsHint:"Maximum {{max}} students per class.",errorOverLimit:"List contains {{count}} students, exceeding the maximum of {{max}}. Please reduce the list and save again.",btnCancel:"Cancel",btnSave:"Save",btnSaving:"Saving...",successUpdate:"Class updated successfully",errorSave:"Failed to save",errorName:"Please enter class name",description:"The class list is <strong>shared</strong> across all features requiring classes. Click <strong>Scan</strong> to start scoring.",btnCreateFirst:"+ Create First Class",labelStudentCount:"{{count}} students",labelClassName:"Class Name",dialogCreateTitle:"Create New Class",dialogDeleteTitle:"Delete Class",dialogDeleteDesc:"This class will be permanently deleted. This action cannot be undone.",btnConfirmDelete:"Delete",tooltipEdit:"Edit Class",tooltipDelete:"Delete Class",errorMinStudent:"Class must have at least 1 student",errorLoad:"Could not load class list",errorDelete:"Failed to delete",successCreate:"Class created successfully",successDelete:"Class deleted successfully",hintMaxStudents:"One name per line. Maximum {{max}} students per class.",btnExportRoster:"Export Roster",btnExportingRoster:"Exporting...",tooltipExportRoster:"Export Excel: Card # + Student Name",noCardWarning:"List contains {{count}} students, but the PDF set only has {{max}} cards. Students from card #{{max}} onwards have no printed cards."},roster={title:"Student Roster â {{className}}",addStudent:"Add Student",bulkImport:"Bulk Import",cardNumber:"Card Number",studentName:"Student Name",note:"Note",noStudents:"No students yet",noStudents
567Desc:"Add students or import in bulk",actions:{edit:"Edit",delete:"Delete",confirmDelete:"Delete student {{name}}?"},bulkImportModal:{title:"Bulk Import Students",description:"Enter each line: Card Number, Full Name (separated by comma or tab)",placeholder:`1, John Doe 5682, Jane Smith 5693, Alex Brown`,import:"Import",cancel:"Cancel",result:"Imported {{imported}} students, skipped {{skipped}}"}},print={title:"Print Cards â {{className}}",description:"Print 2 A5 cards per A4 page. Cards are reusable year-round.",printButton:"Print Cards",instructions:"Instructions:",step1:"Rotate card so chosen answer points UPWARDS",step2:"A = upright, B = 90° left, C = upside down, D = 90° right",step3:"Teacher scans using phone camera from 2-4m, scanning multiple cards at once",cardLabel:"Card #{{number}} â {{name}}",answerGuide:"A â B â C â D â"},session={scanning:"Scanning",results:"Results",question:"Question {{current}}/{{total}}",scanned:"Scanned: {{count}}/{{total}}",nextQuestion:"Next Question",prevQuestion:"Previous Question",showResults:"Show Results",endSession:"End Session",confirmEnd:"End this scanning session? Results will be saved.",openScanner:"Open Scanner",scannerHint:"Open on mobile phone to scan cards",projector:"Project on Screen"},results={titlePrefix:"Results â",overallRate:"Overall Correct Rate",studentScores:"Student Scores",questionAnalysis:"Question Analysis",rank:"Rank",name:"Name",correct:"Correct",score:"Score",export:"Export Excel",noResults:"No results yet",answerDistribution:"Answer Distribution",correctRate:"Correct rate: {{rate}}%"},scan={connecting:"Connecting...",invalidSession:"Invalid Session",sessionEnded:"Session Ended",cameraError:"Unable to access camera",cameraPermission:"Please grant camera permission",cameraWaitingHint:'Click "Allow" in the prompt. The camera will turn on immediately.',noPreviewMode:"ð· This device cannot render a preview stream, but is scanning normally. Aim device towards students.",tapToStart:"Tap screen to start scanning",tapToStartHint:"Camera is ready. Tap once to display image stream.",cameraPermissionHint:'If you clicked "Allow" but still see this screen, click "Retry" or open in Chrome/Safari.',cameraBlockedHint:"Camera permission is blocked. Please enable Camera permissions in your device settings or open in Chrome/Safari.",cameraBusy:"Camera is in use by another application",cameraBusyHint:'Close other apps using the camera and click "Retry".',cameraNotFound:"No camera found on this device",openInBrowser:{title:"â Recommended: open in browser",ifStuck:"â³ Stuck or prompt not appearing?",step1:"Step 1: Tap ⯠(three dots) in top right corner",step2:'Step 2: Select "Open in Browser"',copyLink:"Or copy link and paste into Chrome/Safari",copied:"Link copied â paste into Chrome"},engineLoading:"Preparing scanner...",engineLoadingHint:"Loading recognition engine (approx. 13MB). Subsequent visits will be faster.",engineInit:"Initializing...",engineError:"Could not load recognition engine. Check internet connection and retry.",retry:"Retry",questionLabel:"Question {{current}}/{{total}}",viewingResults:"Viewing Results",finish:"Finish Session",finishConfirm:"Stop scanning for this session. Open control page to save and review results.",cancel:"Cancel",endError:"Could not end session. Please retry.",ended:"Session Ended",endedHint:"Open session control page on computer to review detailed results.",exit:"Exit",prevQuestion:"Previous Question",commitReveal:"ð Lock & Reveal Answer",commitSurvey:"ð Lock & Show Class Opinions",goNextQuestion:"Next Question {{next}} âº",cardNum:"Card {{num}}",debugLogAria:"View diagnostic log",noLog:"(no logs)",copyLogSuccess:"Copied log",copyLogFallback:"Copied log (fallback)",cameraDetail:"Detail: {{error}}",remindScreenShown:"â Displayed names on screen",remindPendingBtn:"ð Remind {{count}} unscanned students",pendingListAria:"View list of unscanned students",stats:{title:"Stats for this question",answered:"answered",correctIs:"Correct answer:",surveyMode:"Survey â no correct answer",showVoters:"Show Voters",hideVoters:"Hide Voters"}},sidebar$2={classes:"Classes",questionSets:"Question Sets",results:"Scan History",print:"Print Cards"}
569,resultsHistory={title:"ð Scan History",sortDateDesc:"Scan Date: Newest",sortDateAsc:"Scan Date: Oldest",sortRateDesc:"Correct Rate: Highest",sortRateAsc:"Correct Rate: Lowest",sortClassNameAsc:"Class Name: A â Z",deleteAllHistory:"Delete all history (recommended for performance)",loading:"Loading...",emptyTitle:"No scan history yet",emptyDesc:"Start scanning paper cards to see results here.",surveyBadge:"ð Survey",viewResults:"View Results",deleteTooltip:"Delete",prevPage:"Previous Page",nextPage:"Next Page",confirmDeleteTitle:"Delete Scan History",confirmDeleteMsg:"Are you sure you want to delete this scan result? This action cannot be undone.",deleting:"Deleting...",confirmDeleteAllTitle:"Delete All Scan History",confirmDeleteAllMsg:"Are you sure you want to delete ALL scan history? This action cannot be undone.",deleteAllBtn:"Delete All"},printGuide={guideTitle:"ð¨ï¸ Card Printing Guide",guideSubtitle:"Follow the steps below to conduct a paper-card assessment.",step1Title:"Step 1: Print Card Set ({{count}} cards)",step1Desc:'Click "Download Card Set PDF" below to print cards for students. The set contains {{count}} numbered cards (1â{{count}}). Each card has 4 sides (A/B/C/D) â students rotate cards to answer. C
569ards are reusable year-round.',step2Title:"Step 2: Cut and Distribute Cards",step2Desc:"Cut out each card by number and distribute to matching students as assigned in Step 3.",step3Title:"Step 3: Create Class & Roster",step3Desc:'Go to "Classes", create a class and enter student names (one per line, up to {{count}} students). Each student is assigned a card number corresponding to their position in the list.',step4Title:"Step 4: Create Question Set",step4Desc:'Go to "Question Sets" in the sidebar and create multiple-choice questions. Questions can have 2, 3, or 4 options using the same printed cards.',step5Title:"Step 5: Start Scanning",step5Desc:`Go to "Classes", click "Scan" on the target class, select Question Set and start. Use your phone camera to scan students' raised cards automatically.`,downloadPdfBtn:"Download Card Set PDF ({{count}} cards)",downloadBackPdfBtn:"Download Card Back PDF (optional)",printConfirmTitle:"Confirm Print Card Set",printConfirmMsg:"Are you sure you want to download the card set as PDF? Set contains {{count}} cards (numbered 1â{{count}}), printing on {{pages}} A4 pages.",backPrintDialogTitle:"ð What is the card back used for?",backPrintDialogP1:"This is <b>optional</b>. The card set scans normally even if you only print the front side.",backPrintDialogP2:"The back has <b>no QR code</b>, only large letters A/B/C/D with directional arrows aligned with the front.",backPrintDialogP3:"Students look at the back side to know which <b>letter points upwards</b> without guessing.",backPrintDialogP4:'Includes reminder <i>"Do not cover the code with your fingers"</i> to reduce scan errors.',backPrintDialogP5:"Teachers standing at the back of the classroom can also see the selected answers.",backPrintDialogP6:"<b>Printing:</b> this file has the same {{pages}} pages and card positions as the front side.",downloadBackBtn:"Download Card Backs"},tabs$1={questionsTab:"ð Question Sets",surveysTab:"ð Survey Sets",pageTitle:"Paper Mode (Card Scanning)",quotaTrial:"Used {{current}}/{{limit}} scans",help:"Guide",helpVideoTitle:"Paper Mode Guide (Card Scanning)",helpVideoDesc:"Video tutorial on printing cards, creating classes, and scanning answers with camera.",exportNoStudentError:"This class has no students to print.",exportError:"Could not export roster. Please try again."},sessionControl={questionSetNotFound:"Question set not found",classNotFound:"Class not found",cardName:"Card {{num}}",initError:"Session initialization error",initializing:"Initializing scan session...",back:"Back",trialLimitReached:"Trial scan limit reached",trialLimitMsg:"The trial allows {{limit}} scan sessions. Upgrade to continue using without limits.",backAndUpgrade:"Back & Upgrade",summaryLabel:"{{className}} · {{questions}} questions · {{students}} students",scanInstructionTitle:"Use phone to scan student cards",scanInstruction1:"1. Scan the QR code or open <strong>giaoviendoimoi.com/thamgia</strong> and enter code <strong>{{code}}</strong>",scanInstruction2:"2. Allow camera access on that device",sendLinkTitle:"Or send this link to the scanning device:",copy:"Copy",copied:"Copied",connectedDevices:"Connected <strong>{{count}}</strong> scanning device(s)",waitingDevices:"Waiting for scanning device to connect...",openScannerPc:"Open scanner on this computer",openScannerPcDesc:"No installation needed â runs directly in the browser.",reconnectPhone:"Reconnect Phone",bgmTurnOn:"Turn on BGM",bgmTurnOff:"Turn off BGM",audioAutoplayOn:"Autoplay question audio on switch",audioAutoplayOff:"Disable question audio autoplay",fontDecrease:"Decrease font size",fontIncrease:"Increase font size",restartCountdown:"Restart timer",fullscreenExit:"Exit Fullscreen",fullscreenEnter:"Fullscreen",scanCodeLabel:"Scan Code",orEnterCode:"Or enter the code at /thamgia · scan the QR code",timeUp:"TIME UP",questionNum:"Question {{num}}",surveyOpinions:"ð Class Opinions",correctIs:"â Correct Answer: {{answer}}",answeredRatio:"{{answered}}/{{total}} answered",playAudio:"Play",stopAudio:"Stop",resizeDragTooltip:"Drag to resize panel · Double click to reset",scannedCountRatio:"ð {{scanned}}/{{total}} scanned",remindPendingTooltip:"Project names of unscanned students so they can raise the
569ir cards again",remindPendingBtn:"ð Remind {{count}} unscanned students",remindSingleTooltip:"#{{card}} {{name}} â click to remind this student",allScanned:"All students have been scanned",remindBanner:"â ï¸ Please raise your cards high",remindDismissHint:"Names will disappear once scanned · Click anywhere (or Esc) to close",processing:"â³ Processing..."},enPaperMode={page:page$5,dashboard,createSession,classes,roster,print,session,results,scan,sidebar:sidebar$2,resultsHistory,printGuide,tabs:tabs$1,sessionControl},page$4={sidebarTitle:"Sá» dụng á»ng kÃnh",btnStart:"Bắt Äầu",btnUpgradePro:"Mua FullGame",instructions:"Quét và chá»n há»c sinh ngẫu nhiên từ camera",quotaTrial:"Äã dùng: {{current}}/{{limit}} lượt",photoCallCardLabel:"Gá»i tên bằng ảnh",photoCallCardDesc:"Ảnh há»c sinh bay trên mà n hình rá»i dừng lại á» má»t em ngẫu nhiên",photoCallCardBadge:"Không cần camera"},sessionModal$1={title:"Cấu hình gá»i há»c sinh",labelSelectSet:"Bá» câu há»i",labelDuration:"Thá»i gian quét (giây)",noSets:"Không có bá» câu há»i nà o",btnStart:"Bắt Äầu quét",btnCancel:"Há»§y",noQuestionMode:"Không dùng bá» câu há»i",labelQuestionTiming:"Hiá»n câu há»i",timingAfter:"Sau khi chá»n HS",timingAfterDesc:"Quét chá»n há»c sinh trưá»c, câu há»i hiá»n ra sau",timingBefore:"Trưá»c khi chá»n HS",timingBeforeDesc:"Nêu câu há»i cho cả lá»p cùng nghÄ©, rá»i má»i quét chá»n há»c sinh",labelThinkTime:"Thá»i gian suy nghÄ© (giây)",thinkTimeHint:"Äá»ng há» chá» Äá» cả lá»p ưá»c lượng thá»i gian â hết giá» vẫn chá» giáo viên bấm nút.",lockedToOneHint:'Chế Äá» "Trưá»c khi chá»n HS" chá» nêu 1 câu má»i lượt.'},preQuestion$1={banner:"Cả lá»p cùng nghÄ© câu trả lá»i",thinking:"Thá»i gian suy nghÄ©",timeUp:"Hết giá» suy nghÄ©!",btnSkip:"Câu khác"},camera$1={scanning:"Äang quét...",scanningFaces:"{{count}} khuôn mặt",capturing:"Äang chụp lại...",btnCapture:"Chụp ngay",btnRetry:"Thá» lại",guidanceNoFace:"Di chuyá»n camera Äá» thấy khuôn mặt HS",guidanceFewFaces:"Äang thấy Ãt khuôn mặt â thá» hạ thấp camera",guidanceGood:"Tá»t!"},result$2={btnGetQuestion:"Lấy câu há»i ngẫu nhiên",btnRetry:"Quét lại khuôn mặt",btnClose:"Äóng"},question$1={btnNext:"Câu há»i tiếp theo",btnClose:"Äóng"},photoCall$1={classes:{title:"Gá»i tên bằng ảnh",description:'Chá»n lá»p rá»i bấm "Bắt Äầu gá»i tên" â ảnh há»c sinh sẽ bay trên mà n hình và dừng lại á» má»t em ngẫu nhiên.',btnStartCall:"Bắt Äầu gá»i tên",btnBack:"Quay lại",btnAdvanced:"Quản lý nâng cao",btnCreate:"Tạo lá»p má»i",btnCreateFirst:"Tạo lá»p Äầu tiên",emptyTitle:"Chưa có lá»p há»c nà o",emptyDesc:"Tạo lá»p và thêm danh sách há»c sinh Äá» bắt Äầu gá»i tên bằng ảnh.",labelStudentCount:"SÄ© sá»",labelClassName:"Tên lá»p",labelStudentList:"Danh sách há»c sinh",placeholderStudentList:"Má»i dòng má»t tên há»c sinh...",studentCount:"{{count}} há»c sinh",dialogCreateTitle:"Tạo lá»p má»i",dialogEditTitle:"Sá»a lá»p",dialogDeleteTitle:"Xóa lá»p?",dialogDeleteDesc:"Lá»p sẽ bá» xóa vÄ©nh viá»
n cùng toà n bỠảnh há»c sinh. Hà nh Äá»ng nà y không thá» hoà n tác.",btnCancel:"Há»§y",btnSave:"Lưu",btnSaving:"Äang lưu...",btnConfirmDelete:"Xóa",tooltipEdit:"Sá»a lá»p & ảnh há»c sinh",tooltipDelete:"Xóa lá»p",errorName:"Vui lòng nháºp tên lá»p",errorMinStudent:"Cần Ãt nhất 1 há»c sinh",errorLoad:"Không tải ÄÆ°á»£c danh sách lá»p",errorSave:"Không lưu ÄÆ°á»£c lá»p",errorDelete:"Không xóa ÄÆ°á»£c lá»p",successCreate:"Äã tạo lá»p",successUpdate:"Äã cáºp nháºt lá»p",successDelete:"Äã xóa lá»p",hintMaxStudents:"Tá»i Äa {{max}} há»c sinh má»i lá»p",errorOverLimit:"Vượt quá {{max}} há»c sinh"},startModal:{title:"ð¯ Bắt Äầu gá»i tên",titleWithClass:"ð¯ Gá»i tên lá»p {{name}}",classSummary:"SÄ© sá» {{count}} há»c sinh",pageIndicator:"Trang {{page}}/{{total}} · {{count}}
569 bá»",loadingPhotos:"Äang kiá»m tra ảnh há»c sinh...",errorNoPhotos:"Lá»p nà y chưa có ảnh há»c sinh nà o nên chưa gá»i tên ÄÆ°á»£c. Hãy thêm ảnh cho há»c sinh trưá»c.",btnGoManagePhotos:"Thêm ảnh há»c sinh",missingPhotosWarning:"Có {{count}} em chưa có ảnh nên sẽ không tham gia. {{playing}} em có ảnh vẫn chÆ¡i ÄÆ°á»£c.",allPhotosReady:"Cả lá»p {{count}} em Äá»u Äã có ảnh. Sẵn sà ng!",labelSelectSet:"Bá» câu há»i",unitQuestion:"{{count}} câu",noSets:"Chưa có bá» câu há»i nà o",btnCreateNow:"Tạo ngay",labelNone:"Không dùng câu há»i",descNone:"Chá» gá»i tên, không há»i bà i",labelQuestionMode:"Cách lấy câu há»i",modeAll:"Há»i lần lượt cả bá» ({{count}} câu)",modeRandom:"Lấy ngẫu nhiên má»t sá» câu",labelRandomCount:"Sá» câu má»i lượt",countSuffix:"/ {{count}} câu",labelDuration:"Thá»i gian ảnh bay",durationSuffix:"giây",labelNoRepeat:"Không gá»i trùng em Äã gá»i",labelFlyStyle:"Kiá»u bay",mixTooShort:"Kết hợp cần Ãt nhất {{min}} giây Äá» chạy Äá»§ các kiá»u â sẽ tá»± tÄng lên khi bắt Äầu.",flyStyle:{chaos:"Há»n loạn",spiral:"Trôn á»c",bonfire:"Äá»t lá»a",wave:"Sóng",orbit:"Hà nh tinh",figure8:"Sá» 8",pendulum:"Con lắc",mix:"Kết hợp"},labelQuestionTiming:"Hiá»n câu há»i",timingAfter:"Sau khi gá»i tên",timingAfterDesc:"Ảnh bay chá»n há»c sinh trưá»c, câu há»i hiá»n ra sau",timingBefore:"Trưá»c khi gá»i tên",timingBeforeDesc:"Nêu câu há»i cho cả lá»p cùng nghÄ©, rá»i má»i thả ảnh bay",labelThinkTime:"Thá»i gian suy nghÄ© (giây)",thinkTimeHint:"Äá»ng há» chá» Äá» cả lá»p ưá»c lượng thá»i gian â hết giá» vẫn chá» giáo viên bấm nút.",lockedToOneHint:'Chế Äá» "Trưá»c khi gá»i tên" chá» nêu 1 câu má»i lượt.',btnCancel:"Há»§y",btnStart:"Bắt Äầu gá»i tên"},game:{loadingPhotos:"Äang tải ảnh há»c sinh...",btnExit:"Thoát",noEligibleStudents:"Không tải ÄÆ°á»£c ảnh cá»§a em nà o trong lá»p nà y. Hãy kiá»m tra lại ảnh há»c sinh rá»i thá» lại.",loadFailedSkipped:"Äã bá» qua {{count}} em vì không tải ÄÆ°á»£c ảnh"},result:{btnCallAgain:"Gá»i em khác",allCalled:"Äã gá»i hết cả lá»p â bắt Äầu lại từ Äầu"}},viFaceRandom={page:page$4,sessionModal:sessionModal$1,preQuestion:preQuestion$1,camera:camera$1,result:result$2,question:question$1,photoCall:photoCall$1},page$3={sidebarTitle:"Random Picker",btnStart:"Start",btnUpgradePro:"Get FullGame",instructions:"Pick a random student using camera",quotaTrial:"Used: {{current}}/{{limit}} sessions",photoCallCardLabel:"Pick by Photo",photoCallCardDesc:"Student photos fly across the screen, then stop on a random one",photoCallCardBadge:"No camera needed"},sessionModal={title:"Picker Configuration",labelSelectSet:"Question Set",labelDuration:"Scan Duration (seconds)",noSets:"No question sets available",btnStart:"Start Scanning",btnCancel:"Cancel",noQuestionMode:"No Questions (Just scan)",labelQuestionTiming:"Show question",timingAfter:"After picking a student",timingAfterDesc:"Scan and pick a student first, then show the question",timingBefore:"Before picking a student",timingBeforeDesc:"State the question so the whole class thinks, then scan to pick",labelThinkTime:"Thinking time (seconds)",thinkTimeHint:"The timer is only a guide for the class â when it ends, it still waits for you to press the button.",lockedToOneHint:'"Before picking a student" states one question per round.'},preQuestion={banner:"Everyone think of an answer",thinking:"Thinking time",timeUp:"Time's up!",btnSkip:"Another question"},camera={scanning:"Scanning...",scanningFaces:"{{count}} faces",capturing:"Capturing...",btnCapture:"Capture Now",btnRetry:"Retry",guidanceNoFace:"Move camera to see student faces",guidanceFewFaces:"Few faces detected â try lowering camera",guidanceGood:"Good!"},result$1={btnGetQuestion:"Get Random Question",btnRetry:"Scan Again",btnClose:"Close"},question={btnNext:"Next Question",btnClose:"Close"},photoCall={classes:{title:"Pick by Photo",description:'Choose a class and press "Start Picking" â student photos will fly across the screen and stop on a random one.',btnStartCall:"Start Picking",btnBack:"Back",btnAdvanced:"Advanced management",btnCreate:"New class",btnCreateFirst:"Create your first class",emptyTitle:"No classes yet",emptyDesc:"Create a class and add your student list to start picking by photo.",labelStudentCount:"Students",labelClassName:"Class name",labelStudentList:"Student list",placeholderStudentList:"One student name per line...",studentCount:"{{count}} students",dialogCreateTitle:"New class",dialogEditTitle:"Edit class",dialogDeleteTitle:"Delete class?",dialogDeleteDesc:"The class and all its student photos will be permanently deleted. This action cannot be undone.",btnCancel:"Cancel",btnSave:"Save",btnSaving:"Saving...",btnConfirmDelete:"Delete",tooltipEdit:"Edit class & student photos",tooltipDelete:"Delete class",errorName:"Please enter a class name",errorMinStudent:"At least 1 student is required",errorLoad:"Could not load your classes",errorSave:"Could not save the class",errorDelete:"Could not delete the class",successCreate:"Class created",successU
569pdate:"Class updated",successDelete:"Class deleted",hintMaxStudents:"Up to {{max}} students per class",errorOverLimit:"More than {{max}} students"},startModal:{title:"ð¯ Start Picking",titleWithClass:"ð¯ Pick from {{name}}",classSummary:"{{count}} students",pageIndicator:"Page {{page}}/{{total}} · {{count}} sets",loadingPhotos:"Checking student photos...",errorNoPhotos:"This class has no student photos yet, so picking isn't possible. Please add photos first.",btnGoManagePhotos:"Add student photos",missingPhotosWarning:"{{count}} student(s) have no photo and will sit this one out. The {{playing}} with photos can still play.",allPhotosReady:"All {{count}} students have a photo. Ready to go!",labelSelectSet:"Question set",unitQuestion:"{{count}} questions",noSets:"No question sets yet",btnCreateNow:"Create one",labelNone:"No questions",descNone:"Just pick a student, no quiz",labelQuestionMode:"How to draw questions",modeAll:"Go through the whole set ({{count}} questions)",modeRandom:"Draw a few at random",labelRandomCount:"Questions per turn",countSuffix:"/ {{count}} questions",labelDuration:"Flying time",durationSuffix:"seconds",labelNoRepeat:"Don't pick the same student twice",labelFlyStyle:"Motion style",mixTooShort:"Mixed needs at least {{min}} seconds to fit every style â it will be raised when you start.",flyStyle:{chaos:"Chaos",spiral:"Spiral",bonfire:"Bonfire",wave:"Waves",orbit:"Planets",figure8:"Figure 8",pendulum:"Pendulum",mix:"Mixed"},labelQuestionTiming:"Show question",timingAfter:"After picking a student",timingAfterDesc:"Let the photos fly and pick a student first, then show the question",timingBefore:"Before picking a student",timingBeforeDesc:"State the question so the whole class thinks, then release the photos",labelThinkTime:"Thinking time (seconds)",thinkTimeHint:"The timer is only a guide for the class â when it ends, it still waits for you to press the button.",lockedToOneHint:'"Before picking a student" states one question per round.',btnCancel:"Cancel",btnStart:"Start Picking"},game:{loadingPhotos:"Loading student photos...",btnExit:"Exit",noEligibleStudents:"None of this class's photos could be loaded. Please check the student photos and try again.",loadFailedSkipped:"Skipped {{count}} student(s) whose photo failed to load"},result:{btnCallAgain:"Pick another",allCalled:"Everyone has been picked â starting over"}},enFaceRandom={page:page$3,sessionModal,preQuestion,camera,result:result$1,question,photoCall},pageTitle$6="ð Cuá»c Äua ngôi sao",myGames$7="Game cá»§a tôi",createNew$6="Tạo game má»i",games$2="Games",create$2="Tạo má»i",guide$5="Hưá»ng dẫn",guideDesc$5="Game Äá»i kháng 2 Äá»i dùng hand detection. GiÆ¡ 1/2/3/4 ngón tay Äá» chá»n Äáp án A/B/C/D.",myStarBags$2={title:"Game Cuá»c Äua ngôi sao ({{count}})",pinBanner:"Ghim bà i Äá» truy cáºp khi hết hạn gói",pinnedCount:"({{pinned}}/{{limit}} Äã ghim)",expired:"â ï¸ Gói Äã hết hạn!",renew:"Gia hạn",demoTitle:"Cuá»c Äua Ngôi Sao - Bản Chạy Thá»",demoBadge:"Bản chạy thá»",demoDesc:"ChÆ¡i thá» Äá» trải nghiá»m tÃnh nÄng trưá»c khi tạo bà i cá»§a bạn",playTest:"ChÆ¡i thá»",createFirst:"Tạo game Äầu tiên",questionCount:"{{count}} câu",starCount:"â {{stars}} sao",timeSec:"{{time}}s",pinTip:"Ghim bà i Äá» tiếp tục sá» dụng",edit:"Sá»a",assign:"Giao bà i",share:"Chia sẻ GV",delete:"Xóa",prev:"â Trưá»c",page:"Trang {{page}}",next:"Tiếp â¶",loading:"Äang tải...",loadError:"Không thá» tải danh sách game",deleteConfirm:"Xóa game nà y?",deleted:"Äã xóa game",deleteError:"Lá»i khi xóa game",pinLimit:"Äã Äạt giá»i hạn ghim ({{limit}} bà i)",unpinned:"Äã bá» ghim",pinned:"Äã ghim bà i"},form$8={editTitle:"Chá»nh sá»a",createTitle:"Tạo game",gameName:"Tên game",gameNamePlaceholder:"VD: Bà i há»c ngữ pháp",config:"Cấu hình game",timeLimit:"Thá»i gian",totalStars:"Sá» sao trong túi (1â50)",freezeTime:"Äóng bÄng khi sai",sec:"{{time}} giây",min:"{{time}} phút",team1:"Tên Äá»i A",team1Placeholder:"Ngưá»i chÆ¡i bên trái",team2:"Tên Äá»i B",team2Placeholder:"Ngưá»i chÆ¡i bên phải",bgm:"Nhạc ná»n",bgmDefault:"Mặc Äá»nh",bgmTrack:"Nhạc {{num}}",bgmCustom:"Nhạc riêng:",questions:"Câu há»i ({{count}})",clearAll:"Xóa tất cả",selectBank:"Chá»n từ Kho hoặc AI",selectLesson:"ð Từ bà i Äã có",manual:"Nháºp thá»§ công",questionWarning:"Sá» lượng câu há»i phải bằng vá»i sá» ngôi sao ({{count}} câu). Má»i câu cần Äúng 4 Äáp án A/B/C/D (giÆ¡ 1/2/3/4 ngón tay).",qFontSize:"Cỡ chữ câu há»i:",aFontSize:"Cỡ chữ Äáp án:",fsSmall:"Bé",fsMedium:"Chuẩn",fsLarge:"Lá»n",fsXLarge:"Rất lá»n",fsXXLarge:"Cá»±c Äại",fsNote:"Ãp dụng cho câu chưa chá»nh riêng",qList:"Danh sách câu há»i",aCount:"{{count}} Äáp án",noQuestions:"Chưa có câu há»i nà o",addQuestionsHint:"Thêm câu từ ngân hà ng hoặc nháºp tay",saving:"Äang lưu...",save:"Lưu game",emptyName:"Vui lòng nháºp tên game",invalidQuestions:"Sá» lượng câu há»i ({{count}}) phải bằng Äúng sá» ngôi sao trong túi ({{totalStars}})",publishError:"Vui lòng chá»n cấp báºc, môn há»c và khá»i lá»p Äá» ÄÆ°a lên Thư viá»n cá»ng Äá»
569ng",saveSuccessEdit:"Äã cáºp nháºt game!",saveSuccessCreate:"Äã tạo game!",snapshotLarge:"Bà i quá lá»n, không thá» ÄÆ°a lên Thư viá»n cá»ng Äá»ng. Bà i Äã ÄÆ°á»£c lưu thà nh công.",limitReached:"Äã Äạt giá»i hạn tạo game",errorPrefix:"Lá»i: {{message}}",deleteConfirmQ:"Xóa toà n bá» câu há»i?",deletedAllQ:"Äã xóa tất cả câu há»i",deletedQ:"Äã xóa câu {{num}}",qUpdated:"Äã cáºp nháºt câu há»i",qAdded:"Äã thêm {{count}} câu (tá»ng: {{total}})",starLimitReached:"Äã Äá»§ {{totalStars}} câu há»i. Không thá» thêm má»i.",starLimitAdded:"Chá» thêm ÄÆ°á»£c {{added}} câu do Äã Äạt giá»i hạn {{totalStars}} ngôi sao",noQuestionAdded:"Không thêm ÄÆ°á»£c câu nà o (Äã bá» qua {{skipped}})",lessonAdded:'Äã thêm {{added}} câu từ "{{title}}" (bá» {{skipped}})'},player$5={loading:"Äang tải...",finger1:"1 ngón",finger2:"2 ngón",finger3:"3 ngón",finger4:"4 ngón",freezeLabel:"giây Äóng bÄng",end:"ð Kết thúc!",draw:"ð¤ Hòa!",winnerLabel:"Äá»i thắng",totalBag:"Tá»ng túi: {{stars}} sao",viewReport:"ð Xem báo cáo",exit:"Thoát",reportTitle:"ð Báo cáo kết quả",winBadge:"ð {{name}} thắng",close:"â Äóng",teamStats:"â {{name}} ({{stars}} sao)",noAnswers:"Chưa trả lá»i câu nà o",qNum:"Câu {{num}}",chosen:"Äã chá»n:",image:"(hình ảnh)",correctHint:"Äáp án Äúng: {{answers}}",notFound:"Không tìm thấy game",backHome:"Vá» trang chá»§"},viStarBagGame={pageTitle:pageTitle$6,myGames:myGames$7,createNew:createNew$6,games:games$2,create:create$2,guide:guide$5,guideDesc:guideDesc$5,myStarBags:myStarBags$2,form:form$8,player:player$5},pageTitle$5="ð Star Bag Race",myGames$6="My Games",createNew$5="Create Game",games$1="Games",create$1="Create",guide$4="Guide",guideDesc$4="2-team versus game using hand detection. Raise 1/2/3/4 fingers to select answer A/B/C/D.",myStarBags$1={title:"Star Bag Games ({{count}})",pinBanner:"Pin games to access them when subscription expires",pinnedCount:"({{pinned}}/{{limit}} pinned)",expired:"â ï¸ Subscription expired!",renew:"Renew",demoTitle:"Star Bag - Demo Run",demoBadge:"Demo",demoDesc:"Try it out before creating your own games",playTest:"Play Demo",createFirst:"Create first game",questionCount:"{{count}} questions",starCount:"â {{stars}} stars",timeSec:"{{time}}s",pinTip:"Pin to keep using",edit:"Edit",assign:"Assign",share:"Share",delete:"Delete",prev:"â Prev",page:"Page {{page}}",next:"Next â¶",loading:"Loading...",loadError:"Could not load games list",deleteConfirm:"Delete this game?",deleted:"Game deleted",deleteError:"Error deleting game",pinLimit:"Pin limit reached ({{limit}} games)",unpinned:"Unpinned",pinned:"Pinned game"},form$7={editTitle:"Edit Game",createTitle:"Create Game",gameName:"Game name",gameNamePlaceholder:"E.g: Grammar Lesson",config:"Game Configuration",timeLimit:"Time limit",totalStars:"Total stars in bag (1â50)",freezeTime:"Wrong answer freeze",sec:"{{time}} seconds",min:"{{time}} minutes",team1:"Team A Name",team1Placeholder:"Left player",team2:"Team B Name",team2Placeholder:"Right player",bgm:"Background Music",bgmDefault:"Default",bgmTrack:"Track {{num}}",bgmCustom:"Custom:",questions:"Questions ({{count}})",clearAll:"Clear all",selectBank:"Select from Bank/AI",selectLesson:"ð From existing lesson",manual:"Manual input",questionWarning:"Number of questions must equal the number of stars ({{count}}). Each question requires exactly 4 answers A/B/C/D (to correspond to 1/2/3/4 fingers).",qFontSize:"Question font size:",aFontSize:"Answer font size:",fsSmall:"Small",fsMedium:"Standard",fsLarge:"Large",fsXLarge:"Extra Large",fsXXLarge:"Huge",fsNote:"Applies to default questions",qList:"Question List",aCount:"{{count}} answers",noQuestions:"No questions yet",addQuestionsHint:"Add questions from bank or manually",saving:"Saving...",save:"Save Game",emptyName:"Please enter game name",invalidQuestions:"Number of questions ({{count}}) must equal the stars in the bag ({{totalStars}})",publishError:"Please select level, subject and grade to publish to Community Library",saveSuccessEdit:"Game updated!",saveSuccessCreate:"Game created!",snapshotLarge:"Game is too large to publish to Community Library. It was saved locally.",limitReached:"Game creation limit reached",errorPrefix:"Error: {{message}}",deleteConfirmQ:"Delete all questions?",deletedAllQ:"All questions deleted",deletedQ:"Deleted question {{num}}",qUpdated:"Question updated",qAdded:"Added {{count}} questions (total: {{total}})",starLimitReached:"Reached limit of {{totalStars}} questions. Cannot add more.",starLimitAdded:"Only added {{added}} questions due to limit of {{totalStars}} stars",noQuestionAdded:"Could not add any questions (skipped {{skipped}})",lessonAdded:'Added {{added}} questions from "{{title}}" (skipped {{skipped}})'},player$4={loading:"Loading...",finger1:"1 finger",finger2:"2 fingers",finger3:"3 fingers",finger4:"4 fingers",freezeLabel:"sec freeze",end:"ð Finished!",draw:"ð¤ Draw!",winnerLabel:"Winner",totalBag:"Total bag: {{stars}} stars",viewReport:"ð View Report",exit:"Exit",reportTitle:"ð Result Report",winBadge:"ð {{name}} wins",close:"â Close",teamStats:"â {{name}} ({{stars}} stars)",noAnswers:"No answers yet",qNum:"Q{{num}}",chosen:"Chosen:",image:"(image)",correctHint:"Correct answer: {{answers}}",notFound:"Game not found",backHome:"Back to Home"},enStarBagGame={pageTitle:pageTitle$5,myGames:myGames$6,createNew:createNew$5,games:games$1,create:create$1,guide:guide$4,guideDe
569sc:guideDesc$4,myStarBags:myStarBags$1,form:form$7,player:player$4},pageTitle$4="Game tá»± tạo",myGames$5="Bà i cá»§a tôi",createNew$4="Tạo má»i",editGame$2="Chá»nh sá»a game",titleLabel$3="Tên game",titlePlaceholder$3="Nháºp tên game...",htmlLabel$2="Mã HTML",htmlPlaceholder$2="Dán mã HTML game cá»§a bạn và o Äây...",previewBtn$2="Xem trưá»c",previewLabel$2="Xem trưá»c",saveBtn$2="Lưu game",saving$3="Äang lưu...",cancel$3="Há»§y",saveSuccess$2="Äã lưu game thà nh công",saveError$2="Lá»i khi lưu game",deleteConfirm$2="Bạn có chắc muá»n xóa game nà y không?",deleteSuccess$3="Äã xóa game",deleteError$2="Lá»i khi xóa game",errorLoading$3="Lá»i khi tải danh sách game",loadingGames$2="Äang tải...",doneBtn$2="Äã hoà n thà nh",loadingGame$2="Äang tải game...",gameNotFound$2="Không tìm thấy game hoặc bà i táºp Äã hết hạn.",securityNote$2="ð Game chạy trong môi trưá»ng cách ly an toà n â không thá» truy cáºp dữ liá»u trang web",htmlSizeWarning$2="Mã HTML quá lá»n (giá»i hạn 500KB)",titleRequired$2="Vui lòng nháºp tên game",htmlRequired$2="Vui lòng nháºp mã HTML",assign$3="Giao bà i",playTest$2="Chạy thá»",createFirstGame$2="Tạo game Äầu tiên",packageExpired$3="Gói Pro Äã hết hạn.",extendSubscription$3="Gia hạn",lockedTip$3="Bà i nà y Äã bá» khóa do gói Pro hết hạn. Ghim bà i hoặc gia hạn Äá» má» khóa.",aiCreateBtn$2="Tạo game bằng AI â¨",aiCreateHint$2="Má» AI Studio Äá» tạo mã HTML game tá»± Äá»ng â dán kết quả và o ô bên dưá»i",uploadHtmlBtn$2="Tải lên file HTML",uploadInvalidType$2="Chá» chấp nháºn file .html hoặc .htm",downloadHtml$2="Tải file HTML vá» máy",guide$3="Hưá»ng dẫn sá» dụng",guideDesc$3="Hưá»ng dẫn cách tạo và nhúng game HTML tùy chá»nh và o bà i giảng.",demo$4={title:"Game HTML - Bản Chạy Thá»",badge:"Bản chạy thá»",hint:"Äây chá» là 1 bản chạy thá», bạn có thá» tạo ra những game hoà n toà n khác vá»i giao diá»n khác nhau"},viHtmlEmbedGame={pageTitle:pageTitle$4,myGames:myGames$5,createNew:createNew$4,editGame:editGame$2,titleLabel:titleLabel$3,titlePlaceholder:titlePlaceholder$3,htmlLabel:htmlLabel$2,htmlPlaceholder:htmlPlaceholder$2,previewBtn:previewBtn$2,previewLabel:previewLabel$2,saveBtn:saveBtn$2,saving:saving$3,cancel:cancel$3,saveSuccess:saveSuccess$2,saveError:saveError$2,deleteConfirm:deleteConfirm$2,deleteSuccess:deleteSuccess$3,deleteError:deleteError$2,errorLoading:errorLoading$3,loadingGames:loadingGames$2,doneBtn:doneBtn$2,loadingGame:loadingGame$2,gameNotFound:gameNotFound$2,securityNote:securityNote$2,htmlSizeWarning:htmlSizeWarning$2,titleRequired:titleRequired$2,htmlRequired:htmlRequired$2,assign:assign$3,playTest:playTest$2,createFirstGame:createFirstGame$2,packageExpired:packageExpired$3,extendSubscription:extendSubscription$3,lockedTip:lockedTip$3,aiCreateBtn:aiCreateBtn$2,aiCreateHint:aiCreateHint$2,uploadHtmlBtn:uploadHtmlBtn$2,uploadInvalidType:uploadInvalidType$2,downloadHtml:downloadHtml$2,guide:guide$3,guideDesc:guideDesc$3,demo:demo$4},pageTitle$3="Custom Game",myGames$4="My Games",createNew$3="Create New",editGame$1="Edit Game",titleLabel$2="Game Title",titlePlaceholder$2="Enter game title...",htmlLabel$1="HTML Code",htmlPlaceholder$1="Paste your game HTML code here...",previewBtn$1="Preview",previewLabel$1="Preview",saveBtn$1="Save Game",saving$2="Saving...",cancel$2="Cancel",saveSuccess$1="Game saved successfully",saveError$1="Error saving game",deleteConfirm$1="Are you sure you want to delete this game?",deleteSuccess$2="Game deleted",deleteError$1="Error deleting game",errorLoading$2="Error loading games",loadingGames$1="Loading...",doneBtn$1="Done",loadingGame$1="Loading game...",gameNotFound$1="Game not found or assignment has expired.",securityNote$1="ð Game runs in a secure isolated environment â cannot access website data",htmlSizeWarning$1="HTML code is too large (500KB limit)",titleRequired$1="Please enter a game title",htmlRequired$1="Please enter HTML code",assign$2="Assign",playTest$1="Play Test",createFirstGame$1="Create your first game",packageExpired$2="FullGame subscription has expired.",extendSubscription$2="Renew",lockedTip$2="This game is locked because your FullGame subscription expired. Pin it or renew to unlock.",aiCreateBtn$1="Create game with AI â¨",aiCreateHint$1="Open AI Studio to generate HTML game code automatically â paste the result below",uploadHtmlBtn$1="Upload HTML file",uploadInvalidType$1="Only .html or .htm files are accepted",downloadHtml$1="Download HTML file",guide$2="User Guide",guideDe
569sc$2="Learn how to create and embed custom HTML games into your lessons.",demo$3={title:"HTML Game - Demo",badge:"Demo",hint:"Try it out to experience the feature before creating your own game"},enHtmlEmbedGame={pageTitle:pageTitle$3,myGames:myGames$4,createNew:createNew$3,editGame:editGame$1,titleLabel:titleLabel$2,titlePlaceholder:titlePlaceholder$2,htmlLabel:htmlLabel$1,htmlPlaceholder:htmlPlaceholder$1,previewBtn:previewBtn$1,previewLabel:previewLabel$1,saveBtn:saveBtn$1,saving:saving$2,cancel:cancel$2,saveSuccess:saveSuccess$1,saveError:saveError$1,deleteConfirm:deleteConfirm$1,deleteSuccess:deleteSuccess$2,deleteError:deleteError$1,errorLoading:errorLoading$2,loadingGames:loadingGames$1,doneBtn:doneBtn$1,loadingGame:loadingGame$1,gameNotFound:gameNotFound$1,securityNote:securityNote$1,htmlSizeWarning:htmlSizeWarning$1,titleRequired:titleRequired$1,htmlRequired:htmlRequired$1,assign:assign$2,playTest:playTest$1,createFirstGame:createFirstGame$1,packageExpired:packageExpired$2,extendSubscription:extendSubscription$2,lockedTip:lockedTip$2,aiCreateBtn:aiCreateBtn$1,aiCreateHint:aiCreateHint$1,uploadHtmlBtn:uploadHtmlBtn$1,uploadInvalidType:uploadInvalidType$1,downloadHtml:downloadHtml$1,guide:guide$2,guideDesc:guideDesc$2,demo:demo$3},pageTitle$2="WÅasna Gra",myGames$3="Moje Gry",createNew$2="Utwórz NowÄ
",editGame="Edytuj GrÄ",titleLabel$1="TytuÅ Gry",titlePlaceholder$1="Wpisz tytuÅ gry...",htmlLabel="Kod HTML",htmlPlaceholder="Wklej tutaj kod HTML swojej gry...",previewBtn="PodglÄ
d",previewLabel="PodglÄ
d",saveBtn="Zapisz GrÄ",saving$1="Zapisywanie...",cancel$1="Anuluj",saveSuccess="Gra zapisana pomyÅlnie",saveError="BÅÄ
d podczas zapisywania gry",deleteConfirm="Czy na pewno chcesz usunÄ
Ä tÄ grÄ?",deleteSuccess$1="Gra usuniÄta",deleteError="BÅÄ
d podczas usuwania gry",errorLoading$1="BÅÄ
d Åadowania gier",loadingGames="Åadowanie...",doneBtn="Gotowe",loadingGame="Åadowanie gry...",gameNotFound="Nie znaleziono gry lub zadanie wygasÅo.",securityNote="ð Gra dziaÅa w bezpiecznym izolowanym Årodowisku â nie ma dostÄpu do danych strony",htmlSizeWarning="Kod HTML jest zbyt duży (limit 500KB)",titleRequired="ProszÄ wpisaÄ tytuÅ gry",htmlRequired="ProszÄ wpisaÄ kod HTML",assign$1="Przydziel",playTest="Test",createFirstGame="Utwórz swojÄ
pierwszÄ
grÄ",packageExpired$1="Subskrypcja FullGame wygasÅa.",extendSubscription$1="Odnów",lockedTip$1="Ta gra jest zablokowana, ponieważ subskrypcja FullGame wygasÅa. Przypnij lub odnów, aby odblokowaÄ.",aiCreateBtn="Utwórz grÄ z AI â¨",aiCreateHint="Otwórz AI Studio, aby automatycznie wygenerowaÄ kod HTML gry â wklej wynik poniżej",uploadHtmlBtn="PrzeÅlij plik HTML",uploadInvalidType="Akceptowane sÄ
tylko pliki .html lub .htm",downloadHtml="Pobierz plik HTML",guide$1="Przewodnik użytkownika",guideDesc$1="Dowiedz siÄ, jak tworzyÄ i osadzaÄ wÅasne gry HTML w lekcjach.",demo$2={title:"Gra HTML - Demo",badge:"Demo",hint:"Wypróbuj, aby poznaÄ funkcjÄ przed stworzeniem wÅasnej gry"},plHtmlEmbedGame={pageTitle:pageTitle$2,myGames:myGames$3,createNew:createNew$2,editGame,titleLabel:titleLabel$1,titlePlaceholder:titlePlaceholder$1,htmlLabel,htmlPlaceholder,previewBtn,previewLabel,saveBtn,saving:saving$1,cancel:cancel$1,saveSuccess,saveError,deleteConfirm,deleteSuccess:deleteSuccess$1,deleteError,errorLoading:errorLoading$1,loadingGames,doneBtn,loadingGame,gameNotFound,securityNote,htmlSizeWarning,titleRequired,htmlRequired,assign:assign$1,playTest,createFirstGame,packageExpired:packageExpired$1,extendSubscription:extendSubscription$1,lockedTip:lockedTip$1,aiCreateBtn,aiCreateHint,uploadHtmlBtn,uploadInvalidType,downloadHtml,guide:guide$1,guideDesc:guideDesc$1,demo:demo$2},cancel="Anuluj",save="Zapisz",nav$1={home:"Strona GÅówna",aiTools:"NarzÄdzia AI",questionBank:"Baza PytaÅ",activities:"AktywnoÅci",assignments:"Zadania",community:"SpoÅecznoÅÄ",join:"DoÅÄ
cz",bugReport:"ZgÅoÅ BÅÄ
d",logout:"Wyloguj",logoName:"Innowacyjny Nauczyciel",logoTitle:"ð Innowacyjny Nauczyciel"},header={upgradePro:"Kup FullGame",upgradePro_short:"FullGame",proAccount:"Konto FullGame",proAccount_short:"FullGame",forever:"FullGame Na Zawsze",forever_short:"Zawsze",daysPro:"PozostaÅo {{days}} dni FullGame",daysPro_short:"{{days}}d FullGame",logoutBtn:"Wyloguj"},proModal={title:"â ODBLOKUJ WSZYSTKIE NARZÄDZIA NA ZAWSZE",description:"Możesz ulepszyÄ caÅe konto lub kupiÄ dostÄp tylko do wybranych narzÄdzi!",descriptionNote:"KupujÄ
c Pakiet Gold, otrzymujesz dożywotni dostÄp (LIFETIME) do wszystkich narzÄdzi...",price:"ð° PeÅny Pakiet",bankLabel:"ð¦ Bank:",accountLabel:"
569ð± Numer konta:",ownerLabel:"ð¤ Odbiorca:",contentLabel:"ð TytuÅ przelewu:",alertTitle:"â ï¸ Po dokonaniu pÅatnoÅci wyÅlij wiadomoÅÄ do administratorów, aby rÄcznie aktywowaÄ pakiet:",contactInfo:"ð 0363.357.745 | ð¬",zaloLink:"Aplikacja Zalo",benefitsTitle:"â
KorzyÅci z konta FullGame:",offlineWarning:"Ta pÅatnoÅÄ NIE DOTYCZY wersji Offline (na komputer)!",benefit1:"Twórz nielimitowanÄ
liczbÄ projektów o dowolnej wielkoÅci",benefit2:"Brak limitów na generowanie odpowiedzi przez AI",benefit3:"MożliwoÅÄ wgrywania wÅasnych plików audio i raportów gÅosowych",closeBtn:"Zamknij",contactAdmin:"Kontakt z Adminem"},upgradeModal={title:"ð« OsiÄ
gniÄto limit wersji darmowej",offlineTitle:"Kup wersjÄ Offline do użytku bez internetu w szkole",freeLimit:"Wersja darmowa pozwala na zapisanie tylko",differentClasses:"elementów w klasie",unlockRequired:"Ta funkcja wymaga konta FullGame. DziÄkujemy za wspieranie platformy!",upgradeHint:"ð¡ Aby kontynuowaÄ korzystanie z {{name}}, przejdź na plan FullGame:",aiUnlockHint:"ð¡ Wykup dostÄp dożywotni (LIFETIME) do narzÄdzi AI:",transferLabel:"W tytule przelewu wpisz poniższy kod:",waitingPayment:"Oczekiwanie na potwierdzenie pÅatnoÅci przez serwer...",contactTitle:"â ï¸ Po zapÅaceniu poinformuj nas przez Support (Zalo):",closeBtn:"Zamknij",contactBtn:"Konsultant Live",reloadBtn:"â
ZapÅacone - OdÅwież system",offlineBenefitTitle:"Pobierz wersjÄ instalacyjnÄ
na dysk, która nie wymaga internetu",offlineGuide:"Zobacz przewodnik wideo po wersji Offline",here:"tutaj.",offlineWarning:"UWAGA: Wersja Offline może posiadaÄ pewne ograniczenia funkcjonalne w porównaniu do wersji przeglÄ
darkowej Live.",clickToView:"Kliknij, aby obejrzeÄ wideo",evaluationYear:"â³ Subskrypcja na {{selectedYears}} rok/lata (ważna do {{date}})",proPlanBenefit:"â¾ï¸ KONTO FullGame: {{price}} / rok â przelej {{price2x}}, aby kupiÄ na 2 lata ze zniżkÄ
",expiryWarning:"â ï¸ Po wygaÅniÄciu tylko {{count}} przypiÄtych (ð) lekcji pozostanie dostÄpnych â pozostaÅe zostanÄ
zablokowane.",expiryWarningNoAudio:"ð« Ten moduÅ nie obsÅuguje funkcji audio ani raportów graficznych",promoPlaceholder:"Kod promocyjny...",deleteBtn:"UsuÅ",applyBtn:"Zastosuj",selectYears:"ð¡ Wybierz liczbÄ lat do odnowienia subskrypcji:",years:"lat",tempAccess:{aiTitle:"ð¤ Zakup narzÄdzi AI",offlineTitle:"ð¾ Pobierz wersjÄ Offline",aiContact:"Skontaktuj siÄ z nami, jeÅli masz problem z pÅatnoÅciÄ
",offlineContact:"ZadzwoÅ, aby zamówiÄ wersjÄ instalacyjnÄ
na komputer:",zaloLabel:"ð Zalo: 0363.357.745",zaloName:"(Kontakt osobisty)",openZalo:"Otwórz Zalo",close:"Zamknij"},offlineWarningDialog:{title:"â ï¸ WAÅ»NE INFORMACJE O WERSJI OFFLINE",pptWarning:"To nie jest prezentacja PowerPoint (.pptx). To samodzielna aplikacja.",usageNote:"* ModuÅ ten pozwala na pracÄ bez internetu (WIFI) w szkole, ale ma swoje wymagania:",dataNoteTitle:"BEZPIECZEÅSTWO DANYCH:",dataNote1:"Dane nie sÄ
automatycznie synchronizowane z wersjÄ
online.",dataNote2:"Formatowanie dysku spowoduje utratÄ lokalnych projektów.",dataNote3:"Aby przenieÅÄ dane, musisz użyÄ funkcji eksportu/importu plików .json.",dataNote4:"Zalecamy przechowywanie folderu aplikacji na partycji innej niż systemowa.",limitationsTitle:"OGRANICZENIA WERSJI OFFLINE:",limitationsDesc:"Ze wzglÄdu na brak poÅÄ
czenia z {{url}}, wersja ta nie obsÅuguje:",limit1:"Gry online z uczniami przez link (brak serwera czasu rzeczywistego).",limit2:"Automatycznej kopii zapasowej w chmurze.",limit3:"Raportów z prac domowych i statystyk klasowych.",limit4:"Wizualnego edytora formuÅ matematycznych KaTeX (podglÄ
d tylko tekstowy).",limit5:"Niektórych niestandardowych czcionek ze wzglÄdów wydajnoÅciowych.",gotIt:"Rozumiem"},keepTransferNote:"NIE ZMIENIAJ TYTUÅU PRZELEWU (MUSI BYÄ DOKÅADNIE TAKI JAK POWYÅ»EJ)"},internationalModal={title:"⨠FullGame PLAN - $12/Rok",description:"Odblokuj wszystkie narzÄdzia do nauczania interaktywnego.",pricingTitle:"Co otrzymujesz:",features:["Twórz nieograniczonÄ
liczbÄ lekcji ze WSZYSTKIMI narzÄdziami","Nagrywaj i przesyÅaj audio do treÅci lekcji","SzczegóÅowe raporty postÄpów uczniów","NarzÄdzia AI Grupy 1 na zawsze (Plany lekcji, Strategie nauczania, Pisanie badaÅ)","Lekcje przechowywane na staÅe w chmurze"],howToTitle:"Jak siÄ zapisaÄ:",step1:"Kliknij przycisk pÅatnoÅci poniżej.",step2:"Wprowadź kwotÄ: $12.",step3:'â ï¸ WAÅ»NE: W polu wiadomoÅci ("Say something nice..." w BMAC) wpisz adres e-mail swojego konta na tej stronie.',note:"Konto zostanie rÄcznie zaktualizowane w ciÄ
gu 24 godzin od pÅatnoÅci.",payBtn:"ZapÅaÄ przez Buy Me a Coffee â",closeBtn:"Zamknij",hasVnAccount:"Czy masz wietnamskie konto bankowe?"},language={switchTo:"VI",current:"PL",dateLocale:"pl-PL"},externalTools={title:"NarzÄdzia zewnÄtrzne",warning:"Uwaga: Subskrypcje Innowacyjnego Nauczyciela dotyczÄ
tylko tej platformy.",accessTooltip:"Przejdź do: {{name}}",categories:{teaching:"Edukacja i nauczanie",ai:"NarzÄdzia AI nowej generacji",aiGeneral:"Pomoc ogólna AI",aiImage:"Generatory obrazów",aiVideo:"Tworzenie wideo AI",aiAudio:"GÅosy AI i piosenki",education:"Portale edukacyjne"}},usage={unlimited:"â
Tryb nielimitowany aktywny",used:"Używasz {{current}} z {{limit}} projektów w darmowym planie próbny.",expired:"â ï¸ Okres próbny wygasÅ. Tworzenie zablokowane.",noiseTrackerTrial:"Demo: Sesja zakoÅczy siÄ po 10 minutach.",proForever:"Plan Dożywotni (LIFETIME ACCOUNT)",proDaysRemaining:"PozostaÅo: {{days}} dni dostÄpu FullGame"},sidebar$1={upgradeBtn:"ZarzÄ
dzaj ulepszeniami",upgradeTooltip:"Sprawdź plany i doÅaduj konto, aby znieÅÄ limity",helpBtn:"Instrukcja i POMOC",helpTooltip:"Zobacz wideo i instrukcjÄ, jak tworzyÄ i graÄ z uczniami",noticeTitle:"Ważna informacja:",poseQuizNotice:"To nie jest AI ÅledzÄ
ce ruchy przez kamerÄ w czasie rzeczywistym. To tablica dla klasy - uczniowie pokazujÄ
pozy, a nauczyciel zaznacza wynik lub używa timera.",upgradeLabel:"Ulepsz konto",helpLabel:"Pomoc",bugReportLabel:"ZgÅoÅ bÅÄ
d"},offline={downloadBtn:"Pobierz wersjÄ Offline",linkBtn:"Link do pobrania (ZIP)",buyTooltip:"Zakup edycjÄ do pracy bez internetu",viewLinkTooltip:"Pobierz archiwum ZIP z wersjÄ
offline. Lifetime dostÄp bez limitów i bez rocznych opÅat."},pin={note:"ð PrzypinajÄ
c najczÄÅciej używane {{item}} oszczÄdzasz miejsce w bazie po restarcie.",room:"pokoje gier",wheel:"koÅa fortuny",lesson:"lekcje",image:"obrazy",crossword:"krzyżówki",robot:"asystentów AI",pinned:"ð PrzypiÄto do ulubionych",unpinned:"ð OdpiÄto",limitReached:"ð Limit osiÄ
gniÄty! Możesz przypiÄ
Ä maksymalnie {{limit}} {{item}}.",pinnedLabel:"przypiÄte"},form$6={answer:"Odpowiedź",question:"Pytanie",questionContent:"TreÅÄ pytania",timeLimit:"Czas na pytanie (sek.)",timeLimitHelper:"Minimum 7 sek. Sugerowane: 15-25 sek.",errorMinTimeLimit:"Minimalny czas na pytanie to 7 sekund."},library={errorMetadataRequired:"ProszÄ wybraÄ Poziom edukacji, Przedmiot i KlasÄ, aby udostÄpniÄ w Bibliotece spoÅecznoÅci."},status={notEntered:"Brak danych"}
569,error$2={occurred:"WystÄ
piÅ nieoczekiwany bÅÄ
d serwera. Spróbuj ponownie później."},actions$2={assign:"Zadaj",teacherShare:"UdostÄpnij nauczycielom",renew:"Odnów dostÄp",prevPage:"â Poprzednia",nextPage:"NastÄpna â",pageInfo:"Strona {{page}}",bugReport:"ZgÅoÅ bÅÄ
d",edit:"Edytuj",delete:"UsuÅ",play:"Graj",view:"Zobacz",share:"UdostÄpnij"},listTools={searchPlaceholder:"Szukaj lekcji...",clear:"WyczyÅÄ wyszukiwanie",sortLabel:"Sortuj",sortNewest:"Najnowsze",sortOldest:"Najstarsze",sortNameAsc:"Nazwa AâZ",sortNameDesc:"Nazwa ZâA",sortMostQuestions:"NajwiÄcej pytaÅ",noResults:"Nie znaleziono pasujÄ
cych lekcji"},shuffleQuestions={label:"Losuj kolejnoÅÄ pytaÅ",desc:"Przy każdej grze pytania pojawiajÄ
siÄ w innej kolejnoÅci"},groups={createButton:"+ Nowa grupa",createTitle:"Utwórz nowÄ
grupÄ",renameTitle:"ZmieÅ nazwÄ grupy",namePlaceholder:"Nazwa grupy (np. Informatyka kl. 6)",save:"Zapisz",cancel:"Anuluj",createSuccess:"Utworzono grupÄ",createError:"Nie udaÅo siÄ utworzyÄ grupy",renameSuccess:"Zmieniono nazwÄ grupy",deleteConfirm:"UsunÄ
Ä tÄ grupÄ? Lekcje w Årodku zostanÄ
przeniesione na zewnÄ
trz, nie usuniÄte.",deleteSuccess:"UsuniÄto grupÄ",deleteError:"Nie udaÅo siÄ usunÄ
Ä grupy",countLabel:"{{count}} lekcji",back:"â Wstecz",moveToGroup:"PrzenieÅ do grupy",moveSuccess:"Przeniesiono lekcjÄ",moveError:"Nie udaÅo siÄ przenieÅÄ lekcji",removeFromGroup:"PrzenieÅ na zewnÄ
trz",noGroup:"Bez grupy",rename:"ZmieÅ nazwÄ",delete:"UsuÅ grupÄ",emptyGroup:"Ta grupa nie ma jeszcze lekcji. PrzenieÅ lekcje z menu na każdej karcie lekcji.",inGroupLabel:"ð {{name}}"},search={tab:"Szukaj",title:"Szukaj swoich lekcji",placeholder:"Wpisz nazwÄ lekcji (wszystkie narzÄdzia)...",loading:"Åadowanie lekcji...",noResults:"Nie znaleziono pasujÄ
cych wyników",empty:"Nie masz jeszcze żadnych lekcji",untitled:"(Bez nazwy)",groupFeatures:"Funkcje",groupLessons:"Moje lekcje",labelFeature:"Otwórz"},ttsModal={title:"⨠Wymagania dotyczÄ
ce funkcji AI Voiceover",step1Title:"1. Pakiet jÄzykowy polski w systemie",step1Success:"System ma zainstalowany gÅos polski",step1Needed:"Musisz zainstalowaÄ polski pakiet jÄzykowy w systemie Windows, aby przeglÄ
darka mogÅa go odczytaÄ.",step1GuideBtn:"Dodaj gÅos AI (Instrukcja wideo)",step2Title:"2. Używaj przeglÄ
darki Microsoft Edge",step2Using:"â
Używasz {{name}}",step2Warning:"â ï¸ Obecnie używasz {{name}}",step2EdgeHint:"Microsoft Edge posiada bardziej naturalne gÅosy niż Chrome i nie zużywa limitów transferu danych.",step3Title:"3. Wymagane konto FullGame",step3Success:"JesteÅ użytkownikiem FullGame PLAN",step3Needed:"Ta funkcja wymaga subskrypcji FullGame PLAN.",step3UpgradeBtn:"Kup FullGame teraz",toolTitle:"Lub skorzystaj z naszego generatora gÅosów AI",toolDesc:"Możesz również wygenerowaÄ mowÄ za pomocÄ
naszego dedykowanego narzÄdzia AI, pobraÄ plik .mp3 i przesÅaÄ go rÄcznie do każdego pytania.",toolBtn:"NarzÄdzie AI Voice Generator",proRequired:"Wymagane konto FullGame",closeBtn:"Zamknij",gotItBtn:"Rozumiem"},classManager={title:"Class manager",subtitle:"This class list is shared across every feature that uses classes. Click a class to edit details and attach student photos.",detailTitle:"Class details",emptyDesc:"You have no classes yet. Create one from a feature page (Wheel Quiz or Paper Mode), then come back here to manage it in detail.",studentCount:"{{count}} students",labelClassName:"Class name",labelClassPhoto:"Class group photo",labelStudents:"Student list",hintShared:"Edits here show up in every feature that uses this class.",warnTooManyClasses:"You have more than {{max}} classes, which may limit how some features work. Consider deleting classes you no longer use.",hintUnsaved:"You have unsaved changes. Leaving now will discard them (including photos you just picked).",placeholderName:"Full name",emptyRows:'No students yet. Click "Add student" or "Paste from Excel".',btnSave:"Save",btnSaving:"Saving...",btnCancel:"Cancel",btnOpen:"Open class",btnPlayGame:"Run a game",playGameHint:"Pick a feature to open, then select this class there",playGameWheel:"Wheel Quiz / Duck Race",playGameFaceRandom:"Photo Roll Call",playGamePaperMode:"Paper Mode",btnDeleteClass:"Delete class",confirmDeleteTitle:"Delete this class?",confirmDeleteMsg:'Class "{{name}}" will be permanently deleted, along with its student list and all attached photos. This cannot be undone.',successDeleteClass:"Class deleted",errorDeleteClass:"Could not delete the class. Please try again.",btnAddStudent:"Add student",btnAdd:"Add",btnClose:"Close",addTitle:"Add student",addHint:"{{current}}/{{max}} students so far. Press Enter to keep adding.",labelStudentName:"Student full name",tooltipMoveUp:"Move up",tooltipMoveDown:"Move down",btnShowPhotos:"Show photos",btnHidePhotos:"Hide photos",chipHasPhoto:"Has photo",chipPhotoPending:"Pending save",notePhotoOptional:"Student photos are only needed for a few specific features â they are entirely optional.",btnSplitPhoto:"Cut student photos from class photo",
569splitTitle:"Cut student photos from the class photo",splitHint:"Drag the slider to set the ring size, then click each student's face to pick their name. If faces look too small, scroll on the photo to zoom in, then drag to move around. Cut photos wait for you to press Save.",splitSize:"Ring size",splitZoomIn:"Zoom in (or scroll up)",splitZoomOut:"Zoom out (or scroll down)",splitZoomReset:"Fit to frame",splitPxHint:"Actual size of the crop area. {{out}}px or more stays sharp; below that the photo gets enlarged and looks soft.",splitBigExtra:"That photo is quite large, so panning and zooming may feel slow. That is expected â the closer to the original, the sharper the cut faces.",infoBigPhoto:"That photo is {{mb}}MB, so it takes a moment to process. Please wait â a larger original gives sharper cut photos.",splitLowRes:'The selected area is only {{px}}px, so the cut photo will look soft. To fix: drag the slider for a bigger ring, or click "Add photo to cut" and pick the ORIGINAL file from your device â originals keep full detail and cut far better than the saved class photo.',splitNoStudent:"This class has no students yet",splitErrorLoad:"Could not read the class photo for cutting. Try re-uploading the class photo, then cut right away.",btnFullscreen:"Fullscreen",btnExitFullscreen:"Exit fullscreen",splitAddSource:"Add photo to cut from",splitSourceMain:"Class photo",splitSourceExtra:"Extra",splitExtraNote:"Extra photos are only used for cutting â they are not saved.",splitDoneHint:"{{n}} photo(s) cut â remember to press Save on the page to keep them.",btnDone:"Done",tooltipPhotoPending:"Newly picked photo â press Save to upload",confirmLeave:"You have unsaved changes (including photos you just picked). Leaving will discard them. Leave anyway?",errorEmptyName:"Please enter a student name",btnPaste:"Paste from Excel",btnApplyPaste:"Apply",btnAddClassPhoto:"Add class photo",btnPrune:"Clean up {{count}} unused photos",tooltipPrune:"{{count}} photos belong to students no longer in the list. Click to delete them.",tooltipPhoto:"Click to pick a photo for this student",tooltipRemovePhoto:"Remove student photo",tooltipRevealPhoto:"Click to view this student's photo",tooltipHidePhoto:"Click to hide the photo again",tooltipRemoveRow:"Remove student from class",uploading:"Uploading...",pasteTitle:"Paste list from Excel",pasteWarning:"The pasted list REPLACES the entire current list. Students with matching names keep their photos.",pastePlaceholder:"Paste the name column here, one student per line...",successSave:"Class saved",successPrune:"Cleaned up {{count}} unused photos",prunedNone:"No unused photos",errorLoad:"Could not load classes",errorNotFound:"Class not found",errorSave:"Failed to save class",errorName:"Please enter a class name",errorMinStudent:"A class needs at least 1 student",errorOverLimit:"Exceeds the limit of {{max}} students per class",errorPhoto:"Photo operation failed",errorPasteEmpty:"No names found in the pasted text",errorConsent:"Nie udaÅo siÄ zapisaÄ zobowiÄ
zania. Spróbuj ponownie.",btnPurge:"UsuÅ wszystkie zdjÄcia",tooltipPurge:"UsuÅ wszystkie portrety i zdjÄcie grupowe tej klasy",confirmPurgeTitle:"UsunÄ
Ä wszystkie zdjÄcia tej klasy?",confirmPurgeMsg:"Wszystkie portrety uczniów i zdjÄcie grupowe zostanÄ
trwale usuniÄte. Lista uczniów i nazwa klasy pozostanÄ
bez zmian. Tej operacji nie można cofnÄ
Ä.",successPurge:"UsuniÄto wszystkie zdjÄcia tej klasy."},photoConsent={title:"ZobowiÄ
zanie dotyczÄ
ce wykorzystania zdjÄÄ uczniów",forClass:"Klasa: {{name}}",warning:"ZdjÄcia portretowe uczniów to wrażliwe dane osobowe. W przypadku uczniów poniżej 16 lat prawo wymaga zgody rodzica lub opiekuna prawnego.",intro:"KontynuujÄ
c, potwierdzasz, że:",item1:"UzyskaÅeÅ/aÅ zgodÄ rodzica lub opiekuna prawnego ucznia na wykorzystanie zdjÄcia w dziaÅaniach dydaktycznych.",item2:"ZdjÄcia sÅużÄ
wyÅÄ
cznie do zajÄÄ w tej klasie â nie sÄ
publikowane publicznie ani wykorzystywane komercyjnie.",item3:"Usuniesz zdjÄcia, gdy rodzic wycofa zgodÄ lub gdy nie bÄdÄ
już potrzebne do nauczania.",item4:"ZdjÄcia widzi tylko Twoje konto â platforma nie udostÄpnia ich innym użytkownikom.",checkbox:"Potwierdzam, że posiadam zgodÄ rodzica/opiekuna i biorÄ odpowiedzialnoÅÄ za powyższe zobowiÄ
zania.",btnCancel:"Anuluj",btnAgree:"ZobowiÄ
zujÄ siÄ i kontynuujÄ",btnSaving:"Zapisywanie..."},plCommon={cancel,save,nav:nav$1,header,proModal,upgradeModal,internationalModal,language,externalTools,usage,sidebar:sidebar$1,offline,pin,form:form$6,library,status,error:error$2,actions:actions$2,listTools,shuffleQuestions,groups,search,ttsModal,classManager,photoConsent},nav={logo:"Innowacyjny Nauczyciel",aiTools:"NarzÄdzia AI",joinBtn:"ð® DoÅÄ
cz (dla uczniów)",loginBtn:"Zaloguj siÄ",bugReportBtn:"ZgÅoÅ bÅÄ
d"},hero$2={title:"Innowacyjny Nauczyciel",subtitle:"Gry edukacyjne, narzÄdzia AI i nie tylko",description:"Platforma dla nowoczesnych nauczycieli, oferujÄ
ca inteligentne narzÄdzia edukacyjne do optymalizacji nauczania.",loginCta:"Zaloguj siÄ teraz - bez rejestracji!",
569joinCta:"ð® DoÅÄ
cz (dla uczniów)",qrScanCta:"Skanuj kod QR"},features$1={sectionTitle:"NarzÄdzia Edukacyjne",sectionSubtitle:"Poznaj nowoczesne narzÄdzia edukacyjne rozwijajÄ
ce jakoÅÄ Twojego nauczania",tools:{aiTools:{title:"NarzÄdzia AI",description:"NarzÄdzia AI do pisania raportów, scenariuszy lekcji i wiele innych funkcji AI"},aiSpecialist:{title:"Specjalistyczne AI",description:"Sztuczna Inteligencja dedykowana zaawansowanym zadaniom edukacyjnym"},interactiveVideo:{title:"Interaktywne Wideo",description:"Twórz filmy edukacyjne z interaktywnymi pytaniami wielokrotnego wyboru"},interactiveImage:{title:"Interaktywny Obraz",description:"Dodawaj punkty dotykowe na obrazach z pytaniami quizowymi lub kartami pracy"},panoramaMuseum:{title:"Muzeum Panoramy - Galeria 3D",description:"OglÄ
daj wystawy 3D z interaktywnymi obrazami panoramicznymi 360°"},quizGame:{title:"PrzeciÄ
gnij i UpuÅÄ",description:"Twórz quizy polegajÄ
ce na przeciÄ
ganiu etykiet na obrazach lub dopasowywaniu elementów"},companionRobot:{title:"Robot TowarzyszÄ
cy",description:"Inteligentny robot AI, który towarzyszy uczniom podczas lekcji"},wheelQuiz:{title:"KoÅo Fortuny",description:"KoÅo losujÄ
ce poÅÄ
czone z pytaniami quizu."},handSlashQuiz:{title:"CiÄcie Owoców",description:"Odpowiadaj gestami machania rÄ
k (styl Fruit Ninja)."},flipPuzzleGame:{title:"Odkrywanie Puzzli",description:"Uczniowie odpowiadajÄ
i odkrywajÄ
zakryte puzzle."},turnBasedGame:{title:"Gra Turowa",description:"Rzuty kostkÄ
na planszy peÅnej pytaÅ (do 4 graczy)."},versusGame:{title:"Pojedynek",description:"Walka 1 na 1 odpowiadajÄ
c na swoich urzÄ
dzeniach."},tugOfWarGame:{title:"PrzeciÄ
ganie Liny",description:"Turniej dla drużyn odpowiadajÄ
cych na stóÅku do gry."},pacedQuiz:{title:"Quiz Kontrolowany",description:"WyÅwietl pytania z rzutnika, Ty dyktujesz tempo."},crosswordPuzzle:{title:"Krzyżówka",description:"HasÅa odkrywane za pomocÄ
quizu."},flyingWordsGame:{title:"LatajÄ
ce SÅowa",description:"Åap latajÄ
ce sÅowa (rÄkÄ
lub myszkÄ
), aby uÅożyÄ lub znaleÅºÄ wÅaÅciwe sÅowa tworzÄ
ce peÅne zdanie"},headTiltQuiz:{title:"Przechylanie GÅowy",description:"Wskazuj odpowiedź pochylajÄ
c gÅowÄ przed kamerÄ
."},starBagGame:{title:"Zbieracz Gwiazd",description:"Dwie drużyny rywalizujÄ
unoszÄ
c palce by wybraÄ odpowiedź â zbierz gwiazdy i wygraj!"},poseQuiz:{title:"Gimnastyka ABC",description:"Wykonuj wylosowane pozy jako odpowiedzi."},noiseTracker:{title:"Miernik HaÅasu",description:"Smok sprawdza czy w klasie jest cicho."},journey:{title:"Åcieżka Nauki",description:"Twórz mapy i Åledź przejÅcia do koÅca."},paperMode:{title:"Tryb Papierowy",description:"Skanuj szybkie karty uczniów by zdobyÄ wynik."},faceRandom:{title:"SzczÄÅliwy Obiektyw",description:"Losowanie twarzy przez skaner na lekcji."}}},paperModeBeta$1="Skanuj papierowe karty A/B/C/D kamerÄ
â oceÅ caÅÄ
klasÄ w kilka sekund, bez urzÄ
dzeÅ dla uczniów",betaBadge$1="𧪠Tryb Testowy",footer$2={ownerLabel:"WÅaÅciciel",ownerName:"Ban Van Thinh",ownerAddress:"Vinh Tuy, Prowincja Tuyen Quang, Wietnam",ownerTax:"NIP: 002090004198",connectLabel:"PoÅÄ
cz siÄ",legalLabel:"Informacje prawne",policy1:"ð° Cennik",policy2:"ð Polityka PrywatnoÅci",policy3:"ð Warunki Użytkowania",policy4:"ð Polityka Dostaw",policy5:"ð¤ Informacje o WÅaÅcicielu",copyright:"© 2025 Rozwijane przez Thầy Giáo Tin",buildTime:"Zaktualizowano o {{time}} w dniu {{date}}",facebook:"Facebook",tiktok:"TikTok",youtube:"Youtube",zalo:"Zalo",zaloCommunity:"SpoÅecznoÅÄ Zalo",email:"Email",guide:"Poradnik",guideTooltip:"Pokaż jak korzystaÄ"},webviewModal={title:"â ï¸ Logowanie zablokowane wewnÄ
trz tej aplikacji",intro:"OtwarÅeÅ stronÄ przez komunikator. Otwórz w przeglÄ
darce zewnÄtrznej:",step1:"Krok 1: Kliknij menu â® w prawym rogu",step2:'Krok 2: Wybierz "Otwórz w przeglÄ
darce"',btnClose:"Zamknij"},emailModal$1={title:"Adres Email",btnClose:"Zamknij"},loading="Wczytywanie...",plLanding={nav,hero:hero$2,features:features$1,paperModeBeta:paperModeBeta$1,betaBadge:betaBadge$1,footer:footer$2,webviewModal,emailModal:emailModal$1,loading},heroTitle="Zmodernizujmy nauczanie razem",modules={"ai-tools":{title:"NarzÄdzia AI",description:"NarzÄdzia AI do badania akcji, integracji i pomocy naukowych."},"ai-specialist":{title:"Specjalistyczne AI",description:"Autorskie AI do tworzenia raportów, generowania produktów..."}
569,"interactive-video":{title:"Interaktywne Wideo",description:"Twórz wideo z interaktywnymi zadaniami."},"interactive-image":{title:"Interaktywny Obraz",description:"Klikane etykiety na obrazach dla uczniów."},"panorama-museum":{title:"Muzeum Panoramy - Galeria 3D",description:"Interaktywna wystawa w formacie 360 stopni."},"quiz-game":{title:"PrzeciÄ
gnij i UpuÅÄ",description:"PrzeciÄ
ganie etykiet i dopasowywanie odpowiedzi."},"wheel-quiz":{title:"KoÅo Fortuny",description:"KoÅo losujÄ
ce poÅÄ
czone z pytaniami quizu."},"hand-slash-quiz":{title:"CiÄcie Owoców",description:"Odpowiadaj gestami machania rÄ
k (styl Fruit Ninja)."},"flip-puzzle-game":{title:"Odkrywanie Puzzli",description:"Uczniowie odpowiadajÄ
i odkrywajÄ
zakryte puzzle."},"knowledge-train-game":{title:"PociÄ
g Wiedzy",description:"PrzeciÄ
gnij i upuÅÄ wagony we wÅaÅciwej kolejnoÅci â dopasuj odpowiedź do nastÄpnego pytania"},"turn-based-game":{title:"Gra Turowa",description:"Rzuty kostkÄ
na planszy peÅnej pytaÅ (do 4 graczy)."},"versus-game":{title:"Pojedynek",description:"Walka 1 na 1 odpowiadajÄ
c na swoich urzÄ
dzeniach."},"tug-of-war-game":{title:"PrzeciÄ
ganie Liny",description:"Turniej dla drużyn odpowiadajÄ
cych na stóÅku do gry."},"paced-quiz":{title:"Quiz Kontrolowany",description:"WyÅwietl pytania z rzutnika, Ty dyktujesz tempo."},"crossword-puzzle":{title:"Krzyżówka",description:"HasÅa odkrywane za pomocÄ
quizu."},"head-tilt-quiz":{title:"Przechylanie GÅowy",description:"Wskazuj odpowiedź pochylajÄ
c gÅowÄ przed kamerÄ
."},"star-bag-game":{title:"Zbieracz Gwiazd",description:"Dwie drużyny rywalizujÄ
unoszÄ
c palce by wybraÄ odpowiedź â zbierz gwiazdy i wygraj!"},minesweeper:{title:"Saper",description:"Wybierz pole z poprawnÄ
odpowiedziÄ
, aby przejÅÄ przez pole minowe â quiz przygodowy z 3 życiami; nadepniÄcie na minÄ wybucha"},flashcard:{title:"Karty do nauki (Flashcard)",description:"Twórz zestawy fiszek z dźwiÄkiem i obrazem â przewracaj karty, oceÅ siebie, ucz siÄ do opanowania"},"mind-map":{title:"Mapa myÅli",description:"Rejestruj wiedzÄ na żywo podczas lekcji za pomocÄ
pÅywajÄ
cej naklejki â na koÅcu automatycznie generuje peÅnÄ
mapÄ myÅli, z możliwoÅciÄ
powiÄkszania i eksportu"},"pose-quiz":{title:"Gimnastyka ABC",description:"Wykonuj wylosowane pozy jako odpowiedzi."},"noise-tracker":{title:"Miernik HaÅasu",description:"Smok sprawdza czy w klasie jest cicho."},"flying-words-game":{title:"LatajÄ
ce SÅowa",description:"Åap latajÄ
ce sÅowa (rÄkÄ
lub myszkÄ
), aby uÅożyÄ lub znaleÅºÄ wÅaÅciwe sÅowa tworzÄ
ce peÅne zdanie"},"teaching-materials":{title:"Kursy Pana Tina",description:"Gotowe do użycia plany i pomoce szkolne."},journey:{title:"Åcieżka Nauki",description:"Twórz mapy i Åledź przejÅcia do koÅca."},"paper-mode":{title:"Tryb Papierowy",description:"Skanuj szybkie karty uczniów by zdobyÄ wynik."},"face-random":{title:"SzczÄÅliwy Obiektyw",description:"Losowanie twarzy przez skaner na lekcji."},"html-embed-game":{title:"WÅasna Gra",description:"Wklej kod HTML gry i przydziel uczniom â mogÄ
graÄ natychmiast, bez programowania"}},comingSoon="Wkrótce...",startBtn="Start",lockedBtn="Zablokowane",trialBtn="ð Wypróbuj",updatingBadge="ð§ Trwa aktualizacja",journeyModal={title:"Åcieżka Nauki",lockLabel:"ð Funkcja Premium",intro:"Zaprojektuj interaktywne tory dla uczniów peÅne pytaÅ z różnych kategorii do rozwiÄ
zania po drodze.",featuresTitle:"⨠Kluczowe Funkcje:",feature1:"Pokaż po drodze dziesiÄ
tki zadaÅ rozmaitego typu",feature2:"4 rodzaje pytaÅ (Wielokrotny Wybór, i wiÄcej...)",feature3:"DostÄp z kodu pokoju bez logowania",feature4:"Zapisy do bazy wyników",feature5:"Autozapis prac",videoTitle:"ð¬ Wideo Poradnik:",upgradeBtn:"ð Kup DostÄp"},versusModal={title:"Pojedynek",lockLabel:"ð Funkcja FullGame",intro:"Studenci mierzÄ
siÅy na urzÄ
dzeniach bez patrzenia na rzutnik. Pokonaj resztÄ dobrÄ
odpowiedziÄ
by wygraÄ rundÄ.",featuresTitle:"⨠Kluczowe Funkcje:",feature1:"Oddzielne urzÄ
dzenia â brak ekranu rzutnika podglÄ
du",feature2:"Pokoje hostowane przez panel Nauczyciela",feature3:"Widoczny postÄp wygranych walk u zawodnika",feature4:"Widok 360",feature5:"Zapis wyników tabeli gry",upgradeBtn:"ð Kup DostÄp"},footer$1={ownerLabel:"WÅaÅciciel",ownerName:"Ban Van Thinh",ownerAddress:"Vinh Tuy, Prowincja Tuyen Quang, Wietnam",ownerTax:"NIP: 002090004198",connectLabel:"PoÅÄ
cz siÄ",legalLabel:"Informacje prawne",utilsLabel:"NarzÄdzia",policy1:"ð° Cennik",policy2:"ð Polityka PrywatnoÅci",policy3:"ð Warunki Użytkowania",policy4:"ð Polityka Dostaw",policy5:"ð¤ Informacje o WÅaÅcicielu",guide:"Poradnik",guideTooltip:"Pokaż jak korzystaÄ",fixError:"Napraw usterkÄ",fixErrorTooltip:"BÅÄdy Åadowania wersji platformy",confirmReset:"Usuniemy lokalne buforowanie, należy zalogowaÄ siÄ ponownie. Na pewo?",copyright:"© 2025 Rozwijane przez Thầy Giáo Tin",buildTime:"Zaktualizowano {{date}} o {{time}}"},emailModal={title:"Adres Email",btnClose:"Zamknij"},helpModal={title:"Przewodnik",description:"Sprawdź o czym mówi każda z unikalnych opcji platformy."}
569,paperModeBeta="Skanuj papierowe karty A/B/C/D kamerÄ
â oceÅ caÅÄ
klasÄ w kilka sekund, bez urzÄ
dzeÅ dla uczniów",betaBadge="𧪠Tryb Testowy",plHome={heroTitle,modules,comingSoon,startBtn,lockedBtn,trialBtn,updatingBadge,journeyModal,versusModal,footer:footer$1,emailModal,helpModal,paperModeBeta,betaBadge},hero$1={title:"ð° Cennik i Zakupy",sub:"DostÄpne Free-to-Try do sprawdzenia bez karty przed zakupami peÅnej licencji. Ukryte koszty? Absolutnie brak!"},proPlan={title:"PAKIET FullGame â PeÅna Moc Systemu we Wszystkich ModuÅach",badge:"NajchÄtniej Kupywana Oferta (Hit)",price:"200,000â«",unit:"/ roczna przedpÅata za pakiet do gier",description:"Odblokowuje dosÅownie każdy z kafelków plus dodatkowo AI NarzÄdzia z platformy specjalistycznej",features:["Wgrawanie Piosenek czy dźwieków pod pytania by np byÅo muzykalnie od gadania z pytan","Generator ze statystyczym exelem i wgladem do oceny by uÅatwic tobie wiedze","Bezlimity u wszystkich kafelkow na gry by tworzyÄ ile podÅóg od limitu sztuk do 12 msc. za darmo juz (termin)","Co ciekawe: to u limitow a nawet gdy limit msc gasnie minie pakiet - zachowujesz prawa dosteu do plikow ale z limit - ale bez blokady dostepu po starym","Dzial Ai Narzediza i generaca lekcji ze AI dalo robic by zadanoa - Plan jako LIFTIME (kupuj raz dozywtke)!","NarzÄdzie ASYSTENTA by AI u Asysy AI Spec - (Tu raz na zycie masz dostep LIFTIME)","Zapisuj tyle plików gier aż dyski spÄknÄ
w bazie u ciebe w tworzenion"]},singularFeatures={title:"Osobny pojedynczy moduÅ jak masz pusty portfel co by tylko gry braÄ po jednej gierce",price:"30,000â«",unit:"/ rok za pojedynczy bÄ
bel z grÄ
w aplikacji",line1:"By tu nie tracic siana kupuj jednÄ
grÄ by graÄ, np jakas nowa wysza 30 tyÅ",line2:"PÅac z kasy na zapas to doÅaduje na konto (2 l to x2 stawki wiec to podbija z automatu dajÄ
c limit np 2 lata, 3 i tak samo po 10 letnich plan to 30 tys * ilosc u automa bazy kwot)",list:["Do zakupow za 3 dychy podlegaja wylacnie : gry do tablic (Szubienica gry zespoÅowe krzyz z rzuta na sciane etc by kupowac te bez pro pakkietow)"]},extendedLink={title:"Specyfiaczna PrzedÅużoa Å»ywotnoÅc do Linku Twojej Gracj w Pracy / BadaÅ Pozycyjne do Pracy z zadnai po 1 ROK i Rok",price:"100,000â«",unit:"/ za rok od jednej",description:"Tylko dla tych co biora udziaÅ uczniu na boku badan statystyka np pisze magistekre co potrzbuj by jego gra i badana wisil by link nei padl z nudy z automatem po msc.",features:["Twój odnoÅik wyslany do dziaeciarni trymz do konca kalnedraz roczny bÄ
dfz dwuletini do ucelow z badani itd","Dotyk to wszsytkich typow dziela gdzie system wyrzcuia przypisana akjce","Zablkol do do maks 50 linkow aktywnych u Cb od tego do opcji bo po chmuze gania to po sys limitach u nas.","A po dwa laka mozesz miec po 150 ty (znizka w by pakit na taniej by za duzy hajsu z budetu do)"]},aiTools={title:"Ai Pomocniny od Inteligecni po Opcji u Modulow / Ai Narzedza",aiToolsTitle:"Systemy AI Z Tworzeniem",aiToolsPrice:"100,000â«",aiToolsUnit:"/ opÅcone Lifetime na dożywociach",aiSpecialistTitle:"Pomocnik Ekspercki od Edukownia",aiSpecialistPrice:"50,000â«",aiSpecialistUnit:"/ bez koÅca Lifeteim",line1:"Raz podajesz opalte â i od u tworeni ma sie by miec po end do smieci i dost.",noteLabel:"Zwróc bacyznosÄ uwag u nas u bacznoÅc:",line2:"JeÅli u FullGame pakiekt tu od nas â masz to zawarte juz bo tak (to pakier calosy!) Od tego co tu NIE MASZ by przetesownao (AI to ksozt dla serera od OpenAI etc , wiec trial NO WAY). Obejrz w Youtube Video film by nie kupc kota worze w zamiane bo bezez darmch nie idzie AI odpalu z koszt.",features:["Stworzy w mig by lekcje scenarj, teesty cwicznej dla ucznia robotem na AI model u narzdzi","Rozmówny czat AI robot do porad edukacj","Pytj limitow masz pelen bagz nic nei limitje sztuk w zapytaniach chat AI"]},freeTrial={title:"Trial by Opcj Testowa By Sie Nie Nabic za w Ciemne (RozdziaÅy Trybow)",intro:"BÄ
dz user nowonby byÅ uzywal testy z portlou <0>gratis caly i calkow</0> â z maÅy gwinck limit 05 od po gier i po test od gry z kafel u portflu bo na opcach u AI spec bÄ
zd od Modelow AI tam blokdada (Patrz video).",table:{feature:"CzÄÅÄi i Opcje u System",limit:"Max Limit Od Gry / Tworznia z Test."},note:"Rzeczy a gry pliki ktore u robisz za trila i tak sa twojc - na u po limcie by zostaja po za limit od gier ale masz plokad do utrwoza bo po u 5/5 gorn lmit."},multiYear={title:"Zniżki Na LATA dla Wielkich Zakupo u Rabatowania Promocyjk z Ilosca z Przedplata Roku z Puli",intro:"Co wchodzi to np <0>OPCJA OD FullGame PLAN All / FullGame</0>
569 z Opcji / z kafelg w pojedncz na wieciej np 2 LATA: i rbat:",table:{years:"Okres Lata",discount:"Zjazd z Cen (%) RABATU"},yearUnit_one:"1 Roczek",yearUnit_other:"{{count}} Letnich z Cykl u lat (lata)",noDiscount:"Puste i ZwykÅe (0%) Bez Znioz",discountValue:"{{percent}}% Poniżej i Taniej do Kufia",note:"A u kodoW wpisu i tak odpal piew systemow nizk za multi lata ze spr z przed i by tu wbil bonus dodatkc."},notes={title:"ð Uwag I PamiÄ
tki Dodatkwowe bys Pamieta ze od Wazne do Informacja System :",item1:"Przlew tylko u Opcji: <0>Przelew i Bank i Bank Appc</0> (z Z U Wyprowadz na po QR by ci app skanero pociagla kask).",item2:"Bot to ksieguje bieznie na sekundy (Opcje Automate SePay Viet) po zaplceni po wpisalnu - tu chwyta w limit ok gora minute z do maks po zaklepayn w uzycia.",item3:"Bo jak nie wbil z opcje co do suppora to zale i po numer do u obÅugs z kontu Appka Czt i Czt <0>{{phone}}</0>."},cta={title:"Rozpoczynam z Wami z Dniem Dziesej od Portelu",sub:"Lec z nami z opcj Trial / Gratis â A od by sie placalo, wyzyje by gdzies plau u App w upgrade z limtit.",btn:"Mój Zalo Do Po Konsulta czy Potrzbe Po Sprawy Supportu Z Alo/ Pytania z Czat U Pomoc/ Info z Wsp"},plPricing={hero:hero$1,proPlan,singularFeatures,extendedLink,aiTools,freeTrial,multiYear,notes,cta},shipping={hero:{title:"Zasady PÅatnoÅci i Odblokowywania Konta",sub:"Przewodnik po aktywacji usÅug cyfrowych na <1>{{url}}</1>",lastUpdated:"Ostatnia aktualizacja: {{date}}"},digitalNote:{title:"ð¦ Ważne uwagi:",content:"<1>{{name}}</1> jest platformÄ
dostarczajÄ
cÄ
<1>usÅugi oprogramowania cyfrowego (SaaS)</1>. <1>Nie dostarczamy towarów fizycznych</1>. Wszystkie produkty/usÅugi sÄ
Åwiadczone caÅkowicie online za poÅrednictwem konta użytkownika."},ordering:{title:"1. Proces Zamawiania i Potwierdzanie Transakcji",intro:"Aby ulepszyÄ konto, użytkownik wykonuje nastÄpujÄ
ce kroki:",steps:[{title:"Logowanie",desc:"Zaloguj siÄ na konto giaoviendoimoi.com przez Google"},{title:"Wybór pakietu",desc:"Wybierz odpowiedni pakiet ulepszeÅ (FullGame, AI Tools, pojedyncze funkcje...)"}
569,{title:"PÅatnoÅÄ",desc:"WyÅlij przelew bankowy zgodnie z kodem QR podanym na stronie ulepszeÅ"},{title:"Aktywacja",desc:"System automatycznie potwierdza i aktywuje usÅugÄ"}]},activation:{title:"2. Czas Aktywacji UsÅugi",intro:"Po pomyÅlnym dokonaniu pÅatnoÅci, usÅuga zostanie aktywowana zgodnie z nastÄpujÄ
cymi ramami czasowymi:",timeline:[{title:"Aktywacja automatyczna â Poniżej 5 minut",desc:"Przy pÅatnoÅci przez <1>VietQR</1> z poprawnym tytuÅem przelewu. System SePay automatycznie potwierdza i aktualizuje konto bez potrzeby rÄcznej weryfikacji."},{title:"W ciÄ
gu 2â4 godzin roboczych",desc:"W przypadku braku automatycznego potwierdzenia, sprawdzimy i aktywujemy usÅugÄ rÄcznie w godzinach pracy (8:00â22:00 codziennie)."},{title:"Maksymalnie 24 godziny",desc:"W przypadku pÅatnoÅci poza godzinami pracy lub potrzeby dodatkowej weryfikacji. JeÅli minÄÅo 24h, prosimy o kontakt przez Zalo lub e-mail."}]},scope:{title:"3. Zakres Åwiadczonych UsÅug",items:["UsÅugi sÄ
Åwiadczone online, bez ograniczeÅ geograficznych","Wymagane jest urzÄ
dzenie z internetem i przeglÄ
darkÄ
(Chrome, Edge, Firefox, Safari)","Nie jest wymagana instalacja oprogramowania (z wyjÄ
tkiem pakietu Offline)","KompatybilnoÅÄ z komputerami, tabletami i smartfonami"]},confirmation:{title:"4. Potwierdzenie Transakcji",intro:"Po pomyÅlnym zakoÅczeniu transakcji i aktywacji:",items:["Status konta zaktualizuje siÄ na stronie (górny prawy róg)","Wszystkie zakupione funkcje zostanÄ
odblokowane natychmiast","Informacje o pakiecie i dacie wygaÅniÄcia sÄ
widoczne w panelu zarzÄ
dzania kontem","W razie potrzeby można poprosiÄ o pisemne potwierdzenie e-mailem"]},refund:{title:"5. Zasady Zwrotów",intro:"Ze wzglÄdu na charakter <1>usÅug cyfrowych</1> (aktywacja natychmiastowa), zasady zwrotów sÄ
nastÄpujÄ
ce:",validCases:{title:"â
Przypadki kwalifikujÄ
ce siÄ do zwrotu:",items:["UsÅuga nie dziaÅa zgodnie z opisem w ciÄ
gu 7 dni od aktywacji","Zduplikowana pÅatnoÅÄ (opÅacenie dwa razy tego samego pakietu)","BÅÄdna aktywacja pakietu z winy systemu"]},warning:"<1>â ï¸ Uwaga:</1> <1>Nie dokonujemy zwrotów</1> w przypadku zmiany zdania po rozpoczÄciu korzystania z usÅugi lub gdy konto zostaÅo zablokowane za naruszenie warunków. Prosimy o uważne czytanie opisów przed zakupem.",requestInfo:"Aby poprosiÄ o zwrot, skontaktuj siÄ pod adresem <1>{{email}}</1> w ciÄ
gu <1>7 dni</1> od pÅatnoÅci, doÅÄ
czajÄ
c dowód transakcji."}
569,technicalSupport:{title:"6. Wsparcie Techniczne Po Aktywacji",items:["Wsparcie przez Zalo: 0363 357 745 (8:00â22:00)","Wsparcie przez E-mail: [email protected] (odpowiedź w 2-3 dni robocze)","Instrukcje na oficjalnych kanaÅach YouTube i TikTok","Grupy wsparcia na Facebooku i spoÅecznoÅÄ nauczycieli na Zalo"]},relatedLinks:{label:"ð PowiÄ
zane dokumenty:",privacy:"ð Polityka PrywatnoÅci",terms:"ð Warunki Użytkowania",about:"ð¤ Informacje o WÅaÅcicielu"},contact:{title:"Kontakt ze Wsparciem",sub:"JeÅli usÅuga nie zostaÅa aktywowana w terminie lub potrzebujesz pomocy z transakcjÄ
, skontaktuj siÄ z nami:",note:"Możesz też napisaÄ na Zalo: <1>{{phone}}</1> dla szybszej pomocy."},footer:{copyright:"© {{year}} {{name}}. Wszelkie prawa zastrzeżone.",privacy:"Polityka prywatnoÅci",terms:"Warunki"}},privacy={hero:{title:"Polityka PrywatnoÅci",sub:"ZobowiÄ
zanie <1>{{name}}</1> do ochrony Twojej prywatnoÅci i danych osobowych.",lastUpdated:"Ostatnia aktualizacja: {{date}}"},intro:{p1:"Witamy w <1>{{name}}</1> (giaoviendoimoi.com) â platformie wspierajÄ
cej nauczycieli w tworzeniu interaktywnych lekcji, gier edukacyjnych i efektywnym zarzÄ
dzaniu klasÄ
. Rozumiemy, że Twoja prywatnoÅÄ jest niezwykle ważna. Niniejsza polityka wyjaÅnia, w jaki sposób zbieramy, wykorzystujemy, przechowujemy i chronimy Twoje informacje.",summary:{title:"ð Szybkie podsumowanie:",content:"Zbieramy wyÅÄ
cznie minimum informacji niezbÄdnych do dziaÅania serwisu. <1>Nie sprzedajemy</1> danych, nie udostÄpniamy ich bez upoważnienia i nie wykorzystujemy do reklam podmiotów trzecich. ZdjÄcia i imiona uczniów wprowadzone przez nauczyciela opisuje <1>Sekcja 10</1>."}},section1:{title:"1. Informacje, Które Zbieramy",sub1:"1.1. Logowanie przez Google (Google Sign-In)",p1:"Gdy logujesz siÄ za pomocÄ
konta Google poprzez Firebase Authentication, otrzymujemy jedynie nastÄpujÄ
ce informacje:",items1:["Adres e-mail â sÅuży do identyfikacji konta i kontaktu w razie potrzeby","Nazwa wyÅwietlana â sÅuży do personalizacji interfejsu","ZdjÄcie profilowe â publiczny adres URL zdjÄcia z Twojego konta Google"],scopes:{title:"Zakres uprawnieÅ (Scopes):",pre:"Prosimy tylko o podstawowy zakres (",mid:"). ",not:"NIE",post:" prosimy o dostÄp do Twojego Gmaila, Dysku Google, Kontaktów ani żadnych innych wrażliwych danych."},sub2:"1.2. Dane uczniów",p2:"Uczniowie <1>nie majÄ
kont</1> i nigdy nie rejestrujÄ
siÄ samodzielnie. IstniejÄ
dwa odrÄbne przepÅywy danych: (a) uczeÅ doÅÄ
cza kodem PIN â dane przetwarzane <1>anonimowo</1>, zapisujemy tylko wybrany przez niego pseudonim i wyniki aktywnoÅci; (b) lista klasy <1>wprowadzona przez nauczyciela</1> â może zawieraÄ imiona i nazwiska oraz zdjÄcia portretowe. PrzepÅyw (b) to dane osobowe, opisane w Sekcji 10.",sub3:"1.3. Dane o korzystaniu z usÅugi",p3:"Możemy rejestrowaÄ informacje techniczne, takie jak: typ przeglÄ
darki, adres IP, czas dostÄpu w celu analizy wydajnoÅci i ulepszania usÅugi. Dane te nie sÄ
wykorzystywane do identyfikacji osób."},section2:{title:"2. Jak Wykorzystujemy Twoje Informacje",items:["Weryfikacja tożsamoÅci i przyznawanie dostÄpu do konta","Przechowywanie quizów, kóŠfortuny, gier i treÅci edukacyjnych, które tworzysz","Åledzenie historii gier i postÄpów w nauce (dane anonimowe)","ZarzÄ
dzanie pakietami usÅug i historiÄ
pÅatnoÅci konta","WysyÅanie ważnych powiadomieÅ technicznych dotyczÄ
cych konta","Ulepszanie i rozwój nowych funkcji platformy"]},section3:{title:"3. Przechowywanie i BezpieczeÅstwo Danych",sub1:"3.1. Miejsce przechowywania danych",p1:"Wszystkie dane użytkowników sÄ
bezpiecznie przechowywane na infrastrukturze <1>Google Firebase</1> (Firestore, Authentication, Storage) â zgodnie ze standardami ISO 27001 i SOC 2/3.",items1:["Quizy i materiaÅy dydaktyczne, które tworzysz","Historia gier i wyniki aktywnoÅci klasy","PostÄpy w nauce (anonimowe dane uczniów doÅÄ
czajÄ
cych kodem PIN)","Lista klasy wprowadzona przez nauczyciela: imiona i zdjÄcia portretowe uczniów (jeÅli nauczyciel z nich korzysta)","Informacje o pakiecie usÅug i dacie wygaÅniÄcia"],sub2:"3.2. Årodki bezpieczeÅstwa",items2:["Szyfrowanie danych w trakcie przesyÅania (HTTPS/TLS)","Kontrola dostÄpu oparta na rolach (nauczyciel widzi wyÅÄ
cznie wÅasne dane)","ZdjÄcia uczniów przechowywane w prywatnym obszarze konta; reguÅy bezpieczeÅstwa blokujÄ
dostÄp z innych kont","Wielowarstwowe uwierzytelnianie przez Firebase Authentication","Regularne kopie zapasowe zgodnie z politykÄ
Google Firebase"],warning:"<1>â ï¸ Uwaga:</1> Mimo stosowania najlepszych Årodków bezpieczeÅstwa, żaden system nie gwarantuje 100% bezpieczeÅstwa. Prosimy o dbanie o bezpieczeÅstwo swojego konta Google."},section3b:{title:"3b. BezpieczeÅstwo Kluczy API (Robot TowarzyszÄ
cy)",p1:"Funkcja <1>Companion Robot</1> pozwala nauczycielom na podÅÄ
czenie wÅasnej sztucznej inteligencji za pomocÄ
prywatnego klucza API Gemini. Zgodnie z przepisami o ochronie danych, <1>nie przechowujemy kluczy API w formacie tekstowym</1>.",commitment:"<1>ð ZobowiÄ
zanie do szyfrowania:</1> Twój klucz API jest szyfrowany algorytmem <1>AES-256-GCM</1> (standard wojskowy) bezpoÅrednio na Twoim urzÄ
dzeniu przed wysÅaniem na serwer. <1>Nie możemy odczytaÄ</1> Twojego klucza API â nawet nasz zespóŠtechniczny.",items:["Szyfrowanie AES-256-GCM odbywa siÄ caÅkowicie po stronie klienta (przeglÄ
darki), zanim dane opuszczÄ
urzÄ
dzenie","Klucz szyfrujÄ
cy jest unikalny dla każdego konta â nikt inny (w tym admin) nie może go odszyfrowaÄ","Firebase przechowuje tylko zaszyfrowanÄ
postaÄ (ciphertext), nigdy oryginalny klucz","Po usuniÄciu konta, wszystkie zaszyfrowane dane sÄ
również trwale usuwane"]}
569,section4:{title:"4. PÅatnoÅci i Ulepszenia Konta",p1:"Ulepszenia do konta FullGame sÄ
przetwarzane poprzez przelew bankowy (<1>VietQR</1>) lub Buy Me a Coffee dla użytkowników miÄdzynarodowych.",commitment:{title:"ð ZobowiÄ
zanie pÅatnicze:",content:"Nasz system <1>NIE</1> przechowuje żadnych informacji o kartach kredytowych, debetowych ani kontach bankowych. Przelewy bankowe sÄ
wykonywane bezpoÅrednio przez aplikacjÄ bankowÄ
użytkownika lub za poÅrednictwem Buy Me a Coffee."},items:["Przechowujemy jedynie status planu (Free/FullGame) i datÄ odnowienia","TytuÅ przelewu (kod weryfikacyjny) używany do potwierdzenia pÅatnoÅci","Historia pÅatnoÅci sÅużÄ
ca do wsparcia klienta w razie potrzeby"]},section5:{title:'5. Nasze Trzy ZobowiÄ
zania "NIE"',commits:[{title:"NIE sprzedajemy danych",desc:"Nigdy nie sprzedajemy, nie wynajmujemy ani nie wymieniamy Twoich danych osobowych podmiotom trzecim w celach komercyjnych."},{title:"NIE wysyÅamy spamu",desc:"E-mail sÅuży wyÅÄ
cznie do uwierzytelniania i ważnych powiadomieÅ technicznych. Bez reklamowego spamu."},{title:"NIE wykorzystujemy zdjÄÄ uczniów",desc:"ZdjÄcia i imiona uczniów nie sÄ
używane do reklamy, trenowania AI ani w żadnym celu poza wyÅwietleniem ich temu samemu nauczycielowi."}]},section6:{title:"6. UdostÄpnianie Informacji Stronom Trzecim",p1:"UdostÄpniamy informacje wyÅÄ
cznie poniższym partnerom w celu Åwiadczenia usÅugi. ZdjÄcia i imiona uczniów <1>nie sÄ
udostÄpniane</1> żadnemu partnerowi poza infrastrukturÄ
przechowywania Google Firebase.",table:{partner:"Partner",purpose:"Cel",data:"UdostÄpniane dane",rows:[["Google Firebase","Przechowywanie i uwierzytelnianie","E-mail, imiÄ, awatar nauczyciela; zdjÄcia/imiona uczniów (wyÅÄ
cznie przechowywanie)"],["Bank / Buy Me a Coffee","ObsÅuga pÅatnoÅci","ImiÄ, e-mail (do faktur)"],["Google Analytics","Anonimowa analityka wydajnoÅci","Dane anonimowe (bez zdjÄÄ/imion uczniów)"]]}},section7:{title:"7. Twoje Prawa",items:["Prawo dostÄpu: wglÄ
d w dane osobowe, które o Tobie przechowujemy","Prawo do sprostowania: poprawienie nieprawidÅowych danych osobowych","Prawo do usuniÄcia: żÄ
danie usuniÄcia wszystkich danych konta","Prawo do wycofania zgody: odwoÅanie dostÄpu Google OAuth w dowolnym momencie","Prawo do przenoszenia danych: otrzymanie kopii danych w czytelnym formacie","Prawa rodziców/uczniów: żÄ
danie wglÄ
du, sprostowania lub usuniÄcia zdjÄÄ i danych ucznia (zob. Sekcja 10)"],requestInfo:"Aby skorzystaÄ z dowolnego prawa, prosimy o kontakt pod adresem <1>{{email}}</1>. Rozpatrzymy proÅbÄ w ciÄ
gu <1>7 dni roboczych</1>."},section8:{title:"8. Ciasteczka i Technologie ÅledzÄ
ce",items:["NiezbÄdne ciasteczka: Utrzymanie sesji logowania (wymagane do dziaÅania usÅugi)","Opcjonalne ciasteczka: Zapisywanie ustawieÅ interfejsu (jÄzyk, motyw)","Analityka: Analiza anonimowego ruchu w celu poprawy wydajnoÅci"],p1:"Możesz usunÄ
Ä ciasteczka w dowolnym momencie w ustawieniach przeglÄ
darki. WyÅÄ
czenie niezbÄdnych ciasteczek może jednak wpÅynÄ
Ä na funkcjonalnoÅÄ logowania."},section9:{title:"9. Ochrona dzieci",p1:"Serwis przeznaczony jest do użytku przez <1>nauczycieli</1>. Uczniowie nie majÄ
wÅasnych kont i nigdy nie rejestrujÄ
siÄ samodzielnie na platformie.",sub1:"Uczniowie doÅÄ
czajÄ
cy kodem PIN",p2:"Bez rejestracji, bez e-maila, bez danych osobowych. UczeÅ podaje wyÅÄ
cznie samodzielnie wybrany pseudonim wyÅwietlany w rankingu. Zalecamy, aby nauczyciele poinstruowali uczniów, by nie używali peÅnego imienia i nazwiska jako pseudonimu.",sub2:"Lista klasy wprowadzona przez nauczyciela",p3:"Niektóre funkcje (obecnoÅÄ, losowanie ucznia, podziaÅ na grupy) wymagajÄ
wprowadzenia listy klasy, opcjonalnie ze zdjÄciami portretowymi uczniów. To dane osobowe dzieci, szczegóÅowo opisane w Sekcji 10."},section10:{title:"11. Zmiany w Polityce",p1:"Wszelkie istotne zmiany bÄdÄ
ogÅaszane poprzez:",items:["Widoczne powiadomienie na stronie na co najmniej 30 dni przed wejÅciem w życie","Powiadomienie e-mail wysÅane na zarejestrowany adres (przy ważnych zmianach)",'Aktualizacja daty "Ostatnia aktualizacja" na górze tej strony'],p2:"Dalsze korzystanie z usÅugi po wejÅciu zmian w życie oznacza akceptacjÄ nowej polityki."},section11:{title:"13. Kontakt i Å»Ä
danie UsuniÄcia Danych",sub:"JeÅli masz pytania dotyczÄ
ce polityki prywatnoÅci lub chcesz poprosiÄ o usuniÄcie wszystkich danych konta, prosimy o kontakt:",note:'Prosimy o wpisanie w temacie: "Å»Ä
danie usuniÄcia danych" oraz podanie zarejestrowanego adresu e-mail. Rozpatrzymy proÅbÄ w ciÄ
gu <1>7 dni roboczych</1>.'},footer:{copyright:"© {{year}} {{name}}. Wszelkie prawa zastrzeżone.",login:"Zaloguj siÄ"},sectionPhotos:{title:"10. ZdjÄcia i dane uczniów wprowadzone przez nauczyciela",p1:"Niektóre funkcje pozwalajÄ
nauczycielowi utworzyÄ listÄ klasy z imionami i zdjÄciami portretowymi uczniów, na potrzeby obecnoÅci, losowania ucznia czy podziaÅu na grupy. Jest to funkcja opcjonalna â z platformy można w peÅni korzystaÄ bez przesyÅania jakiegokolwiek zdjÄcia.",warning:"<1>â ï¸ ZdjÄcia portretowe uczniów to wrażliwe dane osobowe.</1> W przypadku uczniów poniżej 16 lat przetwarzanie wymaga zgody rodzica lub opiekuna prawnego zgodnie z obowiÄ
zujÄ
cymi przepisami o ochronie danych osobowych.",sub1:"10.1. Role stron i podstawa prawna",p2:"Nauczyciel (lub szkoÅa) decyduje o zbieraniu i wykorzystaniu zdjÄÄ uczniów i odpowiada za uzyskanie zgody rodziców lub opiekunów prawnych. Platforma peÅni wyÅÄ
cznie rolÄ prze
569chowywania i wyÅwietlania zdjÄÄ na żÄ
danie tego nauczyciela. Przed pierwszym przesÅaniem zdjÄÄ dla danej klasy system wymaga od nauczyciela potwierdzenia, że taka zgoda istnieje; potwierdzenie zapisywane jest dla każdej klasy wraz ze znacznikiem czasu.",sub2:"10.2. Kto widzi zdjÄcia",items2:["WyÅÄ
cznie konto nauczyciela, które je przesÅaÅo â reguÅy bezpieczeÅstwa blokujÄ
każde inne konto","ZdjÄcia nigdy nie pojawiajÄ
siÄ w aktywnoÅciach, w których uczniowie doÅÄ
czajÄ
kodem PIN","ZdjÄcia nie sÄ
publikowane publicznie ani indeksowane przez wyszukiwarki","Personel operacyjny uzyskuje do nich dostÄp tylko na zgÅoszone wsparcie techniczne lub gdy wymaga tego prawo"],sub3:"10.3. Czego NIE robimy ze zdjÄciami uczniów",items3:["Nigdy nie wykorzystujemy ich do reklamy ani marketingu","Nigdy nie wykorzystujemy ich do trenowania modeli sztucznej inteligencji","Nigdy nie sprzedajemy, nie wynajmujemy ani nie udostÄpniamy podmiotom trzecim","Brak rozpoznawania twarzy do identyfikacji uczniów poza klasÄ
danego nauczyciela"],sub4:"10.4. Okres przechowywania i prawo do usuniÄcia",p4:"ZdjÄcia przechowujemy do momentu ich usuniÄcia przez nauczyciela lub usuniÄcia konta. Na stronie zarzÄ
dzania klasÄ
nauczyciel może w dowolnej chwili usunÄ
Ä pojedyncze zdjÄcia lub wszystkie zdjÄcia klasy â usuniÄcie jest trwaÅe. Zalecamy usuwanie zdjÄÄ po zakoÅczeniu roku szkolnego lub gdy nie sÄ
już potrzebne. Przy usuniÄciu konta na żÄ
danie usuwane sÄ
również wszystkie zdjÄcia i listy klas.",parentRights:"Rodzice, opiekunowie prawni lub sami uczniowie mogÄ
zażÄ
daÄ wglÄ
du, sprostowania lub usuniÄcia zdjÄÄ i powiÄ
zanych danych. Prosimy najpierw skontaktowaÄ siÄ z wychowawcÄ
klasy â może usunÄ
Ä je natychmiast w aplikacji. JeÅli to niemożliwe, napisz na <1>{{email}}</1>, odpowiemy w ciÄ
gu <1>7 dni roboczych</1>."}},terms={hero:{title:"Warunki Użytkowania",sub:"Prosimy o uważne przeczytanie przed rozpoczÄciem korzystania z usÅug <1>{{name}}</1> ({{url}}).",lastUpdated:"Ostatnia aktualizacja: {{date}}"},intro:{p1:'Niniejsze Warunki Użytkowania ("Warunki") stanowiÄ
prawnÄ
umowÄ miÄdzy TobÄ
("Użytkownik") a <1>{{name}}</1> ("my"), regulujÄ
cÄ
dostÄp i korzystanie z platformy dostÄpnej pod adresem <3>{{url}}</3>. RejestrujÄ
c siÄ, logujÄ
c lub korzystajÄ
c z jakiejkolwiek funkcji usÅugi, potwierdzasz, że przeczytaÅeÅ, zrozumiaÅeÅ i <5>zgadzasz siÄ</5> na przestrzeganie niniejszych Warunków.',summary:{title:"ð Kogo dotyczÄ
Warunki:",content:"Niniejsze Warunki majÄ
zastosowanie do wszystkich użytkowników rejestrujÄ
cych konto, w tym nauczycieli, edukatorów i każdego, kto korzysta z usÅugi. Uczniowie uczestniczÄ
cy za pomocÄ
kodu PIN (anonimowo) nie sÄ
zwiÄ
zani niniejszymi Warunkami."}},section1:{title:"1. Wiek i Akceptacja Warunków",teacher:{title:"Dla Nauczycieli (Osoby tworzÄ
ce konta i zarzÄ
dzajÄ
ce klasÄ
)",content:"Musisz mieÄ <1>ukoÅczone 18 lat</1>, aby zarejestrowaÄ konto, korzystaÄ z usÅug i dokonywaÄ ulepszeÅ konta (jeÅli dotyczy). LogujÄ
c siÄ przez Google Sign-In, potwierdzasz, że przeczytaÅeÅ, zrozumiaÅeÅ i <3>caÅkowicie zgadzasz siÄ</3> z naszymi Warunkami Użytkowania oraz <5>PolitykÄ
PrywatnoÅci</5>."},student:{title:"Dla Uczniów (Uczestnicy)",content:"<b>Brak minimalnego limitu wieku</b> dla uczniów biorÄ
cych udziaÅ w grach i quizach (takich jak PrzeciÄ
ganie Liny, Quiz z Pochylaniem GÅowy itp.) za pomocÄ
<b>kodu pokoju (PIN)</b> lub <b>linku udostÄpniania</b>. Jednakże uczniowie korzystajÄ
cy z platformy muszÄ
robiÄ to pod <b>instruktażem, nadzorem i za zgodÄ
</b> nauczyciela prowadzÄ
cego klasÄ lub rodzica/opiekuna prawnego."},note:"ð¡ Uwaga: Niniejsze Warunki mogÄ
byÄ aktualizowane. Kontynuowanie korzystania z usÅugi po wprowadzeniu zmian oznacza akceptacjÄ najnowszej wersji. JeÅli siÄ nie zgadzasz, prosimy o zaprzestanie korzystania z usÅugi i kontakt w celu usuniÄcia konta."},section2:{title:"2. Prawo do Korzystania z UsÅug",intro:"Oferujemy dwa rodzaje kont z różnymi uprawnieniami:",plans:[{title:"Konto Próbne (Tri
569al)",items:["DostÄp do ograniczonych funkcji podstawowych","Tworzenie ograniczonej liczby treÅci miesiÄcznie","Wsparcie poprzez dokumentacjÄ pomocniczÄ
","MożliwoÅÄ przejÅcia na FullGame w dowolnym momencie"]},{badge:"â FullGame",title:"Konto FullGame / Premium",items:["DostÄp do wszystkich funkcji bez limitów","Tworzenie i przechowywanie nieograniczonej liczby treÅci","Priorytetowe wsparcie techniczne","Wczesny dostÄp do nowych funkcji"]}],sub1:"2.1. WÅasnoÅÄ intelektualna i ograniczenia użytkowania",p1:"CaÅy kod źródÅowy, projekt interfejsu, algorytmy gier oraz treÅci platformy stanowiÄ
wÅasnoÅÄ intelektualnÄ
<1>{{name}}</1>, chronionÄ
prawem wietnamskim oraz miÄdzynarodowymi konwencjami o prawie autorskim.",ipWarning:{title:"ð« Prawa Autorskie i WÅasnoÅÄ Intelektualna",content:"Wszystkie projekty interfejsu (UI/UX), grafiki, efekty i kod źródÅowy narzÄdzi na platformie (w tym <1>PrzeciÄ
ganie Liny, Quiz z Pochylaniem, Krzyżówki</1>...) należÄ
do <3>giaoviendoimoi.com</3>. Użytkownikom <5>nie wolno</5> używaÄ narzÄdzi programowych do ekstrakcji, inżynierii wstecznej (reverse engineering), bezpoÅredniego kopiowania kodu źródÅowego ani kradzieży zasobów graficznych platformy w celach komercyjnych.",exception:"Dopuszczalny wyjÄ
tek: Samodzielne inspirowanie siÄ do zaprogramowania podobnych mechanizmów gier <1>nie jest uważane za naruszenie</1> niniejszych warunków."},sub2:"2.2. TreÅci, które tworzysz",p2:"Zachowujesz wÅasnoÅÄ do <1>treÅci pytaÅ, ÄwiczeÅ i materiaÅów dydaktycznych</1>, które tworzysz na platformie. PrzesyÅajÄ
c lub tworzÄ
c treÅci, udzielasz nam prawa do ich przechowywania i wyÅwietlania w celu Åwiadczenia Ci usÅugi."},section3:{title:"3. ObowiÄ
zki Użytkownika",sub1:"3.1. OdpowiedzialnoÅÄ za treÅÄ",p1:"Nauczyciele i użytkownicy <1>ponoszÄ
wyÅÄ
cznÄ
odpowiedzialnoÅÄ</1> za dokÅadnoÅÄ, poprawnoÅÄ i legalnoÅÄ wszelkich treÅci pytaÅ, ÄwiczeÅ i materiaÅów dydaktycznych tworzonych lub udostÄpnianych na platformie.",items1:["Zapewnienie, że treÅci sÄ
odpowiednie dla programu edukacyjnego i wieku uczniów","OdpowiedzialnoÅÄ za prawa autorskie do używanych obrazów, dźwiÄków i tekstów","Zakaz korzystania z usÅugi w nielegalnych celach komercyjnych"],sub2:"3.2. TreÅci zabronione",prohibits:[{title:"Naruszenie prawa",desc:"TreÅci naruszajÄ
ce prawo wietnamskie lub umowy miÄdzynarodowe."},{title:"TreÅci 18+",desc:"TreÅci pornograficzne, przemoc, treÅci nieodpowiednie dla wieku uczniów."},{title:"Mowa nienawiÅci",desc:"Dyskryminacja ze wzglÄdu na pochodzenie, religiÄ, pÅeÄ."},{title:"Spam i reklamy",desc:"Korzystanie z platformy do rozpowszechniania reklam i spamu."}],sub3:"3.3. BezpieczeÅstwo konta",items3:["JesteÅ odpowiedzialny za bezpieczeÅstwo swoich danych logowania i konta Google.","Zakaz udostÄpniania konta innym osobom lub zezwalania na korzystanie z jednego konta przez wiele osób.","NiezwÅoczne powiadomienie nas w przypadku wykrycia nieautoryzowanego dostÄpu do konta."],sub4:"3.4. Prawa Autorskie do PrzesyÅanych TreÅci & Mechanizm Safe Harbor",p4:"Użytkownicy ponoszÄ
<1>wyÅÄ
cznÄ
odpowiedzialnoÅÄ</1> za prawa autorskie do wszystkich obrazów, dźwiÄków, filmów i plików danych przesyÅanych do systemu. Platforma peÅni rolÄ <3>poÅrednika hostingowego</3> i nie weryfikuje treÅci przed publikacjÄ
.",safeHarbor:{title:"ð¡ï¸ Mechanizm ZgÅaszania NaruszeÅ Praw Autorskich (Safe Harbor)",intro:"Zgodnie z wietnamskim Prawem wÅasnoÅci intelektualnej (ArtykuÅ 198b) dotyczÄ
cym odpowiedzialnoÅci poÅredników hostingowych, platforma stosuje 5-etapowy proces przyjmowania i rozpatrywania skarg dotyczÄ
cych praw autorskich:",steps:["Etap 1 â PrzyjÄcie zgÅoszenia naruszenia: Podmiot uprawniony (lub jego upoważniony przedstawiciel) przesyÅa skargÄ na poniższy adres e-mail dotyczÄ
cy praw autorskich, zawierajÄ
cÄ
: (a) identyfikacjÄ naruszajÄ
cej treÅci wraz z konkretnym odnoÅnikiem na platformie, (b) dowód zgodnego z prawem posiadania praw, (c) dane kontaktowe zgÅaszajÄ
cego oraz (d) oÅwiadczenie w dobrej wierze o prawdziwoÅci skargi. Platforma potwierdza otrzymanie zgÅoszenia w ciÄ
gu 24 godzin roboczych","Etap 2 â Tymczasowe ukrycie treÅci: JeÅli skarga zawiera wystarczajÄ
ce, ważne informacje wstÄpne, platforma proaktywnie ukryje (usunie z publicznego widoku) zgÅoszonÄ
treÅÄ w ciÄ
gu 48 godzin roboczych od potwierdzenia, aby zapobiec dalszym szkodom w trakcie weryfikacji","Etap 3 â Weryfikacja: Platforma analizuje dowody obu stron â powiadamia użytkownika, który przesÅaÅ treÅÄ, o skardze i umożliwia mu zÅożenie sprzeciwu (kontr-zgÅoszenia) wraz z dowodami w ciÄ
gu 7 dni roboczych od otrzymania powiadomienia","Etap 4 â Decyzja: Na podstawie wyników weryfikacji platforma podejmuje jednÄ
z dwóch decyzji: (a
569) jeÅli skarga zostanie potwierdzona jako zasadna lub użytkownik nie udzieli ważnej odpowiedzi w terminie â treÅÄ zostaje trwale usuniÄta; (b) jeÅli użytkownik udowodni zgodne z prawem posiadanie lub prawo do korzystania â treÅÄ zostaje przywrócona, a skarga odrzucona","Etap 5 â TrwaÅe usuniÄcie i dziaÅania wobec konta: W przypadku treÅci uznanych za naruszajÄ
ce prawa, platforma trwale usuwa je z systemu (w tym kopie zapasowe, w zakresie technicznie możliwym) i może podjÄ
Ä dziaÅania wobec naruszajÄ
cego konta (ostrzeżenie, zawieszenie lub zakoÅczenie wspóÅpracy) w zależnoÅci od wagi i czÄstotliwoÅci naruszeÅ okreÅlonych w niniejszych Warunkach"],contactLabel:"KanaÅ zgÅaszania naruszeÅ praw autorskich:",contactNote:'Temat e-maila: "ZgÅoszenie naruszenia praw autorskich" + nazwa naruszajÄ
cej treÅci. ProszÄ doÅÄ
czyÄ ważny dowód wÅasnoÅci.',legalNote:"âï¸ Podstawa prawna: Mechanizm ten zostaÅ ustanowiony zgodnie z wietnamskim Prawem wÅasnoÅci intelektualnej (nowelizacja 2022) dotyczÄ
cym odpowiedzialnoÅci poÅredników hostingowych. Poprzez terminowe rozpatrywanie ważnych skarg platforma jest zwolniona z odpowiedzialnoÅci za szkody zwiÄ
zane z treÅciami przesyÅanymi przez użytkowników."},sub5:"3.5. ZdjÄcia i dane uczniów",p5:"PrzesyÅajÄ
c zdjÄcia portretowe lub wprowadzajÄ
c imiona uczniów, potwierdzasz, że to Ty <1>decydujesz o zbieraniu i wykorzystaniu</1> tych danych oraz że <1>uzyskaÅeÅ/aÅ zgodÄ</1> rodzica lub opiekuna prawnego w przypadku uczniów poniżej 16 lat. Platforma peÅni wyÅÄ
cznie rolÄ przechowywania i wyÅwietlania danych na Twoje żÄ
danie.",items5:["Odpowiadasz za uzyskanie i przechowywanie zgody rodzica/opiekuna, zgodnie z zasadami szkoÅy i obowiÄ
zujÄ
cym prawem","Wykorzystuj zdjÄcia wyÅÄ
cznie do zajÄÄ w danej klasie â nigdy publicznie, nigdy poza klasÄ
, nigdy w celach komercyjnych","UsuÅ zdjÄcia natychmiast po wycofaniu zgody, przy zmianie klasy/szkoÅy przez ucznia lub gdy nie sÄ
już potrzebne","Nie przesyÅaj zdjÄÄ osób spoza klasy, za którÄ
odpowiadasz","Przekaż nam każde żÄ
danie rodzica, którego nie możesz obsÅużyÄ samodzielnie w aplikacji"],photoNote:"â ï¸ ZdjÄcia portretowe dzieci to wrażliwe dane osobowe. Naruszenie powyższych zobowiÄ
zaÅ może skutkowaÄ zawieszeniem konta, a odpowiedzialnoÅÄ prawna spoczywa na Tobie. Sposób przechowywania i ochrony tych danych opisuje Sekcja 10 Polityki PrywatnoÅci."},section4:{title:"4. Ograniczenie OdpowiedzialnoÅci",p1:" <1>{{name}}</1> zobowiÄ
zuje siÄ do doÅożenia wszelkich staraÅ, aby platforma dziaÅaÅa stabilnie, bezpiecznie i nieprzerwanie. Jednakże <3>nie możemy zagwarantowaÄ</3>, że usÅuga bÄdzie dostÄpna w 100% czasu i nie ponosimy odpowiedzialnoÅci prawnej w nastÄpujÄ
cych przypadkach:",items:["Przerwy w Åwiadczeniu usÅug z powodu awarii technicznych po stronie Google Firebase (hosting)","Przerwy spowodowane problemami z poÅÄ
czeniem internetowym po stronie użytkownika lub dostawcy internetu","Utrata lub uszkodzenie danych z powodu klÄsk żywioÅowych, ataków cybernetycznych lub siÅy wyższej","Szkody poÅrednie powstaÅe w wyniku korzystania lub braku możliwoÅci korzystania z usÅugi"],recommendation:"â ï¸ Zalecenie: W przypadku ważnych treÅci dydaktycznych zalecamy regularne tworzenie kopii zapasowych poprzez eksport danych do plików lokalnych. Wykonujemy okresowe kopie zapasowe systemu, ale nie gwarantujemy peÅnego przywrócenia danych w każdym przypadku.",sub1:"4.1. UsÅugi stron trzecich",p2:"Platforma integruje usÅugi stron trzecich (Google Firebase, Google AI, Buy Me a Coffee itp.). Nie ponosimy odpowiedzialnoÅci za przerwy, zmiany polityki lub bÅÄdy po stronie tych dostawców.",sub2:"4.2. Limit odszkodowania",p3:"W maksymalnym zakresie dozwolonym przez prawo, nasza odpowiedzialnoÅÄ odszkodowawcza z tytuÅu jakichkolwiek roszczeÅ nie przekroczy kwoty zapÅaconej przez Ciebie za usÅugÄ w ciÄ
gu ostatnich <1>3 miesiÄcy</1>."},section5:{title:"5. PÅatnoÅci i Zwroty",items:["OpÅaty za usÅugÄ FullGame sÄ
naliczane cyklicznie (miesiÄcznie/rocznie) i odnawiane automatycznie, chyba że zrezygnujesz.","Ceny usÅug mogÄ
ulec zmianie, o czym poinformujemy z co najmniej 30-dniowym wyprzedzeniem.","Zwroty: Wspieramy zwroty w ciÄ
gu 7 dni od daty pÅatnoÅci, jeÅli usÅuga nie dziaÅa zgodnie z obietnicÄ
.","Naruszenie Warunków prowadzÄ
ce do zamkniÄcia konta nie uprawnia do z
569wrotu pieniÄdzy."]},section6:{title:"6. ZakoÅczenie Korzystania z Konta",p1:"Zastrzegamy sobie prawo do <1>tymczasowego zawieszenia lub zamkniÄcia</1> Twojego konta bez uprzedzenia w przypadku:",items:["Naruszenia jednego lub wiÄcej punktów niniejszej umowy","DziaÅaÅ oszukaÅczych, nadużywania usÅugi lub szkodzenia innym użytkownikom","Braku aktywnoÅci konta przez dÅuższy czas (ponad 24 miesiÄ
ce)","Å»Ä
dania ze strony uprawnionych organów Åcigania"],p2:"Możesz poprosiÄ o usuniÄcie konta w dowolnym momencie, kontaktujÄ
c siÄ z nami e-mailem. Po usuniÄciu dane zostanÄ
usuniÄte z systemu w ciÄ
gu <1>30 dni roboczych</1>."},section7:{title:"7. Zmiany w Warunkach",p1:"<1>{{name}}</1> zastrzega sobie prawo do aktualizacji i zmiany niniejszych Warunków Użytkowania w dowolnym momencie w celu odzwierciedlenia zmian w usÅugach, wymogach prawnych lub zasadach operacyjnych. Powiadomienia bÄdÄ
realizowane poprzez:",items:["Widoczne ogÅoszenie na stronie na co najmniej 30 dni przed wejÅciem nowych warunków w życie","Powiadomienie e-mail wysÅane na zarejestrowane konto (w przypadku ważnych zmian)",'Aktualizacja daty "Ostatnia aktualizacja" na górze tej strony'],note:"Po okresie powiadomienia, dalsze korzystanie z usÅugi uznaje siÄ za <1>akceptacjÄ najnowszej wersji Warunków</1>. JeÅli siÄ nie zgadzasz, masz prawo zażÄ
daÄ usuniÄcia konta przed wejÅciem w życie nowych warunków."},section8:{title:"8. Prawo WÅaÅciwe i Rozstrzyganie Sporów",p1:"Niniejsze Warunki podlegajÄ
<1>prawu Socjalistycznej Republiki Wietnamu</1>. Wszelkie spory wynikajÄ
ce z niniejszych Warunków lub z nimi zwiÄ
zane bÄdÄ
rozstrzyganie zgodnie z poniższÄ
procedurÄ
:",items:["Priorytet: BezpoÅrednie negocjacje miÄdzy stronami w ciÄ
gu 30 dni","W przypadku braku porozumienia: Mediacja lub arbitraż zgodnie z przepisami prawa","Ostateczne rozwiÄ
zanie: Pozew w sÄ
dzie powszechnym wÅaÅciwym dla Wietnamu"]},relatedLinks:{label:"ð PowiÄ
zane dokumenty â Zobacz także naszÄ
PolitykÄ PrywatnoÅci:",privacy:"ð Polityka PrywatnoÅci â"},contact:{title:"Kontakt i Wsparcie",sub:"JeÅli masz pytania dotyczÄ
ce Warunków Użytkowania, chcesz zgÅosiÄ naruszenie lub potrzebujesz pomocy przy usuwaniu konta, prosimy o kontakt:",note:"Odpowiemy w ciÄ
gu <1>2â3 dni roboczych</1>."},footer:{copyright:"© {{year}} {{name}}. Wszelkie prawa zastrzeżone.",privacy:"Polityka prywatnoÅci",login:"Zaloguj siÄ"}},plLegal={shipping,privacy,terms},hero={title:"Dane Podmiotu",sub:"WÅaÅciciel i operator usÅug strony internetowej <1>{{url}}</1>",lastUpdated:"Ostatnia aktualizacja: {{date}}"},ownerInfo={title:"Dane Kontaktowe WÅaÅciciela",labelName:"PeÅne nazwisko",labelDob:"Rok urodzenia",labelNationality:"NarodowoÅÄ",nationalityValue:"Wietnam",labelAddress:"Adres",labelEmail:"Email Kontaktowy",labelPhone:"Telefon / Zalo",labelTax:"Numer Identyfikacji Podatkowej (NIP)",labelType:"Forma Biznesowa",typeValue:"Osoba fizyczna prowadzÄ
ca dziaÅalnoÅÄ (brak rejestracji firmy celowej)"},websiteInfo={title:"Informacje Ogólne o Stronie",labelName:"Nazwa UsÅugi",labelDomain:"Domena Publikacji",labelField:"ZasiÄg dziaÅalnoÅci",fieldValue:"NarzÄdzia Edukacji Interaktywnej & Software jako UsÅuga. (EdTech)",labelAudience:"Grupa docelowa",audienceValue:"Nauczyciele, Edukatorzy i Wychowawcy (Globalni)",labelLang:"GÅówny JÄzyk Frontu",langValue:"Wietnamski, z obsÅugÄ
dla wszystkich i Polski",labelServer:"Centrum Danych Hostingu",serverValue:"Google Firebase & Google Cloud Server (USA/Singapore location)"},mission={title:"Wizja Aplikacji i Nasza Misja",p1:"<1>{{name}}</1> to platforma stworzona od Nauczyciela, Dla Nauczycieli by wspomóc żmudne i niekoÅczÄ
ce siÄ procesy zarzÄ
dzania procesem dydaktycznym i gamifikacji lekcji.",p2:"Wspierana technologiÄ
zabiera klasÄ w Åwiat rozrywki pobudzajÄ
c entuzjazm, nie zapomiajÄ
c o walorach i misji edukacyjnej.",cards:[{title:"Sztuczna Inteligencja",desc:"Wypchana do peÅna modelami jÄzykowymi w celu uproszczenia ukÅadania zadaÅ."}
569,{title:"Gamifikacja",desc:"Gry rywalizacyjne oparte na zwinnych frameworkach."},{title:"StaÅy WglÄ
d",desc:"Tworzenie Åcieżek z weryfikacjÄ
realnego zaangażowania każdego z uczniów na lekcji."},{title:"Bezbarierowe",desc:"Brak koniecznoÅci instalowania oprogramowania czy logowania ze strony wychowanków."}]},channels={title:"Oficjalne Zasoby",intro:"Obserwuj poczynania twórcy <1>{{name}}</1> w sieci pod adresami:"},relatedLinks={label:"ð Zobacz Inne Notki Informacyjne Poniżej:",privacy:"ð Polityka PrywatnoÅci Platformy Firebase",terms:"ð Warunki Regulaminu Platformy",shipping:"ð Jak Dostarczamy Ci UsÅugÄ i PÅatnoÅci"},contact={title:"KanaÅ Wsparcia Live Direct",sub:"We wszystkich dyskusjach technicznych bÄ
dż sugestiach kontaktuj siÄ z nami poprzez media podane poniżej.",note:"Spodziewany czas na email odpowiedź z systemu to okoÅo <1>2â3 dni robocze</1>. Możesz odzywaÄ siÄ za pomoca aplikacji Zalo lub messengera na numer telefonu <1>{{phone}}</1>"},footer={copyright:"© {{year}} {{name}}. Wszystkie Prawa Zastrzeżone.",privacy:"PrywatnoÅÄ",terms:"Regulamin"},plAbout={hero,ownerInfo,websiteInfo,mission,channels,relatedLinks,contact,footer},logoText="Giáo Viên Äá»i Má»i",logoSubtitle="Wideo, gry edukacyjne i wiele wiÄcej",loginTitle="Zaloguj siÄ",loginDescription='Zaloguj siÄ, aby rozpoczÄ
Ä. JeÅli korzystasz z aplikacji Zalo lub Messenger, kliknij ikonÄ trzech kropek w prawym górnym rogu i wybierz opcjÄ "Otwórz w przeglÄ
darce"',loggingInBtn="Logowanie...",loginGoogleBtn="Zaloguj siÄ przez Google",loginNote="LogujÄ
c siÄ, akceptujesz nasze Warunki Użytkowania oraz PolitykÄ PrywatnoÅci.",loginFooterText="Dla nauczycieli i uczniów",highlightTools="Zbiór interaktywnych narzÄdzi dydaktycznych",highlightAI="Asystent AI do planowania lekcji, integracji, pisania raportów, ...",highlightSimulation="Wizualne symulacje (3D, 2D, ruch, ...) do lekcji",highlightClassroom="ZarzÄ
dzanie klasÄ
wychowawczÄ
",highlightFree="Gotowe do użycia, bez instalacji",loginFailed="Logowanie nieudane: {{error}}",pleaseTryAgain="ProszÄ spróbowaÄ ponownie.",loginNotePrefix="LogujÄ
c siÄ, akceptujesz nasze",loginNoteTerms="Warunki Użytkowania",loginNoteAnd="oraz",loginNotePrivacy="PolitykÄ PrywatnoÅci",loginNoteSuffix=".",disclaimerCopyright="PrzesyÅajÄ
c jakikolwiek obraz, dźwiÄk lub plik danych, potwierdzasz, że jesteÅ jego prawowitym wÅaÅcicielem lub posiadasz zgodÄ wÅaÅciciela praw autorskich. System ma peÅne prawo do natychmiastowego usuniÄcia, bez wczeÅniejszego powiadomienia, treÅci zgÅoszonych, podejrzanych o naruszenie prawa lub praw autorskich. Platforma zrzeka siÄ wszelkiej odpowiedzialnoÅci za naruszenia spowodowane przez użytkowników.",disclaimerConsent="LogujÄ
c siÄ, wyrażasz zgodÄ na powyższe warunki.",consentCheckboxLabel="PrzeczytaÅem(-am) i akceptujÄ Warunki Użytkowania, PolitykÄ PrywatnoÅci, zobowiÄ
zania dotyczÄ
ce praw autorskich oraz powyższÄ
odpowiedzialnoÅÄ za zdjÄcia i dane uczniów.",consentRequired="Zaznacz zgodÄ na warunki przed zalogowaniem.",disclaimerStudentPhoto="JeÅli przesyÅasz zdjÄcia lub imiona uczniów, potwierdzasz, że posiadasz zgodÄ rodzica lub opiekuna prawnego (wymaganÄ
dla uczniów poniżej 16 lat), że wykorzystasz je wyÅÄ
cznie do zajÄÄ we wÅasnej klasie i usuniesz, gdy nie bÄdÄ
już potrzebne.",popupHint="JeÅli nie widzisz okna logowania, sprawdź pasek zadaÅ na dole ekranu",errInvalidCredential="Twoja sesja Google w tej przeglÄ
darce wygasÅa. WyczyÅÄ pliki cookie i zaloguj siÄ ponownie.",errPopupBlocked="PrzeglÄ
darka zablokowaÅa okno logowania Google. Kliknij ikonÄ zablokowanego wyskakujÄ
cego okienka po prawej stronie paska adresu, wybierz Zawsze zezwalaj i spróbuj ponownie.",errPopupClosed="Okno logowania Google zostaÅo zamkniÄte przed wybraniem konta. Kliknij ponownie Zaloguj siÄ przez Google.",errCookiesBlocked="PrzeglÄ
darka blokuje pliki cookie, wiÄc logowanie Google nie może siÄ zakoÅczyÄ. WyczyÅÄ pliki cookie i spróbuj ponownie.",errNetwork="PoÅÄ
czenie zostaÅo przerwane podczas logowania. Sprawdź Wi-Fi lub dane mobilne i spróbuj ponownie.",errTooManyRequests="Zbyt wiele prób logowania. Odczekaj kilka minut i spróbuj ponownie.",errUserDisabled="To konto zostaÅo zablokowane. Skontaktuj siÄ z administratorem.",errWebView="Strona zostaÅa otwarta w aplikacji Zalo/Facebook, gdzie logowanie Google jest niedostÄpne. Dotknij trzech kropek w prawym górnym rogu, wybierz Otwórz w przeglÄ
darce i zaloguj siÄ ponownie.",errUnknown="Logowanie nie powiodÅo siÄ. NajczÄstszÄ
przyczynÄ
sÄ
stare pliki cookie przeglÄ
darki. Spróbuj je wyczyÅciÄ i zalogowaÄ siÄ ponownie.",errCodeHint="Kod bÅÄdu: {{code}}
569",cookieHelpBtn="ð Jak wyczyÅciÄ pliki cookie",cookieHelpTitle="JAK WYCZYÅCIÄ PLIKI COOKIE",cookieHelpStep1="Otwórz stronÄ, na której wystÄpuje bÅÄ
d.",cookieHelpStep2="NaciÅnij <b>Ctrl + Shift + Del</b> (klawisz Delete).",cookieHelpStep3="Otworzy siÄ panel <b>UsuÅ dane przeglÄ
dania</b> (jak na obrazku poniżej). Odznacz wszystko i <b>zostaw zaznaczony tylko drugi wiersz</b>.",cookieHelpStep4="W prawym górnym rogu panelu wybierz <b>WiÄcej</b> (lub <b>More</b>), a nastÄpnie <b>Od poczÄ
tku</b> (lub <b>All time</b>). Potem kliknij <b>UsuÅ dane</b> w prawym dolnym rogu.",cookieHelpStep5="Na koniec <b>zamknij caÅkowicie Chrome/Cá»c Cá»c</b> i otwórz ponownie.",cookieHelpImgAlt="Zrzut ekranu panelu UsuÅ dane przeglÄ
dania w Chrome",cookieHelpClose="Rozumiem",plLogin={logoText,logoSubtitle,loginTitle,loginDescription,loggingInBtn,loginGoogleBtn,loginNote,loginFooterText,highlightTools,highlightAI,highlightSimulation,highlightClassroom,highlightFree,loginFailed,pleaseTryAgain,loginNotePrefix,loginNoteTerms,loginNoteAnd,loginNotePrivacy,loginNoteSuffix,disclaimerCopyright,disclaimerConsent,consentCheckboxLabel,consentRequired,disclaimerStudentPhoto,popupHint,errInvalidCredential,errPopupBlocked,errPopupClosed,errCookiesBlocked,errNetwork,errTooManyRequests,errUserDisabled,errWebView,errUnknown,errCodeHint,cookieHelpBtn,cookieHelpTitle,cookieHelpStep1,cookieHelpStep2,cookieHelpStep3,cookieHelpStep4,cookieHelpStep5,cookieHelpImgAlt,cookieHelpClose},page$2={sidebarTitle:"𪢠PrzeciÄ
ganie Liny Wiedzy",newGame:"Utwórz nowÄ
grÄ",myGames:"Moje gry",viewGuideTooltip:"Zobacz instrukcjÄ",guideLabel:"Instrukcja obsÅugi",guideLabelShort:"Instrukcja",guideTitle:"Instrukcja PrzeciÄ
gania Liny",guideDesc:"Dowiedz siÄ, jak stworzyÄ grÄ w PrzeciÄ
ganie Liny dla uczniów"},share$1={loadingGame:"Wczytywanie gry...",loadError:"Nie udaÅo siÄ wczytaÄ gry. Link mógÅ wygasnÄ
Ä lub zostaÅ usuniÄty.",notFound:"Nie znaleziono gry",backHome:"WrÃ³Ä do strony gÅównej"},myGames$2={loadListError:"â BÅÄ
d podczas Åadowania listy gier",deleteConfirm:"Czy na pewno chcesz usunÄ
Ä tÄ grÄ?",deleteSuccess:"â
Gra zostaÅa usuniÄta",deleteError:"â BÅÄ
d podczas usuwania gry",loadingList:"â³ Wczytywanie listy gier...",myGamesCount:"𪢠Moje gry ({{count}})",noGames:"ð Brak gier w bibliotece",createFirstGame:"â Utwórz swojÄ
pierwszÄ
grÄ",questionCount:"Liczba pytaÅ: {{count}}",playTest:"Graj",assign:"Zadaj jako zadanie",edit:"Edytuj",delete:"UsuÅ",lockedTip:"Odblokuj subskrypcjÄ, aby otworzyÄ",extendSubscription:"PrzedÅuż dostÄp",expiredLabel:"Subskrypcja wygasÅa!",demo:{title:"PrzeciÄ
ganie Liny - Demo",badge:"Demo",hint:"Wypróbuj demo, aby poznaÄ grÄ przed stworzeniem wÅasnej"}},teamPlay={loading:"Wczytywanie...",teamBlue:"Drużyna Niebieska",teamRed:"Drużyna Czerwona",freeze:"ZAMROÅ»ENIE!",punishment:"Kara za bÅÄdnÄ
odpowiedź"},form$5={addQuestionSuccess:"â
Dodano {{count}} pytaÅ (Razem: {{total}})",updateQuestionSuccess:"â
Zaktualizowano pytanie",removeQuestionMsg:"ðï¸ UsuniÄto pytanie {{index}}",clearAllConfirm:"UsunÄ
Ä wszystkie pytania?",clearAllSuccess:"ðï¸ UsuniÄto wszystkie pytania",titleRequired:"â ProszÄ podaÄ tytuÅ gry",minQuestionsRequired:"â ProszÄ dodaÄ co najmniej 5 pytaÅ (obecnie: {{count}})",updateGameSuccess:"â
Gra zostaÅa zaktualizowana!",createGameSuccess:"â
Utworzono nowÄ
grÄ w PrzeciÄ
ganie Liny!",limitReached:"â ï¸ Wykorz
569ystaÅeÅ limit darmowych gier. Ulepsz konto, aby kontynuowaÄ.",saveError:"â BÅÄ
d zapisu gry: {{error}}",testRequireQuestions:"â ï¸ ProszÄ dodaÄ pytania przed testowaniem",untitledGame:"Bez tytuÅu",editGameTitle:"Edytuj grÄ",createGameTitle:"Utwórz nowÄ
grÄ",trialCount:"ð Wykorzystano {{current}}/{{limit}} gier w planie próbny",premiumStatus:"â
Korzystasz z planu Premium - bez limitów",proStatus:"â
Korzystasz z planu FullGame - bez limitów",formTitleLabel:"TytuÅ gry:",formTitlePlaceholder:"Wpisz tytuÅ...",configSectionTitle:"âï¸ Konfiguracja gry",team1NameLabel:"Nazwa Drużyny 1:",team2NameLabel:"Nazwa Drużyny 2:",timeLimitLabel:"Czas trwania (sekundy):",time30s:"30 sekund",time60s:"60 sekund (Standard)",time90s:"90 sekund",time120s:"120 sekund",time180s:"3 minuty",time300s:"5 minut",time600s:"10 minut",time900s:"15 minut",time1200s:"20 minut",winDiffLabel:"Przewaga punktowa do zwyciÄstwa:",wrongFreezeTimeLabel:"Czas zamrożenia za bÅÄ
d (sekundy):",gameModeLabel:"Tryb gry",modeDefault:"DomyÅlny",modeDefaultDesc:"Każda drużyna ma wÅasne pytania, odpowiadajÄ
niezależnie. Wygrywa ten, kto zyska odpowiedniÄ
przewagÄ.",modeSame:"Wspólne pytania",modeSameDesc:"Obie drużyny odpowiadajÄ
na to samo pytanie. Kto pierwszy, ten przesuwa linÄ. BÅÄdna odpowiedź zamraża drużynÄ.",modeTarget:"WyÅcig do celu",modeTargetDesc:"Pytania zapÄtlone. Drużyna, która jako pierwsza zdobÄdzie okreÅlonÄ
liczbÄ punktów, wygrywa natychmiast.",targetScoreLabel:"Liczba punktów do zwyciÄstwa:",noShuffleA:"Nie mieszaj odpowiedzi",noShuffleADesc:"Odpowiedzi bÄdÄ
wyÅwietlane w ustalonej kolejnoÅci (bez losowania)",questionOrderLabel:"KolejnoÅÄ pytaÅ",shuffleQDefault:"Losowa (domyÅlnie)",shuffleQDefaultDesc:"Pytania bÄdÄ
mieszane przy każdym uruchomieniu",noShuffleQ:"StaÅa kolejnoÅÄ",noShuffleQDesc:"Pytania pojawiÄ
siÄ dokÅadnie w takiej kolejnoÅci, w jakiej zostaÅy wpisane",endOnLast:"Koniec po ostatnim pytaniu",endOnLastDesc:"Gra koÅczy siÄ natychmiast po wyczerpaniu pytaÅ jednej z drużyn â wygrywa ten, kto ma wiÄcej punktów",controlModeLabel:"Sposób sterowania",controlTouch:"Ekran dotykowy / interaktywny",controlKeyboard:"Klawiatura (Niebiescy: Q W A S - Czerwoni: O P K L)",questionsSectionTitle:"â Lista pytaÅ ({{count}})",clearAllBtn:"ðï¸ UsuÅ wszystko",pickFromBankBtn:"ðï¸ Z bazy pytaÅ lub AI",manualInputBtn:"âï¸ Wpisz rÄcznie",questionsNote:"* Wymagane co najmniej 5 pytaÅ. Pytania bÄdÄ
siÄ powtarzaÄ w razie potrzeby.",questionListHeader:"PodglÄ
d pytaÅ",answersCountLbl:"Liczba odpowiedzi: {{count}}",editQuestionTooltip:"Edytuj to pytanie",deleteQuestionTooltip:"UsuÅ to pytanie",noQuestionsLbl:"ð Brak dodanych pytaÅ",noQuestionsDesc:"Wybierz pytania z bazy, AI lub dodaj je rÄcznie powyżej",playTestBtn:"â¶ï¸ Graj (Test)",savingBtn:"ð¾ Zapisywanie...",saveBtn:"ð¾ Zapisz grÄ",selectQuestionsTitle:"Wybierz pytania (dowolna liczba)",pickFromLessonBtn:"Z gotowych lekcji",lessonPickerTitle:"Wybierz lekcjÄ, z której chcesz pobraÄ pytania",aiAudioHint:"ð DźwiÄk w pytaniach dziaÅa tylko w trybie 'Wspólne pytania'",noAiAudioHint:"ð Audio nie jest obsÅugiwane w tym trybie",bgmLabel:"ðµ DomyÅlna muzyka w tle",bgmDefault:"DomyÅlna (Utwór 4)",bgmTrack:"Utwór {{n}}",bgmUploadHint:"Uczniowie mogÄ
zmieniÄ muzykÄ podczas gry.",bgmPrivateLabel:"Lub wgraj wÅasnÄ
(FullGame):",competitionLabel:"ð® Konkurencja",tugOfWarOption:"𪢠PrzeciÄ
ganie liny",dragonBoatOption:"ð£ WyÅcig smoczych lodzi",defaultHint:"DomyÅlnie",newHint:"NowoÅÄ",missingLibraryFields:"ProszÄ wybraÄ Cấp há»c, Môn há»c i Khá»i lá»p, aby udostÄpniÄ w bibliotece.",aiAudioWarning:"Wybierz tryb 'Wspólne pytania', aby odtwarzaÄ dźwiÄk w pytaniach",lessonPickerNoMatch:"Brak pasujÄ
cych pytaÅ (pominiÄto {{count}}).",lessonPickerAdded:'Dodano {{added}} pytaÅ z "{{title}}". PominiÄto {{skipped}} niekompatybilnych.',lessonPickerAddedOnly:'Dodano {{added}} pytaÅ z "{{title}}".'},player$3={unmute:"ð WÅÄ
cz dźwiÄk",mute:"ð Wycisz",fullscreen:"â¶ PeÅny ekran",exit:"Wyjdź",gameOver:"Koniec Gry!",draw:"Remis!",winnerLbl:"ZwyciÄzca:",finalScoreLbl:"Wynik: {{score1}} - {{score2}}",playAgainBtn:"ð Graj ponownie",viewReportBtn:"ð Raport wyników",exitBtn:"â Wyjdź",reportTitle:"ð Raport z rozgrywki",reportDraw:"Mecz zakoÅczony remisem",reportWinnerBlue:"ð Drużyna Niebieska zwyciÄża",reportWinnerRed:"ð Drużyna Czerwona zwyciÄża",reportWinnerSuffix:"wygrywa",reportScoreSuffix:"pkt",closeBtn:"â Zamknij",reportTeamBlue:"ðµ Niebiescy ({{score}} pkt)",reportTeamRed:"ð´ Czerwoni ({{score}} pkt)",reportEmpty:"Brak zarejestrowanych odpowiedzi.",reportQuestionNum:"Pytanie {{index}}",reportChosen:"Wybrano:",reportImage:"(zdjÄcie)",reportCorrectHint:"Poprawna odpowied
569ź:",audioStop:"â¹ï¸ Zatrzymaj",audioReplay:"ð SÅuchaj",assignmentIntro:"Wpisz nazwy czÅonków obu drużyn przed rozpoczÄciem",exampleNames:"Np: Ania, Tomek, Kasia...",startTugCta:"ð© Rozpocznij przeciÄ
ganie!",introStartBtn:"Rozpocznij",introRuleTime:"Czas gry: {{seconds}} sekund",introRuleDiff:"Drużyna prowadzÄ
ca o {{diff}} punktów wygrywa natychmiast",introRuleTarget:"Pierwsza drużyna z {{score}} punktami wygrywa",introRuleShared:"Obie drużyny odpowiadajÄ
na to samo pytanie â pierwsza poprawna odpowiedź zdobywa punkt",introRuleIndep:"Każda drużyna ma {{count}} pytaÅ, odpowiada niezależnie",introRuleFreeze:"BÅÄdna odpowiedź zamraża drużynÄ na {{seconds}} sekund",introRuleKeyboard:"Klawiatura: Niebiescy Q W A S â Czerwoni O P K L",introRuleTouch:"Dotknij lub kliknij odpowiedź"},plTugOfWar={page:page$2,share:share$1,myGames:myGames$2,teamPlay,form:form$5,player:player$3},title$2="Zadaj zadanie",success={title:"Zadanie utworzone pomyÅlnie!",description:"Możesz wysÅaÄ kod lub bezpoÅredni link do uczniów.",joinCodeLabel:"KOD DOÅÄCZENIA",copySuccess:"Skopiowano!",copyCode:"Kopiuj kod",shareLink:"Lub wyÅlij bezpoÅredni link:",copyLink:"Kopiuj",copied:"Skopiowano",noCodeNeeded:"Uczniowie korzystajÄ
cy z linku <strong>nie bÄdÄ
musieli wpisywaÄ kodu</strong>.",qrScan:"Zeskanuj QR, aby doÅÄ
czyÄ",qrDownload:"⬠Pobierz obraz QR"},form$4={gameInfo:{noName:"Gra bez nazwy"},remembranceName:{label:"Nazwa przypominajÄ
ca",placeholder:"np. Klasa 9A - Zadanie domowe",helperText:"Ta nazwa pomaga Ci zidentyfikowaÄ zadanie (uczniowie jej nie widzÄ
)"},expiration:{label:"Termin ważnoÅci kodu:",options:{day_one:"1 dzieÅ",day_three:"3 dni",day_seven:"7 dni",day_fifteen:"15 dni",day_year_one:"â° 1 rok (Plan FullGame)",day_year_two:"â° 2 lata (Plan FullGame)",day_year_three:"â° 3 lata (Plan FullGame)",day_year_five:"â° 5 lat (Plan FullGame)"}},createBtn:"Utwórz zadanie",allowRetry:"Pozwól uczniom na wielokrotne próby",creating:"Tworzenie..."},alerts$2={turnBasedNote:'<strong>Uwaga:</strong> Ta gra jest przeznaczona dla uczniów grajÄ
cych wspólnie na <strong>jednym urzÄ
dzeniu</strong> (komputerze/tablecie grupy), a nie dla każdego ucznia na osobnym urzÄ
dzeniu. JeÅli chcesz, aby każdy graÅ na wÅasnym urzÄ
dzeniu, wybierz funkcjÄ <strong>"Gra pojedynkowa"</strong> na stronie gÅównej.',versusNote:"<strong>Gra Pojedynkowa 1v1:</strong> Każdy uczeÅ gra na <strong>wÅasnym urzÄ
dzeniu</strong>. Uczniowie wchodzÄ
do poczekalni, wybierajÄ
przeciwnika i rozpoczynajÄ
mecz. Maksymalnie <strong>20 meczów</strong> na jedno zadanie.",versusLimit:"Masz otwarte 3 pokoje w innych zadaniach, zamknij je przed utworzeniem kolejnego.",headTiltWarning:"ðµ <strong>Ważna uwaga:</strong> Kamera gry <strong>nie może zostaÄ uruchomiona</strong>, gdy link jest otwierany przez <strong>Zalo / Messenger</strong>. Poinstruuj uczniów, aby otworzyli grÄ za pomocÄ
<strong>przeglÄ
darki telefonu</strong> (Chrome, Safari)."},errors$1={titleRequired:"ProszÄ podaÄ nazwÄ przypominajÄ
cÄ
dla zadania",unsupportedGame:"Typ gry nie jest obsÅugiwany",createFailed:"Nie udaÅo siÄ utworzyÄ zadania. Spróbuj ponownie.",endFailed:"Nie udaÅo siÄ zakoÅczyÄ zadania. Spróbuj ponownie.",extendedLinkRequired:"Potrzebujesz Planu DÅugoterminowego, aby zadawaÄ zadania na 1-2 lata.",extendedLinkLimitReached:"Przekroczono limit 50 aktywnych linków 1/2 letnich. ZakoÅcz stare zadania.",invalidCode:"NieprawidÅowy kod. Wprowadź 4-5 cyfr.",codeNotFound:"Kod nie istnieje lub wygasÅ",codeExpired:"Kod wygasÅ",assignmentNotFound:"Zadanie nie istnieje",journeyNotFound:"Kod podróży nie istnieje",connectionError:"Nie można siÄ poÅÄ
czyÄ. Sprawdź sieÄ i spróbuj ponownie.",generalError:"WystÄ
piÅ bÅÄ
d. Spróbuj ponownie.",nameRequired:"ProszÄ podaÄ swoje imiÄ! ð",nameTooShort:"ImiÄ musi mieÄ co najmniej 2 znaki!",codeTooShort:"ProszÄ wprowadziÄ peÅny kod (4 lub 5 znaków)"},common={close:"Zamknij",cancel:"Anuluj",back:"Wstecz"},duplicate={checking:"Sprawdzanie...",title:"Ta gra zostaÅa już zadana",description:"Ta lekcja zostaÅa już zadana wczeÅniej pod n
569azwÄ
:",more:"wiÄcej",viewHistory:"Zobacz historiÄ zadaÅ",assignNew:"Zadaj ponownie"},player$2={loading:"Wczytywanie gry...",unsupported:"Typ gry nieobsÅugiwany: {{type}}",notIntegrated:'Gra "{{label}}" nie jest zintegrowana z Menedżem ZadaÅ.',tryAnother:"Spróbuj z innym typem gry.",scoreUpdated:"Wynik zostaÅ zaktualizowany!",resultSaved:"Praca zostaÅa zapisana!",saveFailed:"Nie udaÅo siÄ zapisaÄ wyniku. Spróbuj ponownie.",invalidId:"NieprawidÅowy identyfikator zadania",notFound:"Nie znaleziono zadania",unsupportedType:'Typ gry "{{type}}" nie jest obsÅugiwany',loadError:"WystÄ
piÅ bÅÄ
d podczas wczytywania zadania",loadingTitle:"Wczytywanie zadania...",alreadyPlayedTitle:"To zadanie zostaÅo już wykonane!",onceOnly:"Każdy uczeÅ może wykonaÄ zadanie tylko raz.",previousResult:"Poprzedni wynik:",playedAtLabel:"Czas:",nameLabel:"ImiÄ i nazwisko:",contactTeacher:"JeÅli chcesz spróbowaÄ ponownie, skontaktuj siÄ z nauczycielem.",goBack:"Wstecz",defaultTitle:"Zadanie",studentPrefix:"UczeÅ:"},result={excellent:"Doskonale!",good:"Dobrze!",fair:"CaÅkiem nieźle!",passed:"Zaliczone",tryHarder:"Musisz siÄ bardziej postaraÄ",draw:"Remis!",winner:"ð {{name}} wygrywa!",percentageComplete:"UkoÅczono w {{percentage}}%",timeTaken:"Czas pracy: <strong>{{duration}}</strong>",saving:"Zapisywanie wyniku...",goHome:"Strona gÅówna",duration:{seconds:"{{count}} sek.",minutes:"{{count}} min.",mins_secs:"{{mins}} min {{secs}} sek.",s_short:"sek",m_short:"min"}},details={joinCode:"Kod:",status:"Status:",expired:"WygasÅo",submissionCount:"<strong>{{count}}</strong> uczniów oddaÅo zadanie",noSubmissions:"Å»aden uczeÅ jeszcze nie oddaÅ zadania",sharePrompt:"UdostÄpnij kod <strong>{{code}}</strong> uczniom, aby rozpoczÄli",table:{stt:"Lp.",members:"CzÅonkowie",players:"Gracze",name:"ImiÄ i nazwisko",result:"Wynik",score:"Punkty",duration:"Czas",submittedAt:"Oddano"},viewDetail:"SzczegóÅy",viewDetailPro:"SzczegóÅy (FullGame)",downloadExcel:"Pobierz Excel",downloadExcelFreeNote:"Wersja darmowa zawiera tylko arkusz Podsumowanie. Kup FullGame, aby uzyskaÄ dodatkowo arkusz SzczegóÅy dla każdego pytania.",hideDetail
569:"Ukryj szczegóÅy",proFeature:"Funkcja dostÄpna dla kont FullGame",itemDetailTitle:"SZCZEGÃÅY ODPOWIEDZI",questionNum:"Pytanie {{index}}:",noTitle:"(Brak tytuÅu)",noContent:"(Brak treÅci)",imageAnswer:"Obraz",notDone:"Niewykonane",correct:"â Poprawnie",wrong:"â BÅÄ d · Poprawna odpowiedź: <strong>{{answer}}</strong>",wrongChosen:"â BÅÄ d ({{chosen}}) · Poprawna odpowiedź: <strong>{{correct}}</strong>",correctChosen:"â Poprawnie ({{chosen}})",correctPaced:"â Poprawnie · Wybrano <strong>{{chosenKey}}</strong>: {{chosenText}}",wrongPaced:"â Wybrano <strong>{{chosenKey}}</strong>: {{chosenText}} · Poprawna odpowiedź: <strong>{{correctKey}}</strong>: {{correctText}}",reports:{fullImage:"ð¼ï¸ Zobacz peÅny raport",fullQuiz:"ð¯ Zobacz peÅny raport",proSuffix:" (FullGame)"},wrongAttempts:"â BÅÄdów: {{n}}",pointUnit:"pkt",attemptNum:"Próba {{n}}:",decodeImage:"Dekodowanie obrazu:",correctExcl:"Dobrze!",wrongExcl:"Źle",matchHistory:"Historia meczów",totalQuestions:"Suma pytaÅ",scoreLabel:"Wynik",handSlashNote:"Quiz Fruit Ninja nie zapisuje szczegóÅów każdego pytania"},join={title:"DoÅÄ cz do zabawy! ð",journeyTitle:"ðºï¸ Rozpocznij podróż!",nameTitle:"Jak masz na imiÄ? ð",codeCaption:"Wpisz kod od nauczyciela (4-5 znaków)",journeyCaption:"Wpisz kod X + 4 cyfry od nauczyciela",nameCaption:"Aby nauczyciel wiedziaÅ, kim jesteÅ",inputLabel:"Kod doÅÄ czenia",inputPlaceholder:"Wpisz 4-5 cyfr",typingCode:"â¨ï¸ Wpisywanie kodu...",clickHere:"ð Kliknij tutaj i wpisz kod!",finding:"Szukanie...",continue:"â Kontynuuj!",enterJourney:"ðºï¸ Wjedź do podróży!",enterPanorama:"ð¨ Wejdź na wystawÄ!",enterScanner:"ð± Otwórz skaner",enterGame:"ð® Graj!",back:"Wstecz",nameLabel:"Twoje imiÄ",namePlaceholder:"np. Jan Kowalski ð",currentTask:"Twoje zadanie ð¯",footer:"ð Kod otrzymasz od nauczyciela · X = Podróż",platformName:"ð Platforma Innowacyjnego Nauczyciela"},history={title:"Historia zadaÅ",stats:"{{count}} utworzonych zadaÅ",deleteExpiredBtn:"ðï¸ UsuÅ wygasÅe ({{count}}) â zalecane",deleteExpiredTip:"Pomaga utrzymaÄ wydajnoÅÄ strony",endConfirm:`Czy na pewno chcesz zakoÅczyÄ zadanie "{{title}}"? 570 571Uczniowie nie bÄdÄ mogli już doÅÄ czyÄ za pomocÄ kodu.`,deleteArchiveConfirm:`Czy na pewno chcesz usunÄ Ä "{{title}}"? 572 573Wyniki tej sesji zostanÄ trwale usuniÄte i nie bÄdzie można ich odzyskaÄ.`,empty:{title:"Brak zadaÅ",description:'Przejdź do "Moje aktywnoÅci" i kliknij "Zadaj" przy wybranej grze',button:"Idź do Moich aktywnoÅci"},loadError:"Nie udaÅo siÄ wczytaÄ listy zadaÅ. Spróbuj ponownie.",deleteError:"Nie udaÅo siÄ usunÄ Ä wygasÅych zadaÅ. Spróbuj ponownie.",table:{stt:"Lp.",reminderName:"Nazwa przypominajÄ ca",lesson:"Lekcja",codeLink:"Kod / Link",status:"Status",statusEnded:"ZakoÅczone",statusExpired:"WygasÅo",submitted:"Oddano",studentCount:"Uczniów",actions:"Operacje",copyCode:"Kopiuj kod",copyLink:"Kopiuj link",viewDetail:"SzczegóÅy",endAssignment:"ZakoÅcz zadanie",deleteArchive:"UsuÅ zarchiwizowanÄ sesjÄ"},deleteModal:{title:"ðï¸ UsuÅ wygasÅe zadania",successTitle:"â UsuniÄto pomyÅlnie",successMsg:"UsuniÄto {{count}} wygasÅych zadaÅ wraz z wynikami.",confirmMsg:"Zamierzasz usunÄ Ä {{count}} wygasÅych lub zakoÅczonych zadaÅ wraz z pracami uczniów.",warning:"Tej operacji nie można cofnÄ Ä. Dane wyników zostanÄ trwale usuniÄte.",deleting:"Usuwanie...",confirmBtn:"Potwierdź usuniÄcie"}},gameTypes={tug_of_war:{label:"PrzeciÄ ganie Liny",instruction:"𪢠Wpisz imiona graczy i rozpocznij przeciÄ ganie! Odpowiadaj poprawnie, aby przyciÄ gnÄ Ä linÄ."},flip_puzzle:{label:"Gra w UkÅadankÄ",instruction:"ð§© Odkrywaj kafelki, odpowiadajÄ c na pytania!"},quiz_game:{label:"PrzeciÄ ganie i Upuszczanie",instruction:"ð¯ PrzeciÄ gnij odpowiedź do wÅaÅciwego miejsca. Kliknij 'ZakoÅcz', gdy skoÅczysz!"},hand_slash_quiz:{label:"Quiz Fruit Ninja",instruction:"â Użyj dÅoni (lub myszy), aby przeciÄ Ä poprawnÄ odpowiedź. Unikaj bomb!"},wheel_quiz:{label:"KoÅo Quizu",instruction:"ð¡ ZakrÄÄ koÅem i odpowiedz na pytania, aby zdobyÄ punkty."},interactive_video:{label:"Interaktywne Wideo",instruction:"ð¬ OglÄ daj wideo i odpowiadaj na pojawiajÄ ce siÄ pytania."},crossword_puzzle:{label:"Krzyżówka / HasÅo Sekretne",instruction:"Kliknij
573numer rzÄdu, aby otworzyÄ pytanie i odgadnÄ
Ä czerwone hasÅo!"},interactive_image:{label:"Interaktywny Obraz",instruction:"Kliknij w punkty ð na obrazie, aby zobaczyÄ informacje lub odpowiedzieÄ na pytania!"},head_tilt_quiz:{label:"Quiz Przechylania GÅowy",instruction:"ð¤ Przechyl gÅowÄ w lewo lub w prawo, aby wybraÄ odpowiedź A lub B!"},paced_quiz:{label:"Szybki Quiz",instruction:"â±ï¸ Czytaj pytania i wybieraj odpowiedzi. RozwiÄ
ż wszystkie, aby zobaczyÄ wynik!"},pose_quiz:{label:"Äwiczenia ABC",instruction:"ð§ Wybierz poprawnÄ
odpowiedź naÅladujÄ
c pozycjÄ postaci. UkoÅcz wszystkie, aby zobaczyÄ wynik!"},turn_based_game:{label:"Gra Turowa",instruction:"ð² Wpisz imiona graczy, rzuÄ koÅciÄ
i Åcigaj siÄ do celu! Odpowiadaj poprawnie, aby pokonaÄ przeszkody."},versus_game:{label:"Gra Pojedynkowa",instruction:"âï¸ Odpowiadaj poprawnie, aby przepchnÄ
Ä kij w stronÄ przeciwnika. Wygrywa ten, kto pierwszy osiÄ
gnie cel!"}},plAssignment={title:title$2,success,form:form$4,alerts:alerts$2,errors:errors$1,common,duplicate,player:player$2,result,details,join,history,gameTypes},sidebar={title:"Quiz Przechylania GÅowy",upgradePro:"Ulepsz Konto",create:"Stwórz nowÄ
lekcjÄ",myLessons:"Moje lekcje",tutorial:"Wideo instruktażowe"},quota={used:"Wykorzystano {{count}}/{{limit}} lekcji",limitReached:"Limit darmowych lekcji wyczerpany",proPermanent:"Brak limitu na zawsze",proDaysRemaining:"{{days}} dni bez limitu"},form$3={createTitle:"Stwórz nowÄ
lekcjÄ",editTitle:"Edytuj lekcjÄ",titleLabel:"Nazwa lekcji",questionsCount:"Pytania ({{count}}/{{max}})",questionLabel:"Pytanie {{index}}",questionEmpty:"(Nie wpisano)",questionContent:"TreÅÄ pytania:",questionPlaceholder:"Wpisz pytanie...",answerALabel:"Odpowiedź A (przechyÅ w lewo):",answerAPlaceholder:"Wpisz odpowiedź A...",answerBLabel:"Odpowiedź B (przechyÅ w prawo):",answerBPlaceholder:"Wpisz odpowiedź B...",correctAnswerLabel:"Poprawna odpowiedź:",addQuestion:"Dodaj pytanie",save:"Zapisz lekcjÄ",saving:"Zapisywanie...",cancel:"Anuluj",errorTitle:"ProszÄ podaÄ nazwÄ lekcji",errorNoQuestion:"Wymagane jest co najmniej 1 pytanie",errorQuestionEmpty:"Pytanie {{index}} nie może byÄ puste",errorAnswerA:"Pytanie {{index}}: Odpowiedź A nie może byÄ pusta",errorAnswerB:"Pytanie {{index}}: Odpowiedź B nie może byÄ pusta",errorCorrect:"Pytanie {{index}}: ProszÄ wybraÄ poprawnÄ
odpowiedź",errorLoad:"Nie udaÅo siÄ wczytaÄ lekcji",errorSave:"WystÄ
piÅ bÅÄ
d podczas zapisywania",maxQuestionsAlert:"Maksymalna liczba pytaÅ to {{max}}",minQuestionsAlert:"Wymagane jest co najmniej 1 pytanie",questionsSectionTitle:"Pytania ({{count}})",pickFromBankBtn:"ðï¸ Wybierz z Bazy lub AI",manualInputBtn:"âï¸ Wpisz rÄcznie",questionsNote:"Każde pytanie musi mieÄ odpowiedź A (przechyÅ w lewo) i odpowiedź B (przechyÅ w prawo), wybierz poprawnÄ
odpowiedź.",questionListHeader:"Lista pytaÅ",noQuestionsLbl:"Brak pytaÅ",noQuestionsDesc:"Wybierz z Bazy pytaÅ lub wpisz rÄcznie, aby dodaÄ pytania.",editQuestionTooltip:"Edytuj pytanie",deleteQuestionTooltip:"UsuÅ pytanie",removeQuestionMsg:"UsuniÄto pytanie nr {{index}}",clearAllBtn:"UsuÅ wszystko",clearAllConfirm:"Czy na pewno chcesz usunÄ
Ä wszystkie pytania?",clearAllSuccess:"Wszystkie pytania zostaÅy usuniÄte",addQuestionSuccess:"Dodano {{count}} pytaÅ (razem: {{total}})",updateQuestionSuccess:"Zaktualizowano pytanie",selectQuestionsTitle:"Wybierz pytania z Bazy",skippedNot2Answers:"PominiÄto {{count}} pytaÅ, które nie majÄ
dokÅadnie 2 odpowiedzi (nie pasujÄ
do Quizu Przechylania GÅowy)",noValidQuestions:"Brak pasujÄ
cych pytaÅ â Quiz Przechylania GÅowy wymaga pytaÅ z dokÅadnie 2 odpowiedziami",importSummary:"Dodano {{added}} pytaÅ | PominiÄto {{skipped}} pytaÅ (brak 2 odpowiedzi)",allowRetryLabel:"Pozwól uczeÅ na wielokrotne próby (dla zadaÅ domowych)",allowRetryDesc:"Uczniowie mogÄ
graÄ wielokrotnie w tej samej przeglÄ
darce. Zostanie wysÅany ostatni wynik.",sensitivityLabel:"CzuÅoÅÄ przechyÅu (stopnie): {{value}}°",sensitivityDesc:"KÄ
t nachylenia potrzebny do rozpoznania odpowiedzi. Im mniejsza wartoÅÄ, tym wiÄksza czuÅoÅÄ (domyÅlnie 20°).",autoNextDelayLabel:"Czas do automatycznego przejÅcia: {{value}} sek.",autoNextDelayDesc:"Po udzieleniu odpowiedzi system automatycznie przejdzie do nastÄpnego pytania po tym czasie (dom
573yÅlnie 3 sek.).",shuffleAnswers:"ð Tasuj odpowiedzi",shuffleAnswersDesc:"Zmieniaj pozycje A/B losowo w każdym pytaniu â nie wpÅywa to na poprawnÄ
odpowiedź.",noCameraMode:"ð· Używaj kamery (przechyl gÅowÄ, aby odpowiedzieÄ)",noCameraModeDesc:"WÅÄ
czone: uczniowie przechylajÄ
gÅowÄ przed kamerÄ
. WyÅÄ
czone: dotykajÄ
odpowiedzi, kamera niepotrzebna.",ttsLabel:"ð GÅos AI",ttsReady:"â
Gotowy",ttsNeeded:"â ï¸ Wymaga konfiguracji",ttsDesc:"Automatyczne czytanie pytaÅ przez AI, jeÅli pytanie nie ma wgranego dźwiÄku.",bgmDefault:"ðµ DomyÅlna muzyka",bgmNone:"DomyÅlnie (Utwór 1)",bgmTrack:"Utwór {{n}}",bgmDesc:"Uczniowie mogÄ
zmieniÄ muzykÄ w trakcie gry.",bgmCustom:"Wgraj wÅasnÄ
muzykÄ (FullGame):",bgmMyMusic:"Moja muzyka",bgColorLabel:"ð¨ Kolor tÅa ramki",bgQuestion:"â Ramka pytania",bgAnswerA:"ð Ramka odpowiedzi A",bgAnswerB:"ð Ramka odpowiedzi B",bgReset:"DomyÅlnie",importLesson:"ð Z istniejÄ
cej lekcji",importLessonTitle:"Dodaj pytania z innej lekcji",errorLibrarySelection:"ProszÄ wybraÄ Poziom, Przedmiot i KlasÄ, aby opublikowaÄ w Bibliotece spoÅecznoÅci.",libraryLargeAlert:"Lekcja jest za duża, aby opublikowaÄ jÄ
w Bibliotece spoÅecznoÅci. Lekcja zostaÅa jednak zapisana pomyÅlnie."},myLessons={title:"Moje Lekcje",subtitle:"ZarzÄ
dzaj swoimi Quizami Przechylania GÅowy",empty:"Nie masz jeszcze żadnych lekcji. Stwórz nowÄ
z menu po lewej stronie, aby zaczÄ
Ä.",questionsCount:"{{count}} pytaÅ",updatedAt:"Aktualizacja: {{date}}",sharedBadge:"UdostÄpnione",play:"Graj",edit:"Edytuj",assign:"Zadaj",share:"UdostÄpnij",copyLink:"Kopiuj link",unshare:"Cofnij udostÄpnianie",deleteTitle:"Potwierdź usuniÄcie",deleteMessage:"Czy na pewno chcesz usunÄ
Ä tÄ lekcjÄ? Tej operacji nie można cofnÄ
Ä.",deleteCancel:"Anuluj",deleteConfirm:"UsuÅ",toastDeleteSuccess:"Lekcja usuniÄta pomyÅlnie",toastDeleteError:"Nie udaÅo siÄ usunÄ
Ä lekcji",back:"Wstecz",toastLoadError:"Nie udaÅo siÄ wczytaÄ listy lekcji",toastShareSuccess:"Link do udostÄpniania skopiowany!",toastShareError:"Nie udaÅo siÄ udostÄpniÄ lekcji",toastCopySuccess:"Link skopiowany!",toastUnshareError:"Nie udaÅo siÄ cofnÄ
Ä udostÄpniania",lockedTip:"Odnów subskrypcjÄ, aby odblokowaÄ",pinExpired:"â ï¸ Gói Äã hết hạn!",createNewFirst:"â Stwórz pierwszÄ
lekcjÄ",demo:{title:"Quiz Przechylania GÅowy - Demo",badge:"Demo",hint:"Wypróbuj demo, aby poznaÄ grÄ przed stworzeniem wÅasnej lekcji"}},game$1={questionCounter:"Pytanie {{current}}/{{total}}",scoreCorrect:"Dobrze:",scoreIncorrect:"Źle:",tiltLeft:"PrzechyÅ w lewo",tiltRight:"PrzechyÅ w prawo",holdNeutral:"Trzymaj gÅowÄ prosto, aby kontynuowaÄ...",feedbackCorrect:"Dobrze!",feedbackIncorrect:"Źle!",correctAnswerIs:"Poprawna odpowiedź: {{answer}}",nextQuestion:"NastÄpne pytanie",finish:"ZakoÅcz",loadingCamera:"Uruchamianie kamery...",calibrating:"Trzymaj gÅowÄ prosto, trwa kalibracja...",exit:"Wyjdź",doneTitle:"Gotowe!",doneScore:"Poprawne odpowiedzi: {{correct}}/{{total}}",doneIncorrect:"BÅÄdy: {{count}}",doneExit:"Wyjdź",doneRestart:"Graj ponownie",reportBtn:"ð Zobacz raport",reportTitle:"ð Raport",reportStats:"{{correctCount}}/{{questionsCount}} poprawnych",back:"Wstecz",questionLabel:"Pytanie {{n}}",chosenLabel:"Wybrano:",correctLabel:"Poprawnie:",tiltContextTip:"ð Kliknij lub przechyl gÅowÄ, aby wybraÄ",emojiContextTip:"ð Pokaż odpowiedni wyraz twarzy, aby wybraÄ",bgmOn:"Muzyka: WÅ.",bgmOff:"Muzyka: WYÅ.",nextShort:"Dalej",errorWebGL:"Twoja przeglÄ
darka nie há» trợ WebGL. Spróbuj użyÄ Chrome.",errorDenied:"Brak dostÄpu do kamery. Zezwól na korzystanie z kamery w ustawieniach przeglÄ
darki.",errorZaloBlocked:'Otwarcie w Zalo/
573Messenger blokuje kamerÄ. Kliknij 3 kropki i wybierz "Otwórz w przeglÄ
darce", aby graÄ!',faceTheCamera:"Skieruj twarz do kamery",noCameraTip:"ð· Nie widzisz kamery? Kliknij tutaj"},instructions$1={title:"Jak graÄ w Quiz Przechylania GÅowy",step1Title:"1. Zezwól na dostÄp do kamery",step1Desc:'Gra potrzebuje kamery do rozpoznawania twarzy. Kliknij "Zezwól" (Allow) w przeglÄ
darce.',step2Title:"2. Przechylaj gÅowÄ, aby wybraÄ odpowiedź",step2Desc:"Przechyl w lewo lub w prawo, aby wybraÄ opcjÄ. Musisz przechyliÄ o wiÄcej niż 15 stopni.",step3Title:"3. (Opcjonalnie) Każde pytanie może byÄ dla innego ucznia",step3Desc:'Po każdym pytaniu może podejÅÄ inny uczeÅ. Nauczyciel klika "NastÄpne pytanie".',tip:"Zawiera {{count}} pytaÅ",fullscreen:"PeÅny ekran",ready:"Gotowy do gry!",loading:"Wczytywanie...",startCameraTip:'NaciÅnij "Start", aby uruchomiÄ kamerÄ',modeTilt:"âï¸ Przechyl gÅowÄ",modeEmoji:"ð Wyraz twarzy",emojiStep1Title:"Rozpoznawanie twarzy przez kamerÄ",emojiStep1Desc:"Upewnij siÄ, że oÅwietlenie jest dobre i twarz jest skierowana do kamery.",emojiStep2Title:"Dwa emoji po lewej i prawej stronie",emojiStep2Desc:"Każde emoji odpowiada jednej odpowiedzi. Emoji zmieniajÄ
siÄ losowo w każdym pytaniu.",emojiStep3Title:"Pokaż wyraz twarzy odpowiadajÄ
cy emoji",emojiStep3Desc:"Utrzymaj wyraz twarzy przez okoÅo 1 sekundÄ, aż pasek postÄpu siÄ zapeÅni."},share={lessonBy:"Lekcja przygotowana przez {{name}}",notFound:"Nie znaleziono lekcji",linkInvalid:"Link jest nieprawidÅowy lub lekcja zostaÅa usuniÄta.",loading:"Wczytywanie lekcji...",goHome:"Powrót do strony gÅównej",cameraPending:'NaciÅnij "Start", aby uruchomiÄ kamerÄ'},plHeadTiltQuiz={sidebar,quota,form:form$3,myLessons,game:game$1,instructions:instructions$1,share},title$1="ðï¸ Bank PytaÅ",stats={count:"{{count}} / 1000 pytaÅ",unit:"pytaÅ"},editor={manualEntry:"Wprowadzanie rÄczne",editQuestion:"Edytuj pytanie",questionNum:"Pytanie {{index}}",questionContent:"TreÅÄ pytania:",typeAbcd:"ABCD",typeTrueFalse:"Prawda/FaÅsz",typeMultiple:"Wielokrotny wybór",typeShortAnswer:"Krótka odpowiedź",typeChangeWarning:"Zmiana typu pytania spowoduje utratÄ obecnych treÅci. Czy kontynuowaÄ?",simpleKeyboard:"⨠Prosta klawiatura",mathLive:"⨠MathLive",restrictedTo:"Tylko pytania typu: {{type}}",maxAnswersSuffix:"z maksymalnie {{count}} odpowiedziami",answersTitle:"Odpowiedzi (zaznacz poprawnÄ
):",answersMultipleTitle:"Odpowiedzi (zaznacz poprawne):",addAnswer:"Dodaj odpowied
573ź",deleteTooltip:"UsuÅ",shortAnswerGuide:"Zaznacz tekst w pytaniu -> kliknij 'Oznacz jako odpowiedź', aby utworzyÄ lukÄ.",markAsAnswer:"Oznacz jako odpowiedź",resetAnswer:"Resetuj odpowiedź",correctAnswerLabel:"Poprawna odpowiedź:",altAnswersLabel:"Alternatywne odpowiedzi:",altAnswerPlaceholder:"Wpisz innÄ
poprawnÄ
wersjÄ...",addAltAnswer:"Dodaj",maxSelection:"(Maksymalnie {{count}} pytaÅ)",loadedCount:"ZaÅadowano: {{count}} pytaÅ{{hasMore}}",hasMoreSuffix:" (jeszcze sÄ
)",searchInternal:"Szukaj w zaÅadowanych pytaniach...",selectAll:"Wybierz wszystkie {{count}}",deselectAll:"Odznacz wszystko",selectedCount:"Wybrano: {{count}}",tryLoadMore:"Spróbuj kliknÄ
Ä 'ZaÅaduj wiÄcej', aby przeszukaÄ resztÄ",loading:"Wczytywanie...",loadMore:"ZaÅaduj kolejne {{count}} pytaÅ",fontSize:{general:"Rozmiar globalny",small:"MaÅe",medium:"Årednie",large:"Duże",xl:"Bardzo duże",huge:"Ogromne"},imageSize:{small:"MaÅe",medium:"Årednie",large:"Duże",xl:"Bardzo duże",sizeSmall:"MaÅe",sizeMedium:"Årednie",sizeLarge:"Duże",sizeXl:"Bardzo duże"},syncToBank:{tooltip:"Zaktualizuj to pytanie w Banku (używa zasobów â używaj tylko w razie potrzeby)",confirm:"Kliknij ponownie, aby potwierdziÄ synchronizacjÄ",success:"â
Zsynchronizowano!"},closeTooltip:"Zamknij",deleteQuestionTooltip:"UsuÅ pytanie",duplicateQuestionTooltip:"Duplikuj pytanie",simpleKeyboardTooltip:"Użyj standardowej klawiatury",mathLiveTooltip:"Użyj edytora wzorów matematycznych"},alerts$1={multiTypeHint:"Możesz tworzyÄ pytania różnych typów w jednej lekcji.",answerLimit:{multiple:"Każde pytanie może mieÄ od 2 do {{max}} odpowiedzi.",single:"Każde pytanie musi mieÄ dokÅadnie 2 odpowiedzi (A i B)."},pastingImage:"PrzesyÅanie wklejonego obrazu...",saveGuidance:"ð¾ Zaleca siÄ wpisanie mniej niż 10 pytaÅ i klikniÄcie Zapisz, a nastÄpnie dodawanie kolejnych â aby uniknÄ
Ä utraty danych.",noQuestionsPlaceholder:"Brak pytaÅ. Kliknij przycisk poniżej, aby dodaÄ pierwsze pytanie.",quotaReached:"Bank osiÄ
gnÄ
Å 1000 pytaÅ â przy dodawaniu nowych, najstarsze zostanÄ
usuniÄte.",quotaWarning:"Używasz {{count}}/1000 pytaÅ. Gdy bÄdzie peÅny, nowe zastÄ
piÄ
najstarsze."},empty$1={noResults:"Nie znaleziono pytaÅ",noQuestions:"Brak pytaÅ w bazie",tryDifferentKeyword:"Spróbuj innego sÅowa kluczowego",autoSaveInfo:"Pytania sÄ
automatycznie zapisywane, gdy tworzysz je w innych moduÅach.",notEntered:"(Brak treÅci)",drafting:"Edytowanie..."},actions$1={searchPlaceholder:"Wpisz treÅÄ pytania...",addQuestion:"Dodaj pytanie",duplicateLastQuestion:"Duplikuj ostatnie pytanie",save:"Zapisz {{count}} pytaÅ",saveChanges:"Zapisz zmiany",cancel:"Anuluj",useSelected:"Użyj {{count}} wybranych",exportAll:"Eksportuj wszystko",importExcel:"Importuj z Excel/Word",importFromFile:"Importuj z pliku"},error$1={validation:{maxQuestions:"Maksymalna liczba pytaÅ to {{count}}.",atLeastOne:"Musisz dodaÄ co najmniej jedno pytanie.",maxReached:"Przekroczono limit: {{count}} pytaÅ (obecnie: {{current}}).",maxQuestionsReached:"OsiÄ
gniÄto maksymalnÄ
liczbÄ wybranych pytaÅ ({{count}}).",emptyQuestion:"TreÅÄ pytania {{index}} nie może byÄ pusta.",atLeastTwoAnswers:"Pytanie musi mieÄ co najmniej 2 odpowiedzi.",maxAnswers:"Pytanie {{index}} może mieÄ maksymalnie {{count}} odpowiedzi.",mustHaveCorrect:"Pytanie {{index}} musi mieÄ co najmniej jednÄ
poprawnÄ
odpowiedź.",mustHaveMultipleCorrect:"Pytanie {{index}} musi mieÄ co najmniej jednÄ
poprawnÄ
odpowiedź.",emptyAnswer:"Odpowiedź w pytaniu {{index}} nie może byÄ pusta.",emptyStatement:"Twierdzenie w pytaniu {{index}} nie może byÄ puste.",mustHaveCorrectAnswer:"Pytanie {{index}} musi mieÄ poprawnÄ
odpowiedź."},syncFailed:"Synchronizacja pytania {{index}} nie powiodÅa siÄ: {{message}}",pasteImageFailed:"Nie udaÅo siÄ przesÅaÄ obrazu ze schowka.",audioUploadFailed:"PrzesyÅanie pliku audio nie powiodÅo siÄ. Sprawdź poÅÄ
czenie i naciÅnij Zapisz ponownie."},confirm={deleteAudio:"UsuÅ nagranie audio"},bgm={uploadBtn:"PrzeÅlij muzykÄ",uploadTooltip:"PrzeÅlij wÅasnÄ
muzykÄ tÅa",deleteTooltip:"UsuÅ wÅasnÄ
muzykÄ",customLabel:"WÅasna muzyka",proOnly:"Tylko FullGame PLAN",proDesc:"Kup FullGame, aby przesÅaÄ wÅasnÄ
muzykÄ tÅa.",upgradeBtn:"Kup FullGame",errorType:"Akceptowane sÄ
tylko pliki .mp3, .wav, .ogg",errorSize:"Plik zbyt duży ({{size}} MB). Maksimum 5 MB.",errorLogin:"Musisz byÄ zalogowany, aby przesÅaÄ muzykÄ.",errorGeneric:"PrzesyÅanie nie powiodÅo siÄ. Spróbuj ponownie.",disclaimer:{title:"âï¸ Prawa autorskie",intro:"PrzesyÅajÄ
c muzykÄ, potwierdzasz, że:",point1:"JesteÅ wÅaÅcicielem lub masz prawo do używania tego utworu.",point2:"Muzyka nie narusza praw autorskich osób trzecich.",point3:"Ponosisz peÅnÄ
odpowiedzialnoÅÄ prawnÄ
za wszelkie powiÄ
zane kwestie.",cancel:"Anuluj",confirm:"Zgadzam siÄ, kontynuuj przesyÅanie"}},lessonPicker={title:"Dodaj pytania z istniejÄ
cej lekcji",loadMore:"ZaÅaduj wiÄcej",errorList:"Nie udaÅo siÄ zaÅadowaÄ listy lekcji. Spróbuj ponownie.",errorLesson:"Nie udaÅo siÄ zaÅadowaÄ lekcji. Spróbuj ponownie.",noQuestions:"Ta lekcja nie ma jeszcze żadnych pytaÅ.",emptyFeature:"Nie masz jeszcze żadnych lekcji w module {{feature}}.",questionCount:"{{count}} pytaÅ",conversionNote:"Pytania zostanÄ
skonwertowane do odpowiedniego formatu. Niektóre pytania mogÄ
zostaÄ pominiÄte, jeÅli sÄ
niekompatybilne.",cancel:"Anuluj",featureLabels:{"head-tilt-quiz":"Quiz Przechylania GÅowy","tug-of-war-game":"PrzeciÄ
ganie Liny","flip-puzzle-game":"UkÅadanka","quiz-game":"Quiz PrzeciÄ
gnij i UpuÅÄ","hand-slash-quiz":"Quiz Przecinania Owoców","crossword-puzzle":"Krz
573yżówka","interactive-image":"Interaktywny Obraz","interactive-video":"Interaktywne Wideo","pose-quiz":"Quiz Pozycji","versus-game":"Gra Pojedynkowa","wheel-quiz":"KoÅo Fortuny","turn-based-game":"Gra Turowa","paced-quiz":"Quiz na Czas",wheel_quiz:"KoÅo Fortuny",hand_slash:"Quiz Przecinania Owoców",head_tilt:"Quiz Przechylania GÅowy",paced_quiz:"Quiz na Czas",tug_of_war:"PrzeciÄ
ganie Liny",pose_quiz:"Quiz Pozycji",turn_based:"Gra Turowa",versus_game:"Gra Pojedynkowa",star_bag:"Worek SzczÄÅliwych Gwiazd",minesweeper:"Saper",crossword:"Krzyżówka",interactive_image:"Interaktywny Obraz",journey:"Podróż",interactive_video:"Interaktywne Wideo"}},uploader={image:{label:"ZdjÄcie",uploadBtn:"PrzeÅlij z komputera",cropUploadBtn:"Przytnij i przeÅlij",cropUploadHint:"Wybierz obraz, najpierw przytnij, potem przeÅlij",errorType:"ProszÄ wybraÄ plik graficzny",errorGeneric:"BÅÄ
d podczas przesyÅania. Spróbuj ponownie.",uploading:"PrzesyÅanie...",tooltipUpload:"PrzeÅlij zdjÄcie z komputera",cropTitle:"Przytnij zdjÄcie",cropHint:"PrzeciÄ
gnij, aby wybraÄ obszar do zachowania. PrzyciÄcie daje ostrzejszy i lżejszy obraz.",cropConfirm:"Przytnij i przeÅlij",cropCancel:"Anuluj",rotateLeft:"ObrÃ³Ä w lewo o 90°",rotateRight:"ObrÃ³Ä w prawo o 90°",cropTooltip:"Przytnij / obrÃ³Ä zdjÄcie",errorCropLoad:"Nie udaÅo siÄ wczytaÄ zdjÄcia do przyciÄcia. Spróbuj ponownie."},audio:{uploadBtn:"PrzeÅlij dźwiÄk",recordBtn:"Nagraj",stopBtn:"Zatrzymaj",aiVoiceBtn:"GÅos AI",uploading:"PrzesyÅanie...",errorMic:"Brak dostÄpu do mikrofonu. ProszÄ przyznaÄ uprawnienia.",proOnly:"ð Tylko dla FullGame PLAN",proDesc:"Kup FullGame (200k/rok), aby móc przesyÅaÄ dźwiÄk do pytaÅ.",upgradeBtn:"Kup FullGame",tooltipUpload:"PrzeÅlij dźwiÄk (MP3/WAV/OGG, maks. 5MB)",tooltipUploadPro:"PrzeÅlij dźwiÄk â Tylko FullGame PLAN",tooltipRecord:"Nagraj dźwiÄk bezpoÅrednio",tooltipRecordPro:"Nagrywanie â Tylko FullGame PLAN",tooltipAi:"Stwórz gÅos AI",tooltipStop:"Zatrzymaj nagrywanie",tooltipPlay:"Plik dźwiÄkowy â kliknij, aby odsÅuchaÄ",tooltipDelete:"UsuÅ dźwiÄk",confirmTitle:"ð¤ Potwierdź nagranie",confirmDesc:"OdsÅuchaj nagranie przed użyciem:",btnRetry:"Nagraj ponownie",btnUse:"Użyj nagrania",aiModal:{title:"ðï¸ Stwórz gÅos AI",desc:"Zostaniesz przekierowany do narzÄdzia AI. Stwórz plik .mp3, a nastÄpnie wrÃ³Ä tutaj i przeÅlij go.",instruction:"Po utworzeniu pliku .mp3, przeÅlij go tutaj:",btnOpen:"Rozumiem, otwórz narzÄdzie",btnClose:"Zamknij"},pendingHint:"â³ Plik jeszcze nie przesÅany â naciÅnij Zapisz, aby zakoÅczyÄ."}},plQuestionBank={title:title$1,stats,editor,alerts:alerts$1,empty:empty$1,actions:actions$1,error:error$1,confirm,bgm,lessonPicker,import:{tabs:{paste:"Wklej z AI",upload:"PrzeÅlij plik",export:"Eksportuj"},paste:{title:"ð Instrukcja wklejania JSON z AI",instruction:"Przejdź do: <0>Oprogramowania AI do tworzenia pytaÅ</0><br />Utwórz pytania w tym programie, a nastÄpnie kliknij przycisk <1>Kopiuj do giaoviendoimoi</1> i wklej zawartoÅÄ poniżej.",placeholder:"Wklej zawartoÅÄ JSON z AI Studio...",label:"Wklej JSON tutaj:",shuffle:"Automatycznie pomieszaj odpowiedzi",shuffleDesc:"Zmienia kolejnoÅÄ A/B/C/D losowo â poprawna treÅÄ odpowiedzi pozostaje ta sama",btnImport:"Importuj JSON",btnImporting:"Importowanie...",btnConfirm:"Zapisz do banku ({{count}} pytaÅ)",previewTitle:"PodglÄ
d ({{count}} pytaÅ)",previewMeta:"{{count}} odpowiedzi",previewMore:"... i {{count}} innych pytaÅ",errorArray:"Dane muszÄ
byÄ tablicÄ
pytaÅ",errorMissing:"Pytanie {{index}}: Brak wymaganych pól (question_content lub options)",errorMinAnswers:"Pytanie {{index}}: Musi mieÄ co najmniej 2 odpowiedzi",errorNoCorrect:"Pytanie {{index}}: Nie znaleziono poprawnej odpowiedzi",errorEmpty:"ProszÄ wkleiÄ zawartoÅÄ JSON w pole poniżej",errorLimit:"Maksymalnie 50 pytaÅ naraz",errorNoQuestions:"Nie znaleziono pytaÅ w danych",errorInvalid:"NieprawidÅowy format JSON. Sprawdź ponownie.",successParsed:"Przeanalizowano {{count}} pytaÅ z JSON{{shuffle}}.",shuffledSuffix:" (odpowiedzi pomieszane)"},upload:{formatLabel:"Format",templateTitle:"ð Nie masz pliku? Pobierz szablon",templateDesc:"Szablon Excel ze standardowym formatem (ID, Pytanie, Odpowiedzi A/B/C/D, Poprawna odpowied
573ź).",btnDownload:"Pobierz szablon Excel",docxGuideTitle:"Instrukcja formatu Word",docxGuideDesc:"Napisz pytania wedÅug poniższego wzoru. PodkreÅl literÄ (A-F) poprawnej odpowiedzi.",btnDownloadDocx:"Pobierz przykÅadowy plik Word",btnSelect:"Wybierz plik do importu",btnProcessing:"Przetwarzanie...",errorFormat:"Plik ma nieprawidÅowy format {{format}}",successRead:"Przeczytano {{count}} pytaÅ z pliku{{shuffle}}.",instructionTitle:"ð¡ Instrukcja Importu",instructionList:{li1:"Użyj szablonu Excel, aby zapewniÄ poprawny format (pobierz powyżej)",li2:"KompatybilnoÅÄ z AI Generator: Pliki Excel z autorskich narzÄdzi AI można importowaÄ bezpoÅrednio",li3:"Format Excel: ID, Pytanie, Odpowiedzi A/B/C/D, Poprawna odpowiedź",li4:"Format Word (.docx): Pytanie 1: ..., A. B. C. D. â podkreÅl literÄ poprawnej odpowiedzi",li5:"Wsparcie LaTeX: Użyj skÅadni $wzór$ (np. $2 + 2$)",li6:"Poprawna odpowiedź: Wpisz A, B, C lub D (wiele odpowiedzi: A, C lub A C)",li7:"Limit: Maksymalnie 20-30 pytaÅ przy jednym imporcie dla stabilnoÅci"}},export:{title:"ð Informacje o Eksporcie",countInfo:"Liczba pytaÅ do eksportu: {{count}}",formatExcel:"Plik Excel (.xlsx) - Dobry do edycji i ponownego importu",formatJson:"Plik JSON (.json) - Dobry do kopii zapasowej i integracji",formatCsv:"Plik CSV (.csv) - Dobry do przetwarzania w innych narzÄdziach",btnExport:"Eksportuj",btnExporting:"Eksportowanie...",success:"PomyÅlnie wyeksportowano {{count}} pytaÅ!",notesTitle:"ð Uwagi",notesList:{li1:"Plik zostanie pobrany do folderu Pobrane",li2:"Nazwa pliku bÄdzie w formacie: cau-hoi-RRRR-MM-DD",li3:"Wzory matematyczne zachowajÄ
format $...$",li4:"Plik Excel można zaimportowaÄ ponownie, aby przywróciÄ pytania"}}},uploader},title="ð Moje AktywnoÅci",subtitle="Utworzono {{count}} treÅci",searchHint="Szukaj po nazwie...",tabs={all:"Wszystkie"},error="Nie udaÅo siÄ zaÅadowaÄ danych. Spróbuj ponownie.",empty={noResults:"Nie znaleziono wyników",noContent:"Brak treÅci",tryAnother:"Spróbuj innego sÅowa kluczowego",startCreating:"Zacznij tworzyÄ treÅci za pomocÄ
narzÄdzi w Panelu",backToDashboard:"WrÃ³Ä do Panelu"},actions={view:"Zobacz",edit:"Edytuj",assign:"Zadaj",assignTitle:"Zadaj pracÄ domowÄ
",teacherShare:"UdostÄpnij Nauczycielom"},features={"interactive-video":"Wideo Interaktywne","panorama-museum":"Muzeum Panoramy","quiz-game":"PrzeciÄ
gnij i upuÅÄ - Dopasowanie","hand-slash-quiz":"Quiz z Owocami (Hand Slash)","flip-puzzle-game":"Gra z puzzlami","crossword-puzzle":"Krzyżówka","tug-of-war-game":"PrzeciÄ
ganie liny","paced-quiz":"Quiz w odpowiednim tempie","interactive-image":"Interaktywny obraz","head-tilt-quiz":"Quiz z nachyleniem gÅowy","pose-quiz":"Quiz z pozami (Äwiczenia ABC)","versus-game":"Gra Versus","wheel-quiz":"KoÅo fortuny - WyÅcig kaczek","turn-based-game":"Gra turowa",flashcard:"Fiszki","mind-map":"Mapa myÅli",minesweeper:"Saper","flying-words-game":"LatajÄ
ce sÅowa"},itemDefaults={"interactive-video":"Lekcja bez tytuÅu","panorama-museum":"Pokój bez tytuÅu","quiz-game":"Quiz bez tytuÅu","hand-slash-quiz":"Lekcja bez tytuÅu","flip-puzzle-game":"Gra bez tytuÅu","crossword-puzzle":"Krzyżówka bez tytuÅu","tug-of-war-game":"Gra bez tytuÅu","paced-quiz":"Quiz bez tytuÅu","interactive-image":"Obraz bez tytuÅu","head-tilt-quiz":"Lekcja bez tytuÅu","pose-quiz":"Lekcja bez tytuÅu","versus-game":"Gra bez tytuÅu","wheel-quiz":"KoÅo bez tytuÅu","turn-based-game":"Gra bez tytuÅu"},publish={title:"Biblioteka spoÅecznoÅci",submitToLibrary:"UdostÄpnij w Bibliotece spoÅecznoÅci",saveForMeOnly:"Tylko dla mnie",schoolLevel:"Poziom edukacji *",subject:"Przedmiot *",grade:"Klasa *",uploadLimitReached:"OsiÄ
gnÄ
ÅeÅ limit przesyÅania. Przejdź na wersjÄ FullGame, aby dzieliÄ siÄ wiÄcej.",upgradeProTooltip:"Przejdź na FullGame, aby wesprzeÄ spoÅecznoÅÄ",copyrightLabel:"Potwierdzam, że ta treÅÄ zostaÅa stworzona przez mnie lub mam prawo jÄ
udostÄpniÄ i nie narusza praw autorskich osób trzecich.",copyrightRequiredError:"Potwierdź prawa autorskie do treÅci przed opublikowaniem w bibliotece",levels:{"mam-non":"Przedszkole","tieu-hoc":"SzkoÅa podstawowa",thcs:"Gimnazjum / Liceum I",thpt:"Liceum / Technikum",khac:"Inne"},subjects:{"phat-trien-the-chat":"Rozwój fizyczny","phat-trien-nhan-thuc":"Rozwój poznawczy","phat-trien-ngon-ngu":"Rozwój mowy","phat-trien-tinh-cam":"Rozwój emocjonalny","phat-trien-tham-my":"Rozwój estetyczny","tieng-viet":"JÄzyk wietnamski",toan:"Matematyka","ngoai-ngu-1":"JÄzyk obcy 1","ngoai-ngu-2":"JÄzyk obcy 2","giao-duc-loi-song":"Edukacja spoÅeczna","dao-duc":"Etyka","tu-nhien-xa-hoi":"Przyroda i spoÅeczeÅstwo","lich-su-dia-ly":"Historia i geografia","khoa-hoc":"Nauka / Przyroda","tin-
573hoc-cong-nghe":"Informatyka i technika","giao-duc-the-chat":"W-F","nghe-thuat":"Sztuka","tieng-dan-toc":"JÄzyk mniejszoÅci","ngu-van":"Literatura",gdcd:"Wiedza o spoÅeczeÅstwie","khoa-hoc-tu-nhien":"Nauki przyrodnicze","cong-nghe":"Technika","tin-hoc":"Informatyka","gdqp-an":"Edukacja dla bezpieczeÅstwa","gd-kinh-te-phap-luat":"Ekonomia i prawo","lich-su":"Historia","dia-ly":"Geografia","vat-ly":"Fizyka","hoa-hoc":"Chemia","sinh-hoc":"Biologia",khac:"Inne"},grades:{1:"Klasa 1",2:"Klasa 2",3:"Klasa 3",4:"Klasa 4",5:"Klasa 5",6:"Klasa 6",7:"Klasa 7",8:"Klasa 8",9:"Klasa 9",10:"Klasa 10",11:"Klasa 11",12:"Klasa 12","nha-tre":"Å»Åobek","mau-giao-3-4":"Przedszkole 3-4","mau-giao-4-5":"Przedszkole 4-5","mau-giao-5-6":"Przedszkole 5-6",khac:"Inne"}},community={title:"Biblioteka spoÅecznoÅci",description:"PrzeglÄ
daj i zapisuj lekcje od spoÅecznoÅci nauczycieli",tabs:{explore:"Eksploruj",mine:"Moje wpisy"},filters:{level:"Poziom",subject:"Przedmiot",grade:"Klasa",gameType:"Typ gry",allSubjects:"Wszystkie przedmioty",allGrades:"Wszystkie klasy",allTypes:"Wszystkie typy",searchPlaceholder:"Szukaj po tytule...",searchBtn:"Szukaj",searchHint:"NaciÅnij Szukaj, aby zobaczyÄ wyniki",clearFilters:"WyczyÅÄ filtry ({{count}})"},explore:{selectBase:"Wybierz poziom i przedmiot, aby znaleÅºÄ lekcje",selectBaseDesc:"Filtruj wedÅug Przedszkola, SzkoÅy Podstawowej, Gimnazjum lub Liceum",selectSubject:"NastÄpnie wybierz przedmiot",selectSubjectDesc:"Potem naciÅnij Szukaj, aby zobaczyÄ wyniki",noResults:"Nie znaleziono lekcji",noResultsDesc:"Spróbuj zmieniÄ filtry"},mine:{empty:"Nie opublikowaÅeÅ jeszcze żadnych lekcji",emptyDesc:"Podczas tworzenia lekcji wybierz âUdostÄpnij w Bibliotece spoÅecznoÅciâ, aby siÄ doÅÄ
czyÄ",removeConfirm:"UsunÄ
Ä â{{title}}â z Biblioteki spoÅecznoÅci?",removeTooltip:"UsuÅ z Biblioteki spoÅecznoÅci"},card:{questions:"{{count}} pytaÅ",by:"Przez {{author}}",anonymous:"Anonim",reportTooltip:"ZgÅoÅ nieodpowiedniÄ
treÅÄ",viewAndSaveTooltip:"PodglÄ
d i zapisz na swoim koncie",btnSave:"Zobacz i zapisz"},detail:{questions:"pytaÅ",postedBy:"Opublikowane przez",loadError:"Nie udaÅo siÄ zaÅadowaÄ szczegóÅów lekcji.",saveSuccess:"Zapisano na Twoim koncie!",saveSuccessDesc:"Lekcja zostaÅa dodana do Twojej listy.",previewTitle:"PodglÄ
d pytaÅ:",moreQuestions:"... i {{count}} innych pytaÅ",alreadyClonedHint:"Już zapisaÅeÅ tÄ lekcjÄ. Czy chcesz jÄ
zapisaÄ ponownie?",btnCancel:"Anuluj",btnCloneAgain:"Zapisz mimo to",btnClone:"Zapisz na koncie",btnGoToTool:"Idź do {{name}}",generalError:"CoÅ poszÅo nie tak. Spróbuj ponownie."}},report$1={title:"ZgÅoÅ lekcjÄ",desc:"Powiedz nam, dlaczego zgÅaszasz tÄ lekcjÄ.",success:"â
DziÄkujemy! Twoje zgÅoszenie zostaÅo przyjÄte.",alreadyReported:"Już zgÅosiÅeÅ tÄ lekcjÄ wczeÅniej.",submitError:"CoÅ poszÅo nie tak. Spróbuj ponownie.",noteLabel:"Dodatkowe uwagi (opcjonalnie)",btnSubmit:"WyÅlij zgÅoszenie",reasons:{inappropriate:"Nieodpowiednia treÅÄ",spam:"Spam / duplikat",copyright:"Naruszenie praw autorskich",other:"Inne"}},plLibrary={title,subtitle,searchHint,tabs,error,empty,actions,features,itemDefaults,publish,community,report:report$1},page$1={title:"Gra Turowa",sidebar:{myGames:"Moje Gry",createNew:"Utwórz NowÄ
",upgradeLabel:"Uaktualnij"},quota:{proPermanent:"FullGame dożywotnio",proDaysRemaining:"PozostaÅo {{days}} dni FullGame",usedCount:"Użyto {{current}}/{{total}} gier",limitReached:"OsiÄ
gniÄty limit wersji próbnej"}},list$1={title:"ð² Moje Gry",subtitle:"ZarzÄ
dzaj swoimi utworzonymi grami turami",pinHint:"Przypnij gry, aby mieÄ dostÄp nawet po wygaÅniÄciu",pinnedCount:"({{current}}/{{total}} przypiÄtych)",subscriptionExpired:"â ï¸ Plan wygasÅ!",renewBtn:"Odnów",empty:"Brak gier",emptyDesc:"Utwórz swojÄ
pierwszÄ
grÄ, aby zaczÄ
Ä!",createFirstBtn:"â Utwórz PierwszÄ
GrÄ",item:{questionsCount:"{{count}} pytaÅ",playersCount:"{{count}} graczy",cellsCount:"{{count}} pól",renewToUnlock:"ð Odnów, aby odblokowaÄ tÄ grÄ",playTooltip:"Graj",editTooltip:"Edytuj",assignTooltip:"Przypisz",deleteTooltip:"UsuÅ",playBtn:"Graj",editBtn:"Edytuj",assignBtn:"Przypisz"},pagination:{prev:"â Poprzednia",current:"Strona {{page}}",next:"NastÄpna â"}
573,deleteDialog:{title:"UsunÄ
Ä grÄ?",content:"Gra bÄdzie trwale usuniÄta. Czy jesteÅ pewny?",cancel:"Anuluj",delete:"UsuÅ"}},myGames$1={demo:{title:"Gra Turowa - Wersja Demo",badge:"Demo",hint:"Wypróbuj demo, aby doÅwiadczyÄ funkcji przed utworzeniem wÅasnej gry"},playTest:"Wypróbuj Demo"},form$2={createTitle:"ð² Utwórz NowÄ
GrÄ TurowÄ
",editTitle:"âï¸ Edytuj GrÄ TurowÄ
",titleLabel:"TytuÅ Gry",playersLabel:"Liczba Graczy",playersOption:"{{count}} graczy",charactersLabel:"Postacie: ",playerNamesLabel:"Imiona Graczy",playerNamesHint:"(opcjonalnie)",playerNamePlaceholder:"Gracz {{index}}",obstaclesLabel:"Przeszkody na torze:",obstaclesDesc:"(razem {{total}} przeszkód dla {{players}} graczy)",reuseQuestionsHint:"Pytania bÄdÄ
ponownie używane, jeÅli mniej niż razem przeszkód.",bgmLabel:"ðµ DomyÅlna Muzyka w Tle",bgmOption:"Utwór {{index}}",bgmHint:"Nauczyciel może zmieniÄ muzykÄ podczas gry.",questionsTitle:"Pytania ({{count}})",questionsReuseWarn:"â potrzeba co najmniej {{total}} pytaÅ lub bÄdÄ
ponownie używane",clearAllBtn:"WyczyÅÄ Wszystko",importBankBtn:"ð Importuj z Banku PytaÅ",importQuestionPickerBtn:"ðï¸ Z Banku PytaÅ lub AI",importLessonBtn:"ð Z IstniejÄ
cej Lekcji",manualInputBtn:"âï¸ Wpisz RÄcznie",listHeader:"Lista PytaÅ",imageLabel:"[ð¼ï¸ Obraz]",noValidQuestions:"Brak ważnych pytaÅ.",addedFromLesson:"Dodano {{count}} pytaÅ z lekcji.",lessonsPickerTitle:"Dodaj pytania z lekcji",subtitleStatements:"{{count}} stwierdzeÅ",subtitleShortAnswer:"Wpisz: {{answer}}",empty:"Brak pytaÅ",emptyDesc:"Dodaj pytania, aby przypisaÄ do przeszkód na mapie",cancelBtn:"Anuluj",saveBtn:"Zapisz GrÄ",saving:"Zapisywanie...",pickerTitle:"Wybierz Pytania z Banku",clearAllConfirm:"WyczyÅciÄ wszystkie pytania?"},player$1={loading:"Wczytywanie gry...",errorLoad:"Nie udaÅo siÄ wczytaÄ gry",bgm1:"Utwór 1",bgm2:"Utwór 2",bgm3:"Utwór 3",bgm4:"Utwór 4",bgm5:"Utwór 5",dice:{skip:"PomiÅ TurÄ",blast:"Zniszcz PrzeszkodÄ",turbo:"Turbo",rolling:"ð² Rzucanie...",rollBtn:"ð² RzuÄ KostkÄ
",skipStatus:"Niestety! TrafiÅeÅ na PomiÅ TurÄ, teraz kolej nastÄpnego gracza",blastStatus:"â Przeszkoda zniszczona! PrzesuÅ {{steps}} kroków",turboStatus:"â¡ Turbo! PrzesuÅ {{steps}} kroków",moveStatus:"PrzesuÅ {{steps}} kroków!"},bubbles:{retryQuestion:"ð Odpowiedz na pytanie ponownie!",obstacleEncounter:"â ï¸ Napotkana przeszkoda!!",monsterTitle:"NAPOTKANA PRZESZKODA",playerTurn:"{{emoji}} Tura {{name}}",blastSuccess:"â Przeszkoda zniszczona! PrzesuÅ {{steps}} kroków!",noObstacles:"â Brak przeszkód! PrzesuÅ {{steps}} kroków!",noObstaclesStatus:"â Brak przeszkód przed tobÄ
. PrzesuÅ {{steps}} kroków",turboSuccess:"â¡ Turbo! PrzesuÅ {{steps}} kroków!",moveSuccess:"PrzesuÅ {{steps}} kroków!",goalReached:"ð Cel osiÄ
gniÄty! WygraÅeÅ!",correctTurnEnd:"â
Poprawnie! NastÄpna tura.",wrongTurnEnd:"â Źle! Tura utracona!"},quiz:{title:"â Pytanie o PrzeszkodÄ",correct:"ð Poprawnie!",wrong:"â Źle! Spróbuj ponownie w nastÄpnej turze!"},win:{message:"{{emoji}} {{name}} wygrywa!",desc:"OsiÄ
gnÄ
Å cel z powodzeniem!",exitBtn:"â Wyjdź",playAgainBtn:"ð Graj Ponownie"},assignment:{nameTitle:"Wpisz imiona dla każdego gracza",playerLabel:"{{emoji}} Gracz {{index}}",startBtn:"â¶ Rozpocznij GrÄ",defaultPlayerName:"Gracz {{index}}"},controls:{playerLabel:"Gracz {{index}}",currentTurn:"â¶ BieżÄ
ca Tura",turnPrompt:"BieżÄ
ca Tura",bgmTitle:"ðµ Muzyka w Tle:",playBgmBtn:"â¶ Odtwórz MuzykÄ",muteTooltip:"Wycisz",unmuteTooltip:"WÅÄ
cz DźwiÄk",exitFullscreenTooltip:"Wyjdź z PeÅnego Ekranu",enterFullscreenTooltip:"PeÅny Ekran",exitFullscreenBtn:"â¶ Wyjdź z PeÅnego Ekranu",enterFullscreenBtn:"â¶ PeÅny Ekran",exitBtn:"â Wyjdź"}},alerts={loadGamesError:"BÅÄ
d wczytywania listy gier",deleteSuccess:"Gra usuniÄta pomyÅlnie",deleteError:"BÅÄ
d podczas usuwania gry",pinLimitReached:"Możesz przypiÄ
Ä tylko maksymalnie {{limit}} gier",pinRemovedSuccess:"OdpiÄto pomyÅlnie",pinAddedSuccess:"Przypieto pomyÅlnie",assignSuccess:"Przypisanie zostaÅo utworzone pomyÅlnie!",saveSuccess:"Gra zapisana pomyÅlnie!",saveError:"BÅÄ
d podczas zapisywania gry",loadDataError:"BÅÄ
d wczytywania danych gry",
573invalidQuestion:"Brak prawidÅowych pytaÅ (wymagane co najmniej 2 odpowiedzi)",addSuccess:"Dodano {{count}} pytaÅ, pominiÄto {{skipped}} nieprawidÅowych",updateQuestionSuccess:"Pytanie zaktualizowane pomyÅlnie",addQuestionsSuccess:"Dodano {{count}} pytaÅ",removeQuestionSuccess:"UsuniÄto pytanie {{index}}",clearAllSuccess:"Wyczyszczono wszystkie pytania",titleRequired:"ProszÄ wpisaÄ tytuÅ gry",questionRequired:"ProszÄ dodaÄ co najmniej 1 pytanie",minQuestionsRequired:"Gra musi mieÄ co najmniej 1 pytanie",maxQuestionsExceeded:"Gra może mieÄ maksymalnie 200 pytaÅ",notFound:"Gra nie znaleziona"},plTurnBasedGame={page:page$1,list:list$1,myGames:myGames$1,form:form$2,player:player$1,alerts},page={title:"â Quiz - Przecinanie Owoców",upgradeLabel:"Kup pojedynczo",helpLabel:"Instrukcja obsÅugi",helpTitle:"Instrukcja Quizu Przecinanie Owoców",helpDescription:"Dowiedz siÄ, jak stworzyÄ Quiz Przecinanie Owoców dla swoich uczniów",sidebar:{myLessons:"Moje lekcje",createNew:"Stwórz nowÄ
"}},list={title:"ð Moje lekcje",subtitle:"ZarzÄ
dzaj swoimi Quizami Przecinania Owoców",expired:"â ï¸ Pakiet wygasÅ!",renew:"Odnów",empty:"Nie masz jeszcze żadnych lekcji",createFirst:"â Stwórz pierwszÄ
lekcjÄ",demo:{title:"Quiz Przecinania Owoców - Demo",badge:"Demo",hint:"Wypróbuj demo, aby poznaÄ grÄ przed stworzeniem wÅasnej lekcji"},lockedHint:"ð Odnów subskrypcjÄ, aby odblokowaÄ",stats:"{{count}} pytaÅ",updated:"Aktualizacja: {{date}}",btnPlay:"Graj",btnEdit:"Edytuj",btnAssign:"Zadaj",btnDelete:"UsuÅ",tooltipPlay:"Graj teraz",tooltipEdit:"Edytuj lekcjÄ",tooltipAssign:"Zadaj uczniom",tooltipDelete:"UsuÅ lekcjÄ",deleteConfirmTitle:"ðï¸ Potwierdź usuniÄcie",deleteConfirmText:"Czy na pewno chcesz usunÄ
Ä tÄ lekcjÄ? Tej operacji nie można cofnÄ
Ä.",deleteSuccess:"Lekcja zostaÅa usuniÄta",deleteError:"Nie udaÅo siÄ usunÄ
Ä lekcji",loadError:"Nie udaÅo siÄ zaÅadowaÄ listy lekcji",speeds:{fast:"Szybko",medium:"Årednio",slow:"Wolno"},freeLessons:"PozostaÅo {{remaining}}/{{limit}} darmowych lekcji",quotaExceeded:"OsiÄ
gniÄto limit darmowych lekcji. ProszÄ ulepszyÄ konto.",assignSuccess:"Utworzono zadanie z kodem: {{code}}"},form$1={titleCreate:"â Stwórz nowÄ
lekcjÄ",titleEdit:"âï¸ Edytuj lekcjÄ",lessonName:"Nazwa lekcji",speedTitle:"ð PrÄdkoÅÄ wyrzucania owoców",speedFast:"ð Szybko",speedMedium:"â¡ Årednio",speedSlow:"ð¢ Wolno",useBackground:"ð¼ï¸ Użyj tÅa (ukryj kamerÄ)",noCamera:"ð· Używaj kamery (tnij rÄkÄ
przed kamerÄ
)",questionsTitle:"Pytania ({{current}}/{{max}})",questionNum:"Pytanie {{num}}",questionPlaceholder:"Wpisz pytanie...",answerColors:{green:"Zielony",red:"Czerwony",yellow:"ŻóÅty",purple:"Fioletowy"},answerLabel:"Odpowiedzi (zaznacz poprawnÄ
):",btnAddQuestion:"Dodaj pytanie",btnSelectFromBank:"ðï¸ Wybierz z banku",btnCancel:"Anuluj",btnSave:"Zapisz lekcjÄ",saving:"Zapisywanie...",errorTitleRequired:"ProszÄ podaÄ nazwÄ lekcji",errorMinQuestions:"Musisz dodaÄ co najmniej jedno pytanie",errorQuestionEmpty:"Pytanie {{num}} nie może byÄ puste",errorCorrectRequired:"Pytanie {{num}} musi mieÄ poprawnÄ
odpowiedź",errorAnswerEmpty:"Pytanie {{num}} ma pustÄ
odpowiedź",errorMaxQuestions:"Maksymalnie {{max}} pytaÅ",loadError:"Nie udaÅo siÄ zaÅadowaÄ lekcji",bankPickerTitle:"Wybierz pytania dla Hand Slash Quiz",bankValidation:"{{count}} pytaÅ nie pasuje do Hand Slash Quiz (wymagane dokÅadnie 4 odpowiedzi):",bankAddSuccess:"â
Dodano {{count}} pytaÅ z banku",bankLimitError:"Nie można dodaÄ {{count}} pytaÅ. Maksimum {{max}}, obecnie masz {{current}}.",addFromLesson:"ð Z istniejÄ
cej lekcji",selectFromBankOrAI:"ðï¸ Z banku lub AI",manualEntry:"âï¸ Wpisz rÄcznie",bankAddMixedSuccess:"Dodano {{count}} pytaÅ. PominiÄto {{skipped}} niekompatybilnych pytaÅ.",errorNoQuestionsCompatible:"Brak pytaÅ pasujÄ
cych do Hand Slash (wymagane co najmniej 2 odpowiedzi)."},game={score:"Wynik",time:"Czas",gameOver:"KONIEC GRY!",finalScore:"Twój wynik",btnAgain:"Zagraj ponownie",btnExit:"Wyjdź",totalQuestions:"ÅÄ
cznie {{count}}
573 pytaÅ",wrongHint:"BÅÄdna odpowiedź!",correctHint:"DOSKONALE!",correctFeedback:"TAK!!",loading:"Åadowanie kamery...",noCameraMode:"Tryb bez kamery",paused:"Pauza",btnResume:"Kontynuuj",completed:"UkoÅczono!",questionNum:"Pytanie {{num}}",seconds:"sek.",minimize:"Zmniejsz",fullscreen:"PeÅny ekran",answeredCount:"OdpowiedziaÅeÅ na {{count}} pytaÅ",lessonBy:"Lekcja autorstwa {{name}}",linkExpired:"Link do udostÄpniania mógÅ zostaÄ usuniÄty lub już nie istnieje",errorWebGL:"PrzeglÄ
darka nie obsÅuguje WebGL. Spróbuj zamknÄ
Ä inne karty lub użyj Chrome.",errorGeneric:"Nie udaÅo siÄ zainicjowaÄ rozpoznawania dÅoni. Spróbuj ponownie.",errorHint:'Możesz przeÅÄ
czyÄ siÄ na tryb "Bez kamery" (myszka/dotyk), aby kontynuowaÄ grÄ.'},instructions={title:"Jak graÄ w Quiz Przecinanie Owoców",step1Title:"1. Zezwól na dostÄp do kamery",step1Desc:'Gra potrzebuje kamery, aby rozpoznawaÄ ruchy Twoich dÅoni. Kliknij "Zezwól" w lewym górnym rogu przeglÄ
darki.',step2Title:"2. Przecinaj owoce palcami",step2Desc:"Szybko przesuwaj palcem po ekranie, aby przeciÄ
Ä owoce z poprawnymi odpowiedziami.",step3Title:"3. Wybierz poprawnÄ
odpowiedź",step3Desc:"PrzeciÄcie zÅej odpowiedzi odejmuje punkty. BÄ
dź szybki i dokÅadny, aby zdobyÄ wiÄcej punktów!",tip:"ð¡ Wskazówka: Poruszaj siÄ szybko i precyzyjnie, aby uzyskaÄ najwyższy wynik!",btnFullscreen:"PeÅny ekran",btnReady:"Gotowy do gry!"},demo$1={title:"Demo Quizu Przecinanie Owoców",subtitle:"Zagraj teraz z {{count}} przykÅadowymi pytaniami!",instructions:"Jak graÄ:",step1:"1ï¸â£ Zezwól na dostÄp do kamery, gdy zostaniesz o to poproszony",step2:'2ï¸â£ Użyj palca wskazujÄ
cego, aby "przecinaÄ" owoce',step3:"3ï¸â£ Wybieraj poprawne odpowiedzi, aby zdobywaÄ punkty",step4:"4ï¸â£ Unikaj dotykania bÅÄdnych odpowiedzi!",note:"â ï¸ Uwaga: Do tej gry potrzebujesz kamery internetowej / webcam",btnStart:"ð® Zacznij graÄ",version:"Wersja Demo - {{count}} przykÅadowych pytaÅ"},plHandSlash={page,list,form:form$1,game,instructions,demo:demo$1},pageTitle$1="ð Äwiczenia ABC",myQuizzes="Moje quizy",loadingQuizzes="Åadowanie...",errorLoading="BÅÄ
d podczas Åadowania quizów",confirmDelete="Czy na pewno chcesz usunÄ
Ä ten quiz?",deleteSuccess="Quiz usuniÄty",emptyQuizzes="Brak quizów",createFirst="Stwórz swój pierwszy quiz",demo={title:"Quiz Inteligentnych Póz - Demo",badge:"Demo",hint:"Wypróbuj demo, aby poznaÄ grÄ przed stworzeniem wÅasnej lekcji"},questionsCount="{{count}} pytaÅ",play="Prezentuj",edit="Edytuj",assign="Przypisz",upgradeToUnlock="Uaktualnij, aby odblokowaÄ to Äwiczenie",lockedTip="Uaktualnij, aby odblokowaÄ to Äwiczenie",packageExpired="Subskrypcja wygasÅa! PrzypiÄte quizy sÄ
zablokowane.",extendSubscription="PrzedÅuż za 30k/rok",pinStatus="PrzypiÄto {{current}}/{{limit}} quizów",createNew$1="Stwórz zwykÅy",createCameraNew="Stwórz kamerÄ",cameraBadge="Nowy",createFormTitle="Stwórz nowe Äwiczenie ABC",editFormTitle="Edytuj Äwiczenie ABC",createCameraFormTitle="Stwórz Äwiczenie ABC (tryb kamery)",editCameraFormTitle="Edytuj Äwiczenie ABC (tryb kamery)",titleLabel="TytuÅ",titlePlaceholder="Wpisz tytuÅ quizu...",slideModeLabel="Tryb zmiany slajdów:",slideModeManual="RÄczny (nauczyciel klika Dalej)",slideModeAuto="Automatyczny (czasowy)",autoSecondsLabel="Sekundy na slajd:",addQuestion="Dodaj pytanie",questionLabel="Pytanie {{index}}
573",addAnswer="Dodaj odpowiedź (maks. 3)",saving="Zapisywanie...",savePoseQuiz="Zapisz quiz",errorTitleRequired="ProszÄ wpisaÄ tytuÅ",errorNoQuestions="ProszÄ dodaÄ przynajmniej 1 pytanie",errorEmptyQuestion="Pytanie {{index}} nie może byÄ puste",errorAnswerCount="Pytanie {{index}} musi mieÄ 2-3 odpowiedzi",errorNoCorrectAnswer="Pytanie {{index}} nie ma zaznaczonej poprawnej odpowiedzi",errorAutoSeconds="Timer automatyczny musi wynosiÄ od 5 do 60 sekund",errorMaxAnswers="Maksymalnie 3 odpowiedzi na pytanie",toastCreateSuccess="â
Quiz stworzony pomyÅlnie",toastUpdateSuccess="â
Quiz zaktualizowany",toastSaveError="BÅÄ
d podczas zapisywania: ",toastLimitReached="OsiÄ
gniÄto limit quizów. Uaktualnij, aby móc tworzyÄ wiÄcej.",usageCount="Stworzono {{current}}/{{limit}} quizów (wersja próbna)",back="Wstecz",stopAudio="Zatrzymaj dźwiÄk",playAudio="Odtwórz dźwiÄk",resume="Wznów",pause="Wstrzymaj",enableBGM="WÅÄ
cz muzykÄ w tle",disableBGM="WyÅÄ
cz muzykÄ w tle",exitFullscreen="Wyjdź z peÅnego ekranu",enterFullscreen="PeÅny ekran",finishedTitle="ZakoÅczono!",backToHome="Powrót do strony gÅównej",restart="Zrestartuj",questionImageAlt="Obraz pytania",poseAlt="Poza {{char}}",seconds="sekundy",characterSize="ð§ Rozmiar postaci",sizeS="MaÅe",sizeM="Årednie",sizeL="Duże",sizeXL="Bardzo duże",imageSet="ð¼ï¸ Zestaw obrazów",setBody="ð CiaÅo",setHand="â RÄka",bgmLabel="ðµ Muzyka w tle",bgmTrack="Utwór {{index}}",questionsReady="â
{{count}} pytaÅ gotowych",questionsNotReady="â Pytania ({{count}}
573)",confirmDeleteAll="UsunÄ
Ä wszystkie pytania?",deleteAll="ðï¸ UsuÅ wszystko",chooseFromBank="ð Wybierz z banku lub AI",manualInput="âï¸ Wprowadzanie rÄczne",questionsList="Lista pytaÅ ({{count}})",imageOnly="(Tylko obraz)",answersCount="{{count}} odpowiedzi",hasImage=" · ð¼ï¸ ma obraz",hasAudio=" · ð ma dźwiÄk",editQuestionTooltip="Edytuj",removeQuestionTooltip="UsuÅ",noQuestionsDesc="Brak pytaÅ",addQuestionsHint="Wybierz z banku lub wprowadź rÄcznie",pickerModalTitle="Wybierz pytania do Äwiczenia ABC",cameraModeLabel="ð· Tryb kamery",cameraModeDesc="Uczniowie wykonujÄ
pozy ciaÅem, aby wybraÄ odpowiedzi â kamera wykrywa automatycznie",cameraModeNew="Nowy",cameraReady="Kamera gotowa",cameraStarting="Uruchamianie kamery...",cameraHide="Ukryj kamerÄ",cameraShow="Pokaż kamerÄ",cameraDenied="Odmowa dostÄpu do kamery",cameraError="Nie można otworzyÄ kamery",cameraDeniedDesc="ProszÄ przyznaÄ uprawnienia do kamery w ustawieniach przeglÄ
darki i odÅwieżyÄ stronÄ.",cameraErrorDesc="Sprawdź poÅÄ
czenie kamery i spróbuj odÅwieżyÄ stronÄ.",cooldownHint="PowrÃ³Ä do pozycji stojÄ
cej, aby kontynuowaÄ...",errorNoCompatibleQuestions="Nie znaleziono kompatybilnych pytaÅ.",toastAddedFromLesson="Dodano {{count}} pytaÅ. PominiÄto {{skipped}} niekompatybilnych pytaÅ.",toastAddedFromLessonSuccess="Dodano {{count}} pytaÅ z istniejÄ
cej lekcji.",errorLibraryMetadataRequired="ProszÄ wybraÄ Poziom, Przedmiot i KlasÄ, aby opublikowaÄ w Bibliotece spoÅecznoÅci.",cameraModeTitle="Tryb kamery",cameraModeInstruction="Uczniowie pozujÄ
ciaÅem, aby wybraÄ odpowiedzi â kamera wykrywa automatycznie",questionFontSize="Rozmiar czcionki pytania",answerFontSize="Rozmiar czcionki odpowiedzi",questionImageSize="Rozmiar obrazu pytania",answerImageSize="Rozmiar obrazu odpowiedzi",sizeXS="MaÅy",sizeStandard="Standardowy",sizeLG="Duży",sizeXL_text="Bardzo duży",sizeXXL="Maksymalny",customBgmPro="Lub przeÅlij wÅasny utwór (FullGame):",shuffleMode="ð Losuj kolejnoÅÄ pytaÅ i odpowiedzi",shuffleModeDesc="Po wÅÄ
czeniu pytania i odpowiedzi bÄdÄ
losowo mieszane przy każdej grze",aiVoice="ð GÅos AI",aiVoiceReady="â
Gotowy",aiVoiceSetup="â ï¸ Wymaga konfiguracji",aiVoiceDesc="Automatycznie czytaj pytania za pomocÄ
AI, jeÅli nie przesÅano dźwiÄku",btnChooseFromBank="ðï¸ Wybierz z banku lub AI",btnFromExisting="ð Z istniejÄ
cej lekcji",lessonPickerTitle="Dodaj pytania z istniejÄ
cej lekcji",report="Raport",sessionResults="Wyniki sesji",questionNumber="Pytanie {{number}}",selectedAnswer="Wybrano",close="Zamknij",cameraModeIntro="Tryb kamery â Pozowanie",cameraStep1="Wykrywanie pozycji ciaÅa",cameraStep1Desc="StaÅ ok. 1m od kamery, zapewnij dobre oÅwietlenie i widocznoÅÄ ciaÅa.",cameraStep2="Jedna poza na odpowiedź",cameraStep2Desc="Zobacz nazwÄ pozy na każdej karcie odpowiedzi i wykonaj odpowiedni gest.",cameraStep3="Przytrzymaj 1,5 s, aby wybraÄ",cameraStep3Desc="Pasek postÄpu pojawi siÄ po wykryciu. Przytrzymaj do peÅna.",cameraStartHint="{{count}} pytaŠ· Kamera uruchomi siÄ po klikniÄciu Start",startGame="Start",defaultAnswer="Odpowiedź {{number}}",btnManual="âï¸ Wprowadzanie rÄczne",manualLabel="ð RÄczny",secondsShort="s",shuffleQuestionsMode="ð Losuj kolejnoÅÄ pytaÅ",shuffleQuestionsModeDesc="Przy każdej grze pytania pojawiajÄ
siÄ w innej kolejnoÅci",shuffleAnswersMode="ð Losuj kolejnoÅÄ odpowiedzi",shuffleAnswersModeDesc="Przy każdej grze odpowiedzi w pytaniu zmieniajÄ
miejsca",plPoseQuiz={pageTitle:pageTitle$1,myQuizzes,loadingQuizzes,errorLoading,confirmDelete,deleteSuccess,emptyQuizzes,createFirst,demo,questionsCount,play,edit,assign,delete:"UsuÅ",upgradeToUnlock,lockedTip,packageExpired,extendSubscription,pinStatus,createNew:createNew$1,createCameraNew,cameraBadge,createFormTitle,editFormTitle,createCameraFormTitle,editCameraFormTitle,titleLabel,titlePlaceholder,slideModeLabel,slideModeManual,slideModeAuto,autoSecondsLabel,addQuestion,questionLabel,addAnswer,saving,savePoseQuiz,errorTitleRequired,errorNoQuestions,errorEmptyQuestion,errorAnswerCount,errorNoCorrectAnswer,errorAutoSeconds,errorMaxAnswers,toastCreateSuccess,toastUpdateSuccess,toastSaveError,toastLimitReached,usageCount,back,stopAudio,playAudio,resume,pause,enableBGM,disableBGM,exitFullscreen,enterFullscreen,finishedTitle,backToHome,restart,questionImageAlt,poseAlt,seconds,characterSize,sizeS,sizeM,sizeL,sizeXL,imageSet,setBody,setHand,bgmLabel,bgmTrack,questionsReady,questionsNotReady,confirmDeleteAll,deleteAll,chooseFromBank,manualInput,questionsList,imageOnly,answersCount,hasImage,hasAudio,editQuestionTooltip,removeQuestionTooltip,noQuestionsDesc,addQuestionsHint,pickerModalTitle,cameraModeLabel,cameraModeDesc,cameraModeNew,cameraReady,cameraStarting,cameraHide,cameraShow,cameraDenied,cameraError,cameraDeniedDesc,cameraErrorDesc,cooldownHint,errorNoCompatibleQuestions,toastAddedFromLesson,toastAddedFromLessonSuccess,errorLibraryMetadataRequired,cameraModeTitle,cameraModeInstruction,questionFontSize,answerFontSize,questionImageSize,answerImageSize,sizeXS,sizeStandard,sizeLG,sizeXL_text,sizeXXL,customBgmPro,shuffleMode,shuffleModeDesc,aiVoice,aiVoiceReady,aiVoiceSetup,aiVoiceDesc,btnChooseFromBank,btnFromExisting,lessonPickerTitle,report,sessionResults,questionNumber,selectedAnswer,close,cameraModeIntro,cameraStep1,cameraStep1Desc,cameraStep2,cameraStep2Desc,cameraStep3,cameraStep3Desc,cameraStartHint,startGame,defaultAnswer,btnManual,manualLabel,secondsShort,shuffleQuestionsMode,shuffleQuestionsModeDesc,shuffleAnswersMode,shuffleAnswersModeDesc},modal={title:"UdostÄpnij nauczycielowi: {{title}}",audienceBadge:"Dla innych nauczycieli â nie dla uczniów",howItWorksTitle:"Jak to dziaÅa",step1:"Skopiuj poniższy link i wyÅlij koledze nauczycielowi",step2:"Nauczyciel odbierajÄ
cy link loguje siÄ do Innowacyjny Nauczyciel i otwiera link",step3:'Klika "Zapisz na koncie" â materiaÅ zostanie skopiowany na jego konto',generating:"Generowanie linku...",copySuccess:"â Skopiowano!",copyLink:"Kopiuj link do udostÄpniania",revokeLink:"Cofnij udostÄpnianie",revoking:"Cofanie...",note:"UdostÄpniony materiaÅ zawsze odpowiada najnowszej wersji: po edycji wystarczy ponownie otworzyÄ to okno, a link zaktualizuje siÄ sam â nie trzeba tworzyÄ nowego.",revokeNote:"CofniÄcie wyÅÄ
cza link: nauczyciele, którzy już zapisali materiaÅ, zachowajÄ
go, ale nie pobiorÄ
nowszej wersji."},claim={loading:"Åadowanie...",notLoggedIn:{title:"Nie jesteÅ zalogowany",description:"Zaloguj siÄ najpierw do <strong>Innowacyjny Nauczyciel</strong>, a nastÄpnie wklej lub otwórz ten link ponownie.",button:"Zaloguj siÄ teraz"},notFound:{title:"NieprawidÅowy link",description:"Ten link nie istnieje lub zostaÅ wycofany.",backLink:"Powrót do strony gÅównej"},expired:{title:"Link wygasÅ",description:"Link do udostÄpniania jest ważny tylko przez 30 dni. PoproÅ nauczyciela o wygenerowanie nowego linku.",backLink:"Powrót do strony gÅównej"}
573,alreadyClaimed:{title:"Masz już ten materiaÅ",description:"MateriaÅ znajduje siÄ już na Twojej liÅcie.",button:"Zobacz listÄ materiaÅów",reclaimButton:"Pobierz najnowszÄ
wersjÄ",reclaiming:"Pobieranie...",reclaimNote:"Użyj, jeÅli nauczyciel udostÄpniajÄ
cy zmieniÅ materiaÅ albo jeÅli usunÄ
ÅeÅ go i chcesz odzyskaÄ. Twoja kopia zostanie nadpisana â bez duplikatu i bez dodatkowego limitu."},success:{title:"Zapisano pomyÅlnie!",description:"Powrót do listy materiaÅów...",updatedTitle:"MateriaÅ zaktualizowany!",updatedDescription:"Twoja kopia zostaÅa zastÄ
piona najnowszÄ
wersjÄ
. Powrót do listy materiaÅów..."},preview:{defaultTitle:"UdostÄpniony materiaÅ",sharedBy:"UdostÄpnione przez: <strong>{{name}}</strong>",defaultName:"Nauczyciel",questions_one:"ð 1 pytanie",questions_other:"ð {{count}} pytaÅ",timeLimit:"â± {{count}}s/pytanie",submitButton:"Zapisz na koncie",submitting:"Zapisywanie...",footerNote:"MateriaÅ zostanie skopiowany na Twoje konto i doliczony do limitu."}},errors={createFailed:"Nie udaÅo siÄ utworzyÄ linku. Spróbuj ponownie.",revokeFailed:"Nie udaÅo siÄ wycofaÄ linku.",generalError:"WystÄ
piÅ bÅÄ
d. Spróbuj ponownie."}
573,plTeacherShare={modal,claim,errors},pageTitle="ð Zbieracz Gwiazd",myGames="Moje Gry",createNew="Utwórz GrÄ",games="Gry",create="Nowa",guide="Poradnik",guideDesc="Gra dla 2 drużyn używajÄ
ca detekcji dÅoni. UnieÅ 1/2/3/4 palce, aby wybraÄ odpowiedź A/B/C/D.",myStarBags={title:"Gry Zbieracz Gwiazd ({{count}})",pinBanner:"Przypnij gry, aby mieÄ do nich dostÄp po wygaÅniÄciu subskrypcji",pinnedCount:"({{pinned}}/{{limit}} przypiÄtych)",expired:"â ï¸ Subskrypcja wygasÅa!",renew:"Odnów",demoTitle:"Zbieracz Gwiazd - Wersja Demo",demoBadge:"Demo",demoDesc:"Wypróbuj zanim stworzysz wÅasnÄ
grÄ",playTest:"Zagraj",createFirst:"Utwórz pierwszÄ
grÄ",questionCount:"{{count}} pytaÅ",starCount:"â {{stars}} gwiazdek",timeSec:"{{time}}s",pinTip:"Przypnij, aby zachowaÄ",edit:"Edytuj",assign:"Zadaj",share:"UdostÄpnij",delete:"UsuÅ",prev:"â Poprz.",page:"Strona {{page}}",next:"Nast. â¶",loading:"Åadowanie...",loadError:"Nie udaÅo siÄ zaÅadowaÄ listy gier",deleteConfirm:"Czy na pewno chcesz usunÄ
Ä tÄ grÄ?",deleted:"Gra zostaÅa usuniÄta",deleteError:"BÅÄ
d podczas usuwania gry",pinLimit:"OsiÄ
gniÄto limit przypiÄÄ ({{limit}} gier)",unpinned:"OdpiÄto grÄ",pinned:"PrzypiÄto grÄ"},form={editTitle:"Edytuj GrÄ",createTitle:"Utwórz GrÄ",gameName:"Nazwa gry",gameNamePlaceholder:"Np: Lekcja gramatyki",config:"Konfiguracja gry",timeLimit:"Limit czasu",totalStars:"Liczba gwiazd w worku (1â50)",freezeTime:"Zamrożenie przy bÅÄdzie",sec:"{{time}} sekund",min:"{{time}} minut",team1:"Nazwa Drużyny A",team1Placeholder:"Lewy gracz",team2:"Nazwa Drużyny B",team2Placeholder:"Prawy gracz",bgm:"Muzyka w tle",bgmDefault:"DomyÅlna",bgmTrack:"Utwór {{num}}",bgmCustom:"WÅasna:",questions:"Pytania ({{count}})",clearAll:"WyczyÅÄ wszystko",selectBank:"Wybierz z Bazy/AI",selectLesson:"ð Z istniejÄ
cej lekcji",manual:"Wprowadź rÄcznie",questionWarning:"Liczba pytaÅ musi byÄ równa liczbie gwiazdek ({{count}}). Każde pytanie wymaga dokÅadnie 4 odpowiedzi A/B/C/D (odpowiadajÄ
cych 1/2/3/4 palcom).",qFontSize:"Rozmiar czcionki pytaÅ:",aFontSize:"Rozmiar czcionki odpowiedzi:",fsSmall:"MaÅe",fsMedium:"Årednie",fsLarge:"Duże",fsXLarge:"Bardzo duże",fsXXLarge:"Ogromne",fsNote:"Dotyczy domyÅlnych pytaÅ",qList:"Lista PytaÅ",aCount:"{{count}} odpowiedzi",noQuestions:"Brak pytaÅ",addQuestionsHint:"Dodaj pytania z bazy lub wprowadź rÄcznie",saving:"Zapisywanie...",save:"Zapisz GrÄ",emptyName:"ProszÄ podaÄ nazwÄ gry",invalidQuestions:"Liczba pytaÅ ({{count}}) musi byÄ równa liczbie gwiazdek w worku ({{totalStars}})",publishError:"Wybierz poziom, przedmiot i klasÄ, aby opublikowaÄ w Bibliotece SpoÅecznoÅci",saveSuccessEdit:"Zaktualizowano grÄ!",saveSuccessCreate:"Utworzono grÄ!",snapshotLarge:"Gra jest zbyt duża, aby opublikowaÄ w Bibliotece SpoÅecznoÅci. ZostaÅa zapisana lokalnie.",limitReached:"OsiÄ
gniÄto limit tworzenia gier",errorPrefix:"BÅÄ
d: {{message}}",deleteConfirmQ:"UsunÄ
Ä wszystkie pytania?",deletedAllQ:"Wszystkie pytania zostaÅy usuniÄte",deletedQ:"UsuniÄto pytanie {{num}}",qUpdated:"Zaktualizowano pytanie",qAdded:"Dodano {{count}} pytaÅ (ÅÄ
cznie: {{total}})",starLimitReached:"OsiÄ
gniÄto limit {{totalStars}} pytaÅ. Nie można dodaÄ wiÄcej.",starLimitAdded:"Dodano tylko {{added}} pytaÅ z powodu limitu {{totalStars}} gwiazdek",noQuestionAdded:"Nie udaÅo siÄ dodaÄ Å¼adnych pytaÅ (pominiÄto {{skipped}})",lessonAdded:'Dodano {{added}} pytaÅ z "{{title}}" (pominiÄto {{skipped}})'},player={loading:"Åadowanie...",finger1:"1 palec",finger2:"2 palce",finger3:"3 palce",finger4:"4 palce",freezeLabel:"sekund zamrożenia",end:"ð ZakoÅczono!",draw:"ð¤ Remis!",winnerLabel:"ZwyciÄzca",totalBag:"W worku: {{stars}} gwiazdek",viewReport:"ð Zobacz Raport",exit:"WyjÅcie",reportTitle:"ð Raport Wyników",winBadge:"ð {{name}} wygrywa",close:"â Zamknij",teamStats:"â {{name}} ({{stars}} gwiazdek)",noAnswers:"Brak odpowiedzi",qNum:"Pytanie {{num}}",chosen:"Wybrano:",image:"(obraz)",correctHint:"PrawidÅowa odpowiedź: {{answers}}",notFound:"Nie znaleziono gry",backHome:"WrÃ³Ä do strony gÅównej"},plStarBagGame={pageTitle,myGames,createNew,games,create,guide,guideDe
573sc,myStarBags,form,player},savedLang=localStorage.getItem("lang")||"vi";instance.use(initReactI18next).init({resources:{vi:{common:viCommon,landing:viLanding,home:viHome,login:viLogin,tugOfWar:viTugOfWar,interactiveVideo:viInteractiveVideo,interactiveImage:viInteractiveImage,panorama:viPanorama,headTiltQuiz:viHeadTiltQuiz,quizGame:viQuizGame,wheelQuiz:viWheelQuiz,library:viLibrary,companion:viCompanion,handSlash:viHandSlash,flipPuzzle:viFlipPuzzle,pacedQuiz:viPacedQuiz,crossword:viCrossword,noiseTracker:viNoiseTracker,poseQuiz:viPoseQuiz,questionBank:viQuestionBank,journey:viJourney,turnBasedGame:viTurnBasedGame,assignment:viAssignment,teacherShare:viTeacherShare,versusGame:viVersusGame,paperMode:viPaperMode,faceRandom:viFaceRandom,pricing:viPricing,legal:viLegal,about:viAbout,starBagGame:viStarBagGame,htmlEmbedGame:viHtmlEmbedGame,aiTools:viAiTools,scavengerHunt:viScavengerHunt,flashcard:viFlashcard,flyingWords:viFlyingWords,edutechExtensions:viEdutechExtensions},en:{common:enCommon,landing:enLanding,home:enHome,login:enLogin,tugOfWar:enTugOfWar,interactiveVideo:enInteractiveVideo,interactiveImage:enInteractiveImage,panorama:enPanorama,headTiltQuiz:enHeadTiltQuiz,quizGame:enQuizGame,wheelQuiz:enWheelQuiz,library:enLibrary,companion:enCompanion,handSlash:enHandSlash,flipPuzzle:enFlipPuzzle,pacedQuiz:enPacedQuiz,crossword:enCrossword,noiseTracker:enNoiseTracker,poseQuiz:enPoseQuiz,questionBank:enQuestionBank,journey:enJourney,turnBasedGame:enTurnBasedGame,assignment:enAssignment,teacherShare:enTeacherShare,versusGame:enVersusGame,paperMode:enPaperMode,faceRandom:enFaceRandom,pricing:enPricing,legal:enLegal,about:enAbout,starBagGame:enStarBagGame,htmlEmbedGame:enHtmlEmbedGame,aiTools:enAiTools,scavengerHunt:enScavengerHunt,flashcard:enFlashcard,flyingWords:enFlyingWords,edutechExtensions:enEdutechExtensions},pl:{common:plCommon,landing:plLanding,home:plHome,pricing:plPricing,legal:plLegal,about:plAbout,login:plLogin,tugOfWar:plTugOfWar,assignment:plAssignment,headTiltQuiz:plHeadTiltQuiz,questionBank:plQuestionBank,library:plLibrary,handSlash:plHandSlash,turnBasedGame:plTurnBasedGame,poseQuiz:plPoseQuiz,teacherShare:plTeacherShare,starBagGame:plStarBagGame,htmlEmbedGame:plHtmlEmbedGame}},lng:savedLang,fallbackLng:"vi",ns:["common","landing","home","login","tugOfWar","interactiveVideo","interactiveImage","panorama","headTiltQuiz","quizGame","wheelQuiz","library","companion","handSlash","flipPuzzle","pacedQuiz","crossword","noiseTracker","poseQuiz","questionBank","journey","turnBasedGame","assignment","teacherShare","versusGame","paperMode","faceRandom","pricing","legal","about","starBagGame","htmlEmbedGame","aiTools","scavengerHunt","flashcard","flyingWords","edutechExtensions"],defaultNS:"common",interpolation:{escapeValue:!1}});instance.on("languageChanged",o=>{localStorage.setItem("lang",o)});window.addEventListener("vite:preloadError",o=>{sessionStorage.getItem("chunk_reload")||(o.preventDefault(),sessionStorage.setItem("chunk_reload","1"),window.location.reload())});sessionStorage.removeItem("chunk_reload");ReactDOM$1.createRoot(document.getElementById("root")).render(jsxRuntimeExports.jsx(React$1.StrictMode,{children:jsxRuntimeExports.jsx(ChunkErrorBoundary,{children:jsxRuntimeExports.jsx(App,{})})}));export{TableHead as $,AnimatePresence as A,Button as B,CircularProgress as C,Dialog as D,instance as E,seoConfig as F,getStructuredData as G,Header as H,IconButton as I,Menu as J,MenuItem as K,List as L,ManualTransferAccordion as M,Chip as N,Link$1 as O,PAYMENT_CONFIG as P,HomeIcon as Q,useToast as R,SeoHelmet as S,Typography as T,UpgradeModal as U,useLocation as V,utils as W,writeSync as X,CloseIcon as Y,ContentCopyIcon as Z,Table as _,useAuth as a,useEventCallback as a$,TableRow as a0,TableCell as a1,TableBody as a2,ExpandLessIcon as a3,ExpandMoreIcon as a4,AssignIcon as a5,createSvgIcon as a6,CheckCircle as a7,generateUtilityClass as a8,generateUtilityClasses as a9,lazyRetry as aA,capitalize as aB,createTheme$1 as aC,useFormControl as aD,FormControlContext as aE,realtimeDb as aF,useControlled as aG,ButtonBase as aH,rootShouldForwardProp as aI,formControlState as aJ,mergeSlotProps$1 as aK,createSimplePaletteValueFilter as aL,createStyled as aM,useTheme$2 as aN,getThemeProps$1 as aO,useRtl as aP,css as aQ,keyframes$1 as aR,getDividerUtilityClass as aS,HomeTabsNav as aT,ownerDocument as aU,Portal as aV,useForkRef as aW,useEnhancedEffect as aX,useSlotProps as aY,useTimeout as aZ,useId as a_,useDefaultProps as aa,useSlot as ab,clsx as ac,composeClasses as ad,styled as ae,memoTheme as af,combineSchemas as ag,getBreadcrumb as ah,LandingHeader as ai,audioManager as aj,deriveFeatureStatus as ak,useSessionGuard as al,BaseModal as am,ListItemIcon as an,storage as ao,checkCanUseExtendedLink as ap,isDesktopDevice as aq,isInAppBrowser as ar,Form
573Control as as,Select as at,InputBase as au,markProjectSearchDirty as av,incrementInteractiveVideoCount as aw,ListItem as ax,katexToHTML as ay,renderWithKaTeX as az,useSubscription as b,incrementPanoramaCount as b$,Timeout as b0,getReactElementRef as b1,Grow as b2,isFocusVisible as b3,resolveProps as b4,generateDefaultLessonTitle as b5,TRIAL_LIMITS as b6,updateFeatureCounter as b7,checkCanUseFeature as b8,getPinnedItems as b9,incrementCrosswordPuzzleCount as bA,checkCanCreateCrosswordPuzzle as bB,incrementQuizGameCount as bC,incrementFlipPuzzleCount as bD,checkCanCreateFlipPuzzle as bE,createChainedFunction as bF,readSync as bG,auth as bH,Popover as bI,Star as bJ,debounce as bK,ownerWindow as bL,useConstant as bM,motionValue as bN,MotionConfigContext as bO,useIsomorphicLayoutEffect as bP,cancelFrame as bQ,frame as bR,interpolate as bS,collectMotionValues as bT,mixNumber$1 as bU,moveItem as bV,isMotionValue as bW,clamp$1 as bX,extractEventHandlers as bY,isHostComponent as bZ,slotShouldForwardProp as b_,autoPinRecentItems as ba,togglePinItem as bb,Collapse as bc,InputLabel as bd,incrementScavengerHuntCount as be,checkCanCreateScavengerHunt as bf,incrementKnowledgeTrainCount as bg,checkCanCreateKnowledgeTrain as bh,incrementMindMapCount as bi,checkCanCreateMindMap as bj,incrementFlashcardCount as bk,checkCanCreateFlashcard as bl,incrementHtmlEmbedGameCount as bm,checkCanCreateHtmlEmbedGame as bn,incrementMinesweeperGameCount as bo,checkCanCreateMinesweeperGame as bp,incrementTugOfWarCount as bq,checkCanCreateTugOfWar as br,incrementPacedQuizCount as bs,checkCanCreatePacedQuiz as bt,incrementPoseQuizCount as bu,checkCanCreatePoseQuiz as bv,incrementHeadTiltQuizCount as bw,checkCanCreateHeadTiltQuiz as bx,incrementInteractiveImageCount as by,checkCanCreateInteractiveImage as bz,useTranslation as c,extendSxProp$1 as c0,isMuiElement as c1,CheckIcon as c2,MenuList as c3,FormLabel as c4,useMindMapSession as c5,Lottie as c6,useEffectSystem as c7,EFFECTS as c8,incrementStarBagGameCount as c9,emphasize as ca,LibraryBooksIcon as cb,checkCanCreateJourney as cc,incrementJourneyCount as cd,setRef as ce,ClearIcon as cf,ArrowDropDownIcon as cg,filledInputClasses as ch,inputBaseClasses as ci,outlinedInputClasses as cj,inputClasses as ck,Drawer as cl,GroupsIcon as cm,writeFileSync as cn,Link as co,Stepper as cp,Step as cq,StepLabel as cr,Routes as cs,Route as ct,Navigate as cu,Slide as cv,config$1 as cw,xlsx as cx,DialogTitle as d,DialogContent as e,DialogActions as f,HelpVideoModal as g,getAIToolsAccess as h,getUserSubscription as i,AI_TOOLS_MAP as j,db as k,app as l,motion as m,useNavigate as n,Trans as o,Box as p,Alert as q,Paper as r,ListItemButton as s,ListItemText as t,useParams as u,TextField as v,usePaymentQr as w,useSearchParams as x,useTheme as y,useMediaQuery as z};
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.