diff --git a/.gitignore b/.gitignore index a547bf3..2ce1b99 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,19 @@ dist-ssr *.njsproj *.sln *.sw? + +# Microsoft Office temporary lock files +~$*.docx + +# Large original media kept outside the production bundle +source-assets/ + +# Videos and oversized deployment assets are managed outside Git +*.mp4 +*.webm +*.mov +*.m4v +*.avi +*.mkv +/public/fonts/SourceHanSansSC-Medium.otf +/public/teachers/yuan-yuan/documents/yy-6bbf801b066d.pptx diff --git a/index.html b/index.html index 13cae72..5914a40 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,10 @@ - + 南湖名师/技能大师工作室 diff --git a/package.json b/package.json index ef1deca..9d9c1af 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,15 @@ "preview": "vite preview" }, "dependencies": { - "axios": "^1.12.2", "clsx": "^2.1.1", + "docx-preview": "^0.3.7", + "exceljs": "4.4.0", "lucide-react": "^0.545.0", - "mammoth": "^1.11.0", + "pptx-preview": "1.0.7", "react": "^19.1.1", "react-dom": "^19.1.1", - "react-router-dom": "^7.9.4", + "react-router-dom": "^7.18.4", + "vconsole": "^3.15.1", "zustand": "^5.0.8" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fadf8be..b65d136 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,18 +8,21 @@ importers: .: dependencies: - axios: - specifier: ^1.12.2 - version: 1.12.2 clsx: specifier: ^2.1.1 version: 2.1.1 + docx-preview: + specifier: ^0.3.7 + version: 0.3.7 + exceljs: + specifier: 4.4.0 + version: 4.4.0 lucide-react: specifier: ^0.545.0 version: 0.545.0(react@19.2.0) - mammoth: - specifier: ^1.11.0 - version: 1.11.0 + pptx-preview: + specifier: 1.0.7 + version: 1.0.7 react: specifier: ^19.1.1 version: 19.2.0 @@ -27,8 +30,11 @@ importers: specifier: ^19.1.1 version: 19.2.0(react@19.2.0) react-router-dom: - specifier: ^7.9.4 - version: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^7.18.4 + version: 7.18.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + vconsole: + specifier: ^3.15.1 + version: 3.15.1 zustand: specifier: ^5.0.8 version: 5.0.8(@types/react@19.2.2)(react@19.2.0) @@ -165,6 +171,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -371,6 +381,12 @@ packages: resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fast-csv/format@4.3.5': + resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} + + '@fast-csv/parse@4.3.6': + resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -653,6 +669,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node@14.18.63': + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + '@types/node@24.8.0': resolution: {integrity: sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==} @@ -729,10 +748,6 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@xmldom/xmldom@0.8.11': - resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} - engines: {node: '>=10.0.0'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -750,14 +765,35 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} @@ -766,8 +802,9 @@ packages: peerDependencies: postcss: ^8.1.0 - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -775,10 +812,20 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.16: - resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} + baseline-browser-mapping@2.9.6: + resolution: {integrity: sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==} hasBin: true + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} @@ -797,10 +844,32 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-indexof-polyfill@1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -808,6 +877,9 @@ packages: caniuse-lite@1.0.30001750: resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} + chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -827,9 +899,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -841,9 +913,25 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + copy-text-to-clipboard@3.2.2: + resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==} + engines: {node: '>=12'} + + core-js@3.46.0: + resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -851,6 +939,21 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -863,31 +966,49 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dingbat-to-unicode@1.0.1: - resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} - - duck@0.1.12: - resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + docx-preview@0.3.7: + resolution: {integrity: sha512-Lav69CTA/IYZPJTsKH7oYeoZjyg96N0wEJMNslGJnZJ+dMUZK85Lt5ASC79yUlD48ecWjuv+rkcmFt6EVPV0Xg==} dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + + echarts@5.6.0: + resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} + electron-to-chromium@1.5.237: resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} + es-abstract-get@1.0.0: + resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -896,14 +1017,18 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-to-primitive@1.3.4: + resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} + engines: {node: '>= 0.4'} + esbuild@0.25.11: resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} @@ -970,6 +1095,14 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + exceljs@4.4.0: + resolution: {integrity: sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==} + engines: {node: '>=8.3.0'} + + fast-csv@4.3.6: + resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==} + engines: {node: '>=10.0.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1014,30 +1147,43 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + fstream@1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + deprecated: This package is no longer supported. + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.2.0: + resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -1050,6 +1196,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1058,6 +1208,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1066,6 +1220,10 @@ packages: resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} engines: {node: '>=18'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1076,10 +1234,21 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -1088,10 +1257,13 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1111,24 +1283,123 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-document.all@1.0.0: + resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} + engines: {node: '>= 0.4'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1168,6 +1439,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -1243,15 +1518,58 @@ packages: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} + listenercount@1.0.1: + resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.groupby@4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isnil@4.0.0: + resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isundefined@3.0.1: + resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lop@0.4.2: - resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -1264,11 +1582,6 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - mammoth@1.11.0: - resolution: {integrity: sha512-BcEqqY/BOwIcI1iR5tqyVlqc3KIaMRa4egSoK83YAVrBf6+yqdAAbtUcFDCWX8Zef8/fgNZ6rl4VUv+vVX8ddQ==} - engines: {node: '>=12.0.0'} - hasBin: true - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -1281,21 +1594,20 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1304,9 +1616,16 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mutation-observer@1.0.3: + resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1318,17 +1637,37 @@ packages: node-releases@2.0.23: resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - option@0.2.4: - resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + own-keys@1.0.2: + resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} + engines: {node: '>= 0.4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1367,6 +1706,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -1374,6 +1717,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + pptx-preview@1.0.7: + resolution: {integrity: sha512-YByocJuyxAR4YB4Q3+VAxdLfEvA5LojG1gAJsx2Mw0QU5FJPps/2fkJOupJ6oBbA+KdWRpuAk6G6T34rKCHVxw==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1381,9 +1727,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1400,15 +1743,15 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-router-dom@7.9.4: - resolution: {integrity: sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==} + react-router-dom@7.18.4: + resolution: {integrity: sha512-yrfmJHIpDG7taCpqKjT1G5B6q3O2K+RN8/fgNf0lTjCwiPbQ0ei6vXX9ZjQR+7ld8Tr7Z5xmyMnZ8YJrphWQUw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.9.4: - resolution: {integrity: sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==} + react-router@7.18.4: + resolution: {integrity: sha512-PUPQcMhMGRAslLcvtlPz/kmzBEWPhLdgLFrL7pLNepBL6dX0lWj4WD2cUYVgYCuT3jxvghYFg81cDTj44DhetQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -1424,6 +1767,21 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1432,6 +1790,11 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup@4.52.4: resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1440,9 +1803,25 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -1458,6 +1837,18 @@ packages: set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -1469,12 +1860,41 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.11: + resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.10: + resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -1494,6 +1914,10 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar@7.5.1: resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} @@ -1502,20 +1926,54 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + traverse@0.3.10: + resolution: {integrity: sha512-pd6fq5qmiFuPA3TpdqBCqJXlOrSdCSt0l9IZDg83Vbf4x3m/X18prEwMMVM5LXp9vGL9NxjeiDGBrTasqyngXQ==} + engines: {node: '>= 0.4'} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.5: + resolution: {integrity: sha512-0FHJvLPqZ7KJzp17O13jfsAjsqazgrxBu2zEK95PmUz8lv2+GjRuxUInCr2Rk9Dms3ihN21zJ929ZO43yJ95QQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.8: + resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} + engines: {node: '>= 0.4'} + + typedarray.prototype.slice@1.0.6: + resolution: {integrity: sha512-r+7YvGfM5TkTiDQ5EqWi/Z4L4KP3jUI+YCmTtWg1tmTHUw6xladLJqzR2heMaHBIM0TTFLZmn/EkIaEHYs/bIA==} + engines: {node: '>= 0.4'} + typescript-eslint@8.46.1: resolution: {integrity: sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1528,12 +1986,16 @@ packages: engines: {node: '>=14.17'} hasBin: true - underscore@1.13.7: - resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + unzipper@0.10.14: + resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -1546,6 +2008,17 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vconsole@3.15.1: + resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==} + vite@7.1.10: resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1586,6 +2059,22 @@ packages: yaml: optional: true + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.24: + resolution: {integrity: sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1595,9 +2084,11 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - xmlbuilder@10.1.1: - resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} - engines: {node: '>=4.0'} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -1610,6 +2101,13 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + + zrender@5.6.1: + resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} + zustand@5.0.8: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} @@ -1721,6 +2219,8 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.28.4': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -1868,6 +2368,25 @@ snapshots: '@eslint/core': 0.16.0 levn: 0.4.1 + '@fast-csv/format@4.3.5': + dependencies: + '@types/node': 14.18.63 + lodash.escaperegexp: 4.1.2 + lodash.isboolean: 3.0.3 + lodash.isequal: 4.5.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + + '@fast-csv/parse@4.3.6': + dependencies: + '@types/node': 14.18.63 + lodash.escaperegexp: 4.1.2 + lodash.groupby: 4.6.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + lodash.isundefined: 3.0.1 + lodash.uniq: 4.5.0 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -2079,6 +2598,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/node@14.18.63': {} + '@types/node@24.8.0': dependencies: undici-types: 7.14.0 @@ -2196,8 +2717,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@xmldom/xmldom@0.8.11': {} - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -2215,13 +2734,62 @@ snapshots: dependencies: color-convert: 2.0.1 - argparse@1.0.10: + archiver-utils@2.1.0: dependencies: - sprintf-js: 1.0.3 + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.6 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 argparse@2.0.1: {} - asynckit@0.4.0: {} + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + async-function@1.0.0: {} + + async@3.2.6: {} autoprefixer@10.4.21(postcss@8.5.6): dependencies: @@ -2233,19 +2801,28 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - axios@1.12.2: + available-typed-arrays@1.0.7: dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug + possible-typed-array-names: 1.1.0 balanced-match@1.0.2: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.8.16: {} + baseline-browser-mapping@2.9.6: {} + + big-integer@1.6.52: {} + + binary@0.3.0: + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 bluebird@3.4.7: {} @@ -2264,21 +2841,48 @@ snapshots: browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.16 + baseline-browser-mapping: 2.9.6 caniuse-lite: 1.0.30001750 electron-to-chromium: 1.5.237 node-releases: 2.0.23 update-browserslist-db: 1.1.3(browserslist@4.26.3) + buffer-crc32@0.2.13: {} + + buffer-indexof-polyfill@1.0.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffers@0.1.1: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} caniuse-lite@1.0.30001750: {} + chainsaw@0.1.0: + dependencies: + traverse: 0.3.10 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -2294,9 +2898,12 @@ snapshots: color-name@1.1.4: {} - combined-stream@1.0.8: + compress-commons@4.1.2: dependencies: - delayed-stream: 1.0.0 + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 concat-map@0.0.1: {} @@ -2304,8 +2911,19 @@ snapshots: cookie@1.0.2: {} + copy-text-to-clipboard@3.2.2: {} + + core-js@3.46.0: {} + core-util-is@1.0.3: {} + crc-32@1.2.2: {} + + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -2314,21 +2932,49 @@ snapshots: csstype@3.1.3: {} + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.23: {} + debug@4.4.3: dependencies: ms: 2.1.3 deep-is@0.1.4: {} - delayed-stream@1.0.0: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 detect-libc@2.1.2: {} - dingbat-to-unicode@1.0.1: {} - - duck@0.1.12: + docx-preview@0.3.7: dependencies: - underscore: 1.13.7 + jszip: 3.10.1 dunder-proto@1.0.1: dependencies: @@ -2336,18 +2982,95 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + + echarts@5.6.0: + dependencies: + tslib: 2.3.0 + zrender: 5.6.1 + electron-to-chromium@1.5.237: {} + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 + es-abstract-get@1.0.0: + dependencies: + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + is-callable: 1.2.7 + object-inspect: 1.13.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.4 + function.prototype.name: 1.2.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.2 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.11 + string.prototype.trimend: 1.0.10 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.5 + typed-array-length: 1.0.8 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.24 + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-object-atoms@1.1.1: + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -2356,7 +3079,16 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 + + es-to-primitive@1.3.4: + dependencies: + es-abstract-get: 1.0.0 + es-define-property: 1.0.1 + es-errors: 1.3.0 + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 esbuild@0.25.11: optionalDependencies: @@ -2468,6 +3200,23 @@ snapshots: esutils@2.0.3: {} + exceljs@4.4.0: + dependencies: + archiver: 5.3.2 + dayjs: 1.11.23 + fast-csv: 4.3.6 + jszip: 3.10.1 + readable-stream: 3.6.2 + saxes: 5.0.1 + tmp: 0.2.7 + unzipper: 0.10.14 + uuid: 8.3.2 + + fast-csv@4.3.6: + dependencies: + '@fast-csv/format': 4.3.5 + '@fast-csv/parse': 4.3.6 + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -2510,23 +3259,44 @@ snapshots: flatted@3.3.3: {} - follow-redirects@1.15.11: {} - - form-data@4.0.4: + for-each@0.3.5: dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 + is-callable: 1.2.7 fraction.js@4.3.7: {} + fs-constants@1.0.0: {} + + fs.realpath@1.0.0: {} + fsevents@2.3.3: optional: true + fstream@1.0.12: + dependencies: + graceful-fs: 4.2.11 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + function-bind@1.1.2: {} + function.prototype.name@1.2.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + es-define-property: 1.0.1 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + hasown: 2.0.4 + is-callable: 1.2.7 + is-document.all: 1.0.0 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-intrinsic@1.3.0: @@ -2534,18 +3304,24 @@ snapshots: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 glob-parent@5.1.2: dependencies: @@ -2555,28 +3331,54 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + globals@14.0.0: {} globals@16.4.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} graphemer@1.4.0: {} + has-bigints@1.1.0: {} + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: has-symbols: 1.1.0 - hasown@2.0.2: + hasown@2.0.4: dependencies: function-bind: 1.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -2590,18 +3392,131 @@ snapshots: imurmurhash@0.1.4: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.4 + side-channel: 1.1.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-document.all@1.0.0: + dependencies: + call-bound: 1.0.4 + is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.24 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + isarray@1.0.0: {} + isarray@2.0.5: {} + isexe@2.0.0: {} jiti@2.6.1: {} @@ -2633,6 +3548,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -2687,17 +3606,41 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 + listenercount@1.0.1: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash.defaults@4.2.0: {} + + lodash.difference@4.5.0: {} + + lodash.escaperegexp@4.1.2: {} + + lodash.flatten@4.4.0: {} + + lodash.groupby@4.6.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@3.0.9: {} + + lodash.isnil@4.0.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isundefined@3.0.1: {} + lodash.merge@4.6.2: {} - lop@0.4.2: - dependencies: - duck: 0.1.12 - option: 0.2.4 - underscore: 1.13.7 + lodash.union@4.6.0: {} + + lodash.uniq@4.5.0: {} + + lodash@4.18.1: {} lru-cache@5.1.1: dependencies: @@ -2711,19 +3654,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - mammoth@1.11.0: - dependencies: - '@xmldom/xmldom': 0.8.11 - argparse: 1.0.10 - base64-js: 1.5.1 - bluebird: 3.4.7 - dingbat-to-unicode: 1.0.1 - jszip: 3.10.1 - lop: 0.4.2 - path-is-absolute: 1.0.1 - underscore: 1.13.7 - xmlbuilder: 10.1.1 - math-intrinsics@1.1.0: {} merge2@1.4.1: {} @@ -2733,37 +3663,60 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + minipass@7.1.2: {} minizlib@3.1.0: dependencies: minipass: 7.1.2 + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + ms@2.1.3: {} + mutation-observer@1.0.3: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} node-releases@2.0.23: {} + normalize-path@3.0.0: {} + normalize-range@0.1.2: {} - option@0.2.4: {} + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 optionator@0.9.4: dependencies: @@ -2774,6 +3727,13 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + own-keys@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -2800,6 +3760,8 @@ snapshots: picomatch@4.0.3: {} + possible-typed-array-names@1.1.0: {} + postcss-value-parser@4.2.0: {} postcss@8.5.6: @@ -2808,12 +3770,18 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + pptx-preview@1.0.7: + dependencies: + echarts: 5.6.0 + jszip: 3.10.1 + lodash: 4.18.1 + tslib: 2.8.1 + uuid: 10.0.0 + prelude-ls@1.2.1: {} process-nextick-args@2.0.1: {} - proxy-from-env@1.1.0: {} - punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -2825,13 +3793,13 @@ snapshots: react-refresh@0.17.0: {} - react-router-dom@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-router-dom@7.18.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-router: 7.18.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-router@7.18.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: cookie: 1.0.2 react: 19.2.0 @@ -2851,10 +3819,44 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + resolve-from@4.0.0: {} reusify@1.1.0: {} + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + rollup@4.52.4: dependencies: '@types/estree': 1.0.8 @@ -2887,8 +3889,31 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.1.2: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + scheduler@0.27.0: {} semver@6.3.1: {} @@ -2897,6 +3922,28 @@ snapshots: set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + setimmediate@1.0.5: {} shebang-command@2.0.0: @@ -2905,9 +3952,64 @@ snapshots: shebang-regex@3.0.0: {} + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + source-map-js@1.2.1: {} - sprintf-js@1.0.3: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.trim@1.2.11: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + has-property-descriptors: 1.0.2 + safe-regex-test: 1.1.0 + + string.prototype.trimend@1.0.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 string_decoder@1.1.1: dependencies: @@ -2923,6 +4025,14 @@ snapshots: tapable@2.3.0: {} + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -2936,18 +4046,75 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tmp@0.2.7: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + traverse@0.3.10: + dependencies: + define-data-property: 1.1.4 + es-to-primitive: 1.3.4 + gopd: 1.2.0 + typedarray.prototype.slice: 1.0.6 + which-typed-array: 1.1.24 + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: typescript: 5.9.3 + tslib@2.3.0: {} + + tslib@2.8.1: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.5: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.8: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray.prototype.slice@1.0.6: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-proto: 1.0.1 + math-intrinsics: 1.1.0 + typed-array-buffer: 1.0.3 + typed-array-byte-offset: 1.0.5 + typescript-eslint@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) @@ -2961,10 +4128,28 @@ snapshots: typescript@5.9.3: {} - underscore@1.13.7: {} + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 undici-types@7.14.0: {} + unzipper@0.10.14: + dependencies: + big-integer: 1.6.52 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.11 + listenercount: 1.0.1 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: browserslist: 4.26.3 @@ -2977,6 +4162,17 @@ snapshots: util-deprecate@1.0.2: {} + uuid@10.0.0: {} + + uuid@8.3.2: {} + + vconsole@3.15.1: + dependencies: + '@babel/runtime': 7.28.4 + copy-text-to-clipboard: 3.2.2 + core-js: 3.46.0 + mutation-observer: 1.0.3 + vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1): dependencies: esbuild: 0.25.11 @@ -2991,13 +4187,56 @@ snapshots: jiti: 2.6.1 lightningcss: 1.30.1 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.2.0 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.24 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.24: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 word-wrap@1.2.5: {} - xmlbuilder@10.1.1: {} + wrappy@1.0.2: {} + + xmlchars@2.2.0: {} yallist@3.1.1: {} @@ -3005,6 +4244,16 @@ snapshots: yocto-queue@0.1.0: {} + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + + zrender@5.6.1: + dependencies: + tslib: 2.3.0 + zustand@5.0.8(@types/react@19.2.2)(react@19.2.0): optionalDependencies: '@types/react': 19.2.2 diff --git a/public/fonts/DingTalk-JinBuTi.ttf b/public/fonts/DingTalk-JinBuTi.ttf new file mode 100644 index 0000000..c4efa55 Binary files /dev/null and b/public/fonts/DingTalk-JinBuTi.ttf differ diff --git a/public/teachers/yuan-yuan/documents/yy-080f8fc67590.docx b/public/teachers/yuan-yuan/documents/yy-080f8fc67590.docx new file mode 100644 index 0000000..e5a196a Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-080f8fc67590.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-103d5fb0c56d.docx b/public/teachers/yuan-yuan/documents/yy-103d5fb0c56d.docx new file mode 100644 index 0000000..3f923db Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-103d5fb0c56d.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-12b019970af0.docx b/public/teachers/yuan-yuan/documents/yy-12b019970af0.docx new file mode 100644 index 0000000..54d98c4 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-12b019970af0.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-140dfc4e5d15.docx b/public/teachers/yuan-yuan/documents/yy-140dfc4e5d15.docx new file mode 100644 index 0000000..95c6cbf Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-140dfc4e5d15.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-1be8039474b0.docx b/public/teachers/yuan-yuan/documents/yy-1be8039474b0.docx new file mode 100644 index 0000000..b012260 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-1be8039474b0.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-1cf055db6228.xlsx b/public/teachers/yuan-yuan/documents/yy-1cf055db6228.xlsx new file mode 100644 index 0000000..cf63dd6 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-1cf055db6228.xlsx differ diff --git a/public/teachers/yuan-yuan/documents/yy-1d518d4a5408.docx b/public/teachers/yuan-yuan/documents/yy-1d518d4a5408.docx new file mode 100644 index 0000000..6576cf5 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-1d518d4a5408.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-1f4add5fa881.docx b/public/teachers/yuan-yuan/documents/yy-1f4add5fa881.docx new file mode 100644 index 0000000..9966e0e Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-1f4add5fa881.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-23f7204d6de8.docx b/public/teachers/yuan-yuan/documents/yy-23f7204d6de8.docx new file mode 100644 index 0000000..e4cdc91 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-23f7204d6de8.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-2c4c211f81a9.pdf b/public/teachers/yuan-yuan/documents/yy-2c4c211f81a9.pdf new file mode 100644 index 0000000..0a4ab4f Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-2c4c211f81a9.pdf differ diff --git a/public/teachers/yuan-yuan/documents/yy-3ad88156591b.docx b/public/teachers/yuan-yuan/documents/yy-3ad88156591b.docx new file mode 100644 index 0000000..7d138b4 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-3ad88156591b.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-46a51bbe0e24.xlsx b/public/teachers/yuan-yuan/documents/yy-46a51bbe0e24.xlsx new file mode 100644 index 0000000..5cb4d77 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-46a51bbe0e24.xlsx differ diff --git a/public/teachers/yuan-yuan/documents/yy-46cd9da9d1c7.docx b/public/teachers/yuan-yuan/documents/yy-46cd9da9d1c7.docx new file mode 100644 index 0000000..b461012 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-46cd9da9d1c7.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-4a9181c97fae.docx b/public/teachers/yuan-yuan/documents/yy-4a9181c97fae.docx new file mode 100644 index 0000000..072a460 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-4a9181c97fae.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-4beac9bea263.docx b/public/teachers/yuan-yuan/documents/yy-4beac9bea263.docx new file mode 100644 index 0000000..5a86000 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-4beac9bea263.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-5c5b84a406b2.docx b/public/teachers/yuan-yuan/documents/yy-5c5b84a406b2.docx new file mode 100644 index 0000000..05f4672 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-5c5b84a406b2.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-676636592f7f.docx b/public/teachers/yuan-yuan/documents/yy-676636592f7f.docx new file mode 100644 index 0000000..2423df7 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-676636592f7f.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-68612dc99ccd.pptx b/public/teachers/yuan-yuan/documents/yy-68612dc99ccd.pptx new file mode 100644 index 0000000..d0476f9 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-68612dc99ccd.pptx differ diff --git a/public/teachers/yuan-yuan/documents/yy-69bbd4b7d451.docx b/public/teachers/yuan-yuan/documents/yy-69bbd4b7d451.docx new file mode 100644 index 0000000..3d0c208 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-69bbd4b7d451.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-6b314ab9b7aa.docx b/public/teachers/yuan-yuan/documents/yy-6b314ab9b7aa.docx new file mode 100644 index 0000000..0fe0a2d Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-6b314ab9b7aa.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-830ab4afa7a8.docx b/public/teachers/yuan-yuan/documents/yy-830ab4afa7a8.docx new file mode 100644 index 0000000..8d4187c Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-830ab4afa7a8.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-877e7c256491.docx b/public/teachers/yuan-yuan/documents/yy-877e7c256491.docx new file mode 100644 index 0000000..c08f685 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-877e7c256491.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-8d6569e4d63f.pdf b/public/teachers/yuan-yuan/documents/yy-8d6569e4d63f.pdf new file mode 100644 index 0000000..82fa0a9 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-8d6569e4d63f.pdf differ diff --git a/public/teachers/yuan-yuan/documents/yy-930ecf67ce13.docx b/public/teachers/yuan-yuan/documents/yy-930ecf67ce13.docx new file mode 100644 index 0000000..4c7f2e3 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-930ecf67ce13.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-9774ee5a5840.docx b/public/teachers/yuan-yuan/documents/yy-9774ee5a5840.docx new file mode 100644 index 0000000..a9ce8e8 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-9774ee5a5840.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-a454eac2c91c.docx b/public/teachers/yuan-yuan/documents/yy-a454eac2c91c.docx new file mode 100644 index 0000000..00139ec Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-a454eac2c91c.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-a641c742ddbe.pdf b/public/teachers/yuan-yuan/documents/yy-a641c742ddbe.pdf new file mode 100644 index 0000000..0fbd970 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-a641c742ddbe.pdf differ diff --git a/public/teachers/yuan-yuan/documents/yy-b15f8f2a89e6.docx b/public/teachers/yuan-yuan/documents/yy-b15f8f2a89e6.docx new file mode 100644 index 0000000..bc4eaed Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-b15f8f2a89e6.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-ba05882368e2.pdf b/public/teachers/yuan-yuan/documents/yy-ba05882368e2.pdf new file mode 100644 index 0000000..2c972b5 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-ba05882368e2.pdf differ diff --git a/public/teachers/yuan-yuan/documents/yy-c018fd1d6577.docx b/public/teachers/yuan-yuan/documents/yy-c018fd1d6577.docx new file mode 100644 index 0000000..87654d5 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-c018fd1d6577.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-c12816437afd.docx b/public/teachers/yuan-yuan/documents/yy-c12816437afd.docx new file mode 100644 index 0000000..f5e1839 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-c12816437afd.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-ceb45269e7c0.docx b/public/teachers/yuan-yuan/documents/yy-ceb45269e7c0.docx new file mode 100644 index 0000000..061d588 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-ceb45269e7c0.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-d1ac14d56e79.docx b/public/teachers/yuan-yuan/documents/yy-d1ac14d56e79.docx new file mode 100644 index 0000000..a3a8ae3 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-d1ac14d56e79.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-d275bed3f0e5.docx b/public/teachers/yuan-yuan/documents/yy-d275bed3f0e5.docx new file mode 100644 index 0000000..333616e Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-d275bed3f0e5.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-e44ee7185d30.docx b/public/teachers/yuan-yuan/documents/yy-e44ee7185d30.docx new file mode 100644 index 0000000..f152638 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-e44ee7185d30.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-e8aba6fc581d.docx b/public/teachers/yuan-yuan/documents/yy-e8aba6fc581d.docx new file mode 100644 index 0000000..45b5827 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-e8aba6fc581d.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-ebf100eb148e.pdf b/public/teachers/yuan-yuan/documents/yy-ebf100eb148e.pdf new file mode 100644 index 0000000..b70d747 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-ebf100eb148e.pdf differ diff --git a/public/teachers/yuan-yuan/documents/yy-f234ec0b7e95.docx b/public/teachers/yuan-yuan/documents/yy-f234ec0b7e95.docx new file mode 100644 index 0000000..4487797 Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-f234ec0b7e95.docx differ diff --git a/public/teachers/yuan-yuan/documents/yy-ffd4a02cf8b8.docx b/public/teachers/yuan-yuan/documents/yy-ffd4a02cf8b8.docx new file mode 100644 index 0000000..86fad7f Binary files /dev/null and b/public/teachers/yuan-yuan/documents/yy-ffd4a02cf8b8.docx differ diff --git a/public/teachers/yuan-yuan/images/yy-054fe0894ad0.png b/public/teachers/yuan-yuan/images/yy-054fe0894ad0.png new file mode 100644 index 0000000..6cc9775 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-054fe0894ad0.png differ diff --git a/public/teachers/yuan-yuan/images/yy-0bdc6a875111.jpg b/public/teachers/yuan-yuan/images/yy-0bdc6a875111.jpg new file mode 100644 index 0000000..7767a27 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-0bdc6a875111.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-103aa6504ef4.jpg b/public/teachers/yuan-yuan/images/yy-103aa6504ef4.jpg new file mode 100644 index 0000000..f959ce2 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-103aa6504ef4.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-11d906ba5aef.jpg b/public/teachers/yuan-yuan/images/yy-11d906ba5aef.jpg new file mode 100644 index 0000000..dfa14b3 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-11d906ba5aef.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-13d3b7aa7934.jpg b/public/teachers/yuan-yuan/images/yy-13d3b7aa7934.jpg new file mode 100644 index 0000000..5bb9db2 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-13d3b7aa7934.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-16077b970574.jpg b/public/teachers/yuan-yuan/images/yy-16077b970574.jpg new file mode 100644 index 0000000..07aeb64 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-16077b970574.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-19df1223eaa9.jpg b/public/teachers/yuan-yuan/images/yy-19df1223eaa9.jpg new file mode 100644 index 0000000..44a2fab Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-19df1223eaa9.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-1a0272685ca9.jpg b/public/teachers/yuan-yuan/images/yy-1a0272685ca9.jpg new file mode 100644 index 0000000..de0d019 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-1a0272685ca9.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-1b7b1d317506.jpg b/public/teachers/yuan-yuan/images/yy-1b7b1d317506.jpg new file mode 100644 index 0000000..b518f94 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-1b7b1d317506.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-237d02f4b7d7.jpg b/public/teachers/yuan-yuan/images/yy-237d02f4b7d7.jpg new file mode 100644 index 0000000..059b7e7 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-237d02f4b7d7.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-23f6aef065df.jpg b/public/teachers/yuan-yuan/images/yy-23f6aef065df.jpg new file mode 100644 index 0000000..87dd151 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-23f6aef065df.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-24b12ca14b6e.jpg b/public/teachers/yuan-yuan/images/yy-24b12ca14b6e.jpg new file mode 100644 index 0000000..adda6b6 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-24b12ca14b6e.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-257ba9dd8588.png b/public/teachers/yuan-yuan/images/yy-257ba9dd8588.png new file mode 100644 index 0000000..689dd34 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-257ba9dd8588.png differ diff --git a/public/teachers/yuan-yuan/images/yy-265aca8993fb.jpg b/public/teachers/yuan-yuan/images/yy-265aca8993fb.jpg new file mode 100644 index 0000000..092b091 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-265aca8993fb.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-288733835fd8.jpg b/public/teachers/yuan-yuan/images/yy-288733835fd8.jpg new file mode 100644 index 0000000..dcda4c2 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-288733835fd8.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-28ef6be35d1d.jpg b/public/teachers/yuan-yuan/images/yy-28ef6be35d1d.jpg new file mode 100644 index 0000000..eef8999 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-28ef6be35d1d.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-2b0c08fd825f.jpg b/public/teachers/yuan-yuan/images/yy-2b0c08fd825f.jpg new file mode 100644 index 0000000..c3f2079 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-2b0c08fd825f.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-324182828caa.jpg b/public/teachers/yuan-yuan/images/yy-324182828caa.jpg new file mode 100644 index 0000000..ca2e326 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-324182828caa.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-3ab2a2a44872.jpg b/public/teachers/yuan-yuan/images/yy-3ab2a2a44872.jpg new file mode 100644 index 0000000..cf3df4a Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-3ab2a2a44872.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-3b1bffc8660d.jpg b/public/teachers/yuan-yuan/images/yy-3b1bffc8660d.jpg new file mode 100644 index 0000000..b589844 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-3b1bffc8660d.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-3d5a254d6723.jpg b/public/teachers/yuan-yuan/images/yy-3d5a254d6723.jpg new file mode 100644 index 0000000..a9e0e90 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-3d5a254d6723.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-3e5823b37a4c.jpg b/public/teachers/yuan-yuan/images/yy-3e5823b37a4c.jpg new file mode 100644 index 0000000..2d0d5ec Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-3e5823b37a4c.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-3e88e8c24e5b.jpg b/public/teachers/yuan-yuan/images/yy-3e88e8c24e5b.jpg new file mode 100644 index 0000000..d8735a7 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-3e88e8c24e5b.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-4ed455d5900f.jpg b/public/teachers/yuan-yuan/images/yy-4ed455d5900f.jpg new file mode 100644 index 0000000..b02a1b0 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-4ed455d5900f.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-52444124eb88.jpg b/public/teachers/yuan-yuan/images/yy-52444124eb88.jpg new file mode 100644 index 0000000..38f267d Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-52444124eb88.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-541e4c87ddf2.png b/public/teachers/yuan-yuan/images/yy-541e4c87ddf2.png new file mode 100644 index 0000000..f6d5ebc Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-541e4c87ddf2.png differ diff --git a/public/teachers/yuan-yuan/images/yy-55d9a662d7ca.png b/public/teachers/yuan-yuan/images/yy-55d9a662d7ca.png new file mode 100644 index 0000000..38e16e4 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-55d9a662d7ca.png differ diff --git a/public/teachers/yuan-yuan/images/yy-5fb551db7122.png b/public/teachers/yuan-yuan/images/yy-5fb551db7122.png new file mode 100644 index 0000000..b85a9d8 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-5fb551db7122.png differ diff --git a/public/teachers/yuan-yuan/images/yy-648c7151eb50.jpg b/public/teachers/yuan-yuan/images/yy-648c7151eb50.jpg new file mode 100644 index 0000000..00ef73a Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-648c7151eb50.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-6eec1b5ee237.jpg b/public/teachers/yuan-yuan/images/yy-6eec1b5ee237.jpg new file mode 100644 index 0000000..33692b6 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-6eec1b5ee237.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-70e8a68a6fae.jpg b/public/teachers/yuan-yuan/images/yy-70e8a68a6fae.jpg new file mode 100644 index 0000000..8f92261 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-70e8a68a6fae.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-76cd2203ce04.jpg b/public/teachers/yuan-yuan/images/yy-76cd2203ce04.jpg new file mode 100644 index 0000000..36f776f Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-76cd2203ce04.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-802e2dffa15d.jpg b/public/teachers/yuan-yuan/images/yy-802e2dffa15d.jpg new file mode 100644 index 0000000..e0b93a6 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-802e2dffa15d.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-8b05a8bc734f.jpg b/public/teachers/yuan-yuan/images/yy-8b05a8bc734f.jpg new file mode 100644 index 0000000..ffa1938 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-8b05a8bc734f.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-8cbc0606a867.jpg b/public/teachers/yuan-yuan/images/yy-8cbc0606a867.jpg new file mode 100644 index 0000000..26510b5 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-8cbc0606a867.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-91dbb52bc8c8.jpg b/public/teachers/yuan-yuan/images/yy-91dbb52bc8c8.jpg new file mode 100644 index 0000000..fb10a82 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-91dbb52bc8c8.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-9356471b539b.jpg b/public/teachers/yuan-yuan/images/yy-9356471b539b.jpg new file mode 100644 index 0000000..3f15f63 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-9356471b539b.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-96ea04cbbcfe.jpg b/public/teachers/yuan-yuan/images/yy-96ea04cbbcfe.jpg new file mode 100644 index 0000000..6727606 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-96ea04cbbcfe.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-976cc950e404.jpg b/public/teachers/yuan-yuan/images/yy-976cc950e404.jpg new file mode 100644 index 0000000..a49bf2c Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-976cc950e404.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-a78e1e33a538.jpg b/public/teachers/yuan-yuan/images/yy-a78e1e33a538.jpg new file mode 100644 index 0000000..2f53ea4 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-a78e1e33a538.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-a8066225aef8.jpg b/public/teachers/yuan-yuan/images/yy-a8066225aef8.jpg new file mode 100644 index 0000000..8c95732 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-a8066225aef8.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-af93ae8da88f.jpg b/public/teachers/yuan-yuan/images/yy-af93ae8da88f.jpg new file mode 100644 index 0000000..f28fe52 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-af93ae8da88f.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-b4686d32c1b8.jpg b/public/teachers/yuan-yuan/images/yy-b4686d32c1b8.jpg new file mode 100644 index 0000000..276cd2c Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-b4686d32c1b8.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-b7ba36c66b39.jpg b/public/teachers/yuan-yuan/images/yy-b7ba36c66b39.jpg new file mode 100644 index 0000000..f56faf5 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-b7ba36c66b39.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-ba70cffeb8cd.jpg b/public/teachers/yuan-yuan/images/yy-ba70cffeb8cd.jpg new file mode 100644 index 0000000..c777334 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-ba70cffeb8cd.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-c04ee17911ed.jpg b/public/teachers/yuan-yuan/images/yy-c04ee17911ed.jpg new file mode 100644 index 0000000..fd8a1d9 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-c04ee17911ed.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-c3b8b37e1a88.jpg b/public/teachers/yuan-yuan/images/yy-c3b8b37e1a88.jpg new file mode 100644 index 0000000..ad92d10 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-c3b8b37e1a88.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-c6f6554541e2.jpg b/public/teachers/yuan-yuan/images/yy-c6f6554541e2.jpg new file mode 100644 index 0000000..fee82fb Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-c6f6554541e2.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-ca13c244c7c7.jpg b/public/teachers/yuan-yuan/images/yy-ca13c244c7c7.jpg new file mode 100644 index 0000000..ca431b5 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-ca13c244c7c7.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-d4364e9b22f2.jpg b/public/teachers/yuan-yuan/images/yy-d4364e9b22f2.jpg new file mode 100644 index 0000000..fe881b8 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-d4364e9b22f2.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-d5efcf62648a.jpg b/public/teachers/yuan-yuan/images/yy-d5efcf62648a.jpg new file mode 100644 index 0000000..54ffbed Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-d5efcf62648a.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-d9a03d05790f.jpg b/public/teachers/yuan-yuan/images/yy-d9a03d05790f.jpg new file mode 100644 index 0000000..0092722 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-d9a03d05790f.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-e1ad47e6b1ac.jpg b/public/teachers/yuan-yuan/images/yy-e1ad47e6b1ac.jpg new file mode 100644 index 0000000..55db1cd Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-e1ad47e6b1ac.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-e5d73adf3b4c.jpg b/public/teachers/yuan-yuan/images/yy-e5d73adf3b4c.jpg new file mode 100644 index 0000000..b2c1a31 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-e5d73adf3b4c.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-e7bea3e6d659.jpg b/public/teachers/yuan-yuan/images/yy-e7bea3e6d659.jpg new file mode 100644 index 0000000..1470334 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-e7bea3e6d659.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-e8b5759f6de2.jpg b/public/teachers/yuan-yuan/images/yy-e8b5759f6de2.jpg new file mode 100644 index 0000000..d7fbf3c Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-e8b5759f6de2.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-ee8c1335ad91.jpg b/public/teachers/yuan-yuan/images/yy-ee8c1335ad91.jpg new file mode 100644 index 0000000..600fff7 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-ee8c1335ad91.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-05a8df79f316.jpg b/public/teachers/yuan-yuan/images/yy-embedded-05a8df79f316.jpg new file mode 100644 index 0000000..4cf69ac Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-05a8df79f316.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-0c8cf9e9c7e8.jpg b/public/teachers/yuan-yuan/images/yy-embedded-0c8cf9e9c7e8.jpg new file mode 100644 index 0000000..49579f2 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-0c8cf9e9c7e8.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-627cd4095224.jpg b/public/teachers/yuan-yuan/images/yy-embedded-627cd4095224.jpg new file mode 100644 index 0000000..97e0875 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-627cd4095224.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-85e9f3312b0c.jpg b/public/teachers/yuan-yuan/images/yy-embedded-85e9f3312b0c.jpg new file mode 100644 index 0000000..51f8763 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-85e9f3312b0c.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-a9d187192a15.jpg b/public/teachers/yuan-yuan/images/yy-embedded-a9d187192a15.jpg new file mode 100644 index 0000000..46b09ef Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-a9d187192a15.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-ad3a28164581.jpg b/public/teachers/yuan-yuan/images/yy-embedded-ad3a28164581.jpg new file mode 100644 index 0000000..0a76ce6 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-ad3a28164581.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-embedded-d50ba19e3364.jpg b/public/teachers/yuan-yuan/images/yy-embedded-d50ba19e3364.jpg new file mode 100644 index 0000000..550fee0 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-embedded-d50ba19e3364.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-f2a8a6e54c20.jpg b/public/teachers/yuan-yuan/images/yy-f2a8a6e54c20.jpg new file mode 100644 index 0000000..8bbaafa Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-f2a8a6e54c20.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-f2bb9886623e.jpg b/public/teachers/yuan-yuan/images/yy-f2bb9886623e.jpg new file mode 100644 index 0000000..529e4b6 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-f2bb9886623e.jpg differ diff --git a/public/teachers/yuan-yuan/images/yy-fcf58ef3af77.jpg b/public/teachers/yuan-yuan/images/yy-fcf58ef3af77.jpg new file mode 100644 index 0000000..1db00a3 Binary files /dev/null and b/public/teachers/yuan-yuan/images/yy-fcf58ef3af77.jpg differ diff --git a/public/video/5_alpha channel.webm b/public/video/5_alpha channel.webm deleted file mode 100644 index 79c4ca1..0000000 Binary files a/public/video/5_alpha channel.webm and /dev/null differ diff --git a/public/word/【10月16日】工作室活动情况记录.docx b/public/word/activity/【10月16日】工作室活动情况记录.docx similarity index 100% rename from public/word/【10月16日】工作室活动情况记录.docx rename to public/word/activity/【10月16日】工作室活动情况记录.docx diff --git a/public/word/【10月18日】工作室活动情况记录.docx b/public/word/activity/【10月18日】工作室活动情况记录.docx similarity index 100% rename from public/word/【10月18日】工作室活动情况记录.docx rename to public/word/activity/【10月18日】工作室活动情况记录.docx diff --git a/public/word/【10月8日】工作室活动情况记录.docx b/public/word/activity/【10月8日】工作室活动情况记录.docx similarity index 100% rename from public/word/【10月8日】工作室活动情况记录.docx rename to public/word/activity/【10月8日】工作室活动情况记录.docx diff --git a/public/word/【11月14日】工作室活动情况记录.docx b/public/word/activity/【11月14日】工作室活动情况记录.docx similarity index 100% rename from public/word/【11月14日】工作室活动情况记录.docx rename to public/word/activity/【11月14日】工作室活动情况记录.docx diff --git a/public/word/【11月15日】工作室活动情况记录.docx b/public/word/activity/【11月15日】工作室活动情况记录.docx similarity index 100% rename from public/word/【11月15日】工作室活动情况记录.docx rename to public/word/activity/【11月15日】工作室活动情况记录.docx diff --git a/public/word/【11月6日】工作室活动情况记录.docx b/public/word/activity/【11月6日】工作室活动情况记录.docx similarity index 100% rename from public/word/【11月6日】工作室活动情况记录.docx rename to public/word/activity/【11月6日】工作室活动情况记录.docx diff --git a/public/word/【7月2日】工作室活动情况记录.docx b/public/word/activity/【7月2日】工作室活动情况记录.docx similarity index 100% rename from public/word/【7月2日】工作室活动情况记录.docx rename to public/word/activity/【7月2日】工作室活动情况记录.docx diff --git a/public/word/与桂同心育新农,山海携手促共富.docx b/public/word/activity/与桂同心育新农,山海携手促共富.docx similarity index 100% rename from public/word/与桂同心育新农,山海携手促共富.docx rename to public/word/activity/与桂同心育新农,山海携手促共富.docx diff --git a/public/word/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx b/public/word/activity/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx similarity index 100% rename from public/word/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx rename to public/word/activity/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx diff --git a/public/word/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx b/public/word/activity/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx similarity index 100% rename from public/word/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx rename to public/word/activity/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx diff --git a/public/word/activity/匠心传承2025年11月3日.docx b/public/word/activity/匠心传承2025年11月3日.docx new file mode 100644 index 0000000..4873653 Binary files /dev/null and b/public/word/activity/匠心传承2025年11月3日.docx differ diff --git a/public/word/南湖师资助力乡村振兴新发展.docx b/public/word/activity/南湖师资助力乡村振兴新发展.docx similarity index 97% rename from public/word/南湖师资助力乡村振兴新发展.docx rename to public/word/activity/南湖师资助力乡村振兴新发展.docx index a7dc815..fde263b 100644 Binary files a/public/word/南湖师资助力乡村振兴新发展.docx and b/public/word/activity/南湖师资助力乡村振兴新发展.docx differ diff --git a/public/word/activity/奋勇争先2025年3月23日.docx b/public/word/activity/奋勇争先2025年3月23日.docx new file mode 100644 index 0000000..5e1d7a3 Binary files /dev/null and b/public/word/activity/奋勇争先2025年3月23日.docx differ diff --git a/public/word/activity/慧商旅系部网络营销与直播电商教研室.docx b/public/word/activity/慧商旅系部网络营销与直播电商教研室.docx new file mode 100644 index 0000000..dc9509a Binary files /dev/null and b/public/word/activity/慧商旅系部网络营销与直播电商教研室.docx differ diff --git a/public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx b/public/word/activity/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx similarity index 98% rename from public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx rename to public/word/activity/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx index 4330190..f313949 100644 Binary files a/public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx and b/public/word/activity/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx differ diff --git a/public/word/activity/非遗侗绣11月05日.docx b/public/word/activity/非遗侗绣11月05日.docx new file mode 100644 index 0000000..7ddd9f0 Binary files /dev/null and b/public/word/activity/非遗侗绣11月05日.docx differ diff --git a/public/word/member-profile/2022-《上海市时尚消费品产业高质量发展行动计划(2022-2025年)》.docx b/public/word/member-profile/2022-《上海市时尚消费品产业高质量发展行动计划(2022-2025年)》.docx new file mode 100644 index 0000000..13f98b4 Binary files /dev/null and b/public/word/member-profile/2022-《上海市时尚消费品产业高质量发展行动计划(2022-2025年)》.docx differ diff --git a/public/word/member-profile/2022-《扩大内需战略规划纲要(2022-2035年)》.docx b/public/word/member-profile/2022-《扩大内需战略规划纲要(2022-2035年)》.docx new file mode 100644 index 0000000..c012f2a Binary files /dev/null and b/public/word/member-profile/2022-《扩大内需战略规划纲要(2022-2035年)》.docx differ diff --git a/public/word/member-profile/2023-推进国际邮轮经济高质量发展上海行动方案(2023—2025年).docx b/public/word/member-profile/2023-推进国际邮轮经济高质量发展上海行动方案(2023—2025年).docx new file mode 100644 index 0000000..d2f4bdc Binary files /dev/null and b/public/word/member-profile/2023-推进国际邮轮经济高质量发展上海行动方案(2023—2025年).docx differ diff --git a/public/word/member-profile/2023-虹口区邮轮经济高质量发展三年行动计划(2023—2025年).docx b/public/word/member-profile/2023-虹口区邮轮经济高质量发展三年行动计划(2023—2025年).docx new file mode 100644 index 0000000..da503ee Binary files /dev/null and b/public/word/member-profile/2023-虹口区邮轮经济高质量发展三年行动计划(2023—2025年).docx differ diff --git a/public/word/member-profile/2024-上海市推动数字贸易和服务贸易高质量发展的实施方案.docx b/public/word/member-profile/2024-上海市推动数字贸易和服务贸易高质量发展的实施方案.docx new file mode 100644 index 0000000..65e0119 Binary files /dev/null and b/public/word/member-profile/2024-上海市推动数字贸易和服务贸易高质量发展的实施方案.docx differ diff --git a/public/word/member-profile/2024-上海市进一步促进商旅文体展联动吸引扩大消费的若干措施.docx b/public/word/member-profile/2024-上海市进一步促进商旅文体展联动吸引扩大消费的若干措施.docx new file mode 100644 index 0000000..a30ad6e Binary files /dev/null and b/public/word/member-profile/2024-上海市进一步促进商旅文体展联动吸引扩大消费的若干措施.docx differ diff --git a/public/word/member-profile/2024-国务院关于促进服务消费高质量发展的意见.docx b/public/word/member-profile/2024-国务院关于促进服务消费高质量发展的意见.docx new file mode 100644 index 0000000..e171e85 Binary files /dev/null and b/public/word/member-profile/2024-国务院关于促进服务消费高质量发展的意见.docx differ diff --git a/public/word/member-profile/2025-《乡村全面振兴规划(2024—2027年)》.docx b/public/word/member-profile/2025-《乡村全面振兴规划(2024—2027年)》.docx new file mode 100644 index 0000000..59e9864 Binary files /dev/null and b/public/word/member-profile/2025-《乡村全面振兴规划(2024—2027年)》.docx differ diff --git a/public/word/member-profile/2025-《提振消费专项行动方案》.docx b/public/word/member-profile/2025-《提振消费专项行动方案》.docx new file mode 100644 index 0000000..2ffa8dd Binary files /dev/null and b/public/word/member-profile/2025-《提振消费专项行动方案》.docx differ diff --git a/public/word/member-profile/2025-上海市促进服务业创新发展若干措施.docx b/public/word/member-profile/2025-上海市促进服务业创新发展若干措施.docx new file mode 100644 index 0000000..8059715 Binary files /dev/null and b/public/word/member-profile/2025-上海市促进服务业创新发展若干措施.docx differ diff --git a/public/word/member-profile/2025-全面推动上海旅游业高质量发展三年行动计划(2025—2027年).docx b/public/word/member-profile/2025-全面推动上海旅游业高质量发展三年行动计划(2025—2027年).docx new file mode 100644 index 0000000..608d82c Binary files /dev/null and b/public/word/member-profile/2025-全面推动上海旅游业高质量发展三年行动计划(2025—2027年).docx differ diff --git a/public/word/member-profile/2025-关于支持国际消费中心城市培育建设的若干措施.docx b/public/word/member-profile/2025-关于支持国际消费中心城市培育建设的若干措施.docx new file mode 100644 index 0000000..47788ab Binary files /dev/null and b/public/word/member-profile/2025-关于支持国际消费中心城市培育建设的若干措施.docx differ diff --git a/public/word/~$同心育新农,山海携手促共富.docx b/public/word/~$同心育新农,山海携手促共富.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$同心育新农,山海携手促共富.docx and /dev/null differ diff --git a/public/word/~$师资助力乡村振兴新发展.docx b/public/word/~$师资助力乡村振兴新发展.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$师资助力乡村振兴新发展.docx and /dev/null differ diff --git a/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx b/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx and /dev/null differ diff --git a/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx b/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx and /dev/null differ diff --git a/scripts/restore-yuan-documents.py b/scripts/restore-yuan-documents.py new file mode 100644 index 0000000..35ad72a --- /dev/null +++ b/scripts/restore-yuan-documents.py @@ -0,0 +1,320 @@ +"""Restore reviewed DOCX layout and media without exposing excluded source data. + +Run with python3 -I and explicit --source / --project paths. Source files are +never modified. --check only validates the generated packages and references. +Old .doc files remain the existing clearly-labelled text conversions: this tool +never invokes an unapproved Office converter. No new third-party dependency is +needed beyond lxml (already installed alongside python-docx). +""" +import argparse +import copy +import hashlib +import io +import json +import posixpath +import re +import tempfile +import zipfile +from pathlib import Path + +from lxml import etree as ET + +W = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main' +R = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' +PKG = 'http://schemas.openxmlformats.org/package/2006/relationships' +NS = {'w': W, 'r': R} +# Explicitly reviewed media allowlists: unknown new images stop the import. +MEDIA = { + 'yy-e8aba6fc581d': {'image1.jpeg'}, + 'yy-d1ac14d56e79': {'image1.jpeg', 'image2.jpeg', 'image3.jpeg', 'image4.jpeg'}, + 'yy-1be8039474b0': {'image1.jpeg'}, + 'yy-46cd9da9d1c7': {'image1.jpeg'}, + 'yy-e44ee7185d30': {'image1.jpeg'}, + 'yy-c018fd1d6577': {f'image{i}.jpeg' for i in range(1, 6)}, + 'yy-4a9181c97fae': {'image1.png', 'image2.jpeg', 'image3.jpeg'}, + 'yy-4beac9bea263': {f'image{i}.jpeg' for i in range(1, 10)}, +} +EXCLUDE = { + 'yy-1be8039474b0': {'image1.jpeg': '专家手写签名,展示副本移除'}, + 'yy-46cd9da9d1c7': {'image1.jpeg': '专家手写签名,展示副本移除'}, + 'yy-4beac9bea263': { + f'image{i}.jpeg': '颁奖投屏可读学生姓名和班级,待提供脱敏图片' + for i in (4, 5, 6) + }, +} +# These events lacked any standalone photographs. Other restored photographs +# stay in their original document context rather than duplicating existing galleries. +GALLERY = { + 'yy-e44ee7185d30': {'image1.jpeg': '智慧康养人才培养改革方案教研现场'}, + 'yy-4beac9bea263': { + 'image1.jpeg': '护士节主题活动致辞', + 'image2.jpeg': '护士节主题活动舞台展示', + 'image3.jpeg': '护理服饰演绎与集体展示', + 'image7.jpeg': '护理学子宣誓仪式', + 'image8.jpeg': '护理传光授帽仪式', + 'image9.jpeg': '护士节主题活动集体合影', + }, +} +PATTERNS = [ + (re.compile(r'1982\s*年生[,,]?'), ''), + (re.compile(r'1999\.10[,,]?'), ''), + (re.compile(r'(? -
+
diff --git a/src/assets/images/components/overlay/关闭.png b/src/assets/images/components/overlay/关闭.png new file mode 100644 index 0000000..3f16bf2 Binary files /dev/null and b/src/assets/images/components/overlay/关闭.png differ diff --git a/src/assets/images/components/overlay/窗口.png b/src/assets/images/components/overlay/窗口.png new file mode 100644 index 0000000..f3a9508 Binary files /dev/null and b/src/assets/images/components/overlay/窗口.png differ diff --git a/src/assets/images/components/work.png b/src/assets/images/components/work.png new file mode 100644 index 0000000..28434f5 Binary files /dev/null and b/src/assets/images/components/work.png differ diff --git a/src/assets/images/content/activities/与桂同心.png b/src/assets/images/content/activities/与桂同心.png new file mode 100644 index 0000000..48bfab7 Binary files /dev/null and b/src/assets/images/content/activities/与桂同心.png differ diff --git a/src/assets/images/content/activities/产教融合.png b/src/assets/images/content/activities/产教融合.png new file mode 100644 index 0000000..9c7f221 Binary files /dev/null and b/src/assets/images/content/activities/产教融合.png differ diff --git a/src/assets/images/content/activities/助力乡村.png b/src/assets/images/content/activities/助力乡村.png new file mode 100644 index 0000000..2ad96f7 Binary files /dev/null and b/src/assets/images/content/activities/助力乡村.png differ diff --git a/src/assets/images/content/activities/匠心传承.png b/src/assets/images/content/activities/匠心传承.png new file mode 100644 index 0000000..5a3a510 Binary files /dev/null and b/src/assets/images/content/activities/匠心传承.png differ diff --git a/src/assets/images/content/activities/奋勇争先.png b/src/assets/images/content/activities/奋勇争先.png new file mode 100644 index 0000000..83f26ab Binary files /dev/null and b/src/assets/images/content/activities/奋勇争先.png differ diff --git a/src/assets/images/content/activities/政校携手.png b/src/assets/images/content/activities/政校携手.png new file mode 100644 index 0000000..7b2cad2 Binary files /dev/null and b/src/assets/images/content/activities/政校携手.png differ diff --git a/src/assets/images/content/activities/文旅短剧.png b/src/assets/images/content/activities/文旅短剧.png new file mode 100644 index 0000000..45efb4f Binary files /dev/null and b/src/assets/images/content/activities/文旅短剧.png differ diff --git a/src/assets/images/content/activities/非遗侗绣.png b/src/assets/images/content/activities/非遗侗绣.png new file mode 100644 index 0000000..89dcf67 Binary files /dev/null and b/src/assets/images/content/activities/非遗侗绣.png differ diff --git a/src/assets/images/content/activities/黄浦江.png b/src/assets/images/content/activities/黄浦江.png new file mode 100644 index 0000000..d09b585 Binary files /dev/null and b/src/assets/images/content/activities/黄浦江.png differ diff --git a/src/assets/images/content/member-style/个人成长按钮.png b/src/assets/images/content/member-style/个人成长按钮.png new file mode 100644 index 0000000..5f3d5ad Binary files /dev/null and b/src/assets/images/content/member-style/个人成长按钮.png differ diff --git a/src/assets/images/content/member-style/刁彬彬成长轨迹.png b/src/assets/images/content/member-style/刁彬彬成长轨迹.png new file mode 100644 index 0000000..7f23efb Binary files /dev/null and b/src/assets/images/content/member-style/刁彬彬成长轨迹.png differ diff --git a/src/assets/images/content/member-style/宋申成长轨迹.png b/src/assets/images/content/member-style/宋申成长轨迹.png new file mode 100644 index 0000000..df42fc0 Binary files /dev/null and b/src/assets/images/content/member-style/宋申成长轨迹.png differ diff --git a/src/assets/images/content/member-style/张随宜成长轨迹.png b/src/assets/images/content/member-style/张随宜成长轨迹.png new file mode 100644 index 0000000..7b6d945 Binary files /dev/null and b/src/assets/images/content/member-style/张随宜成长轨迹.png differ diff --git a/src/assets/images/content/member-style/杨楚瑶成长轨迹.png b/src/assets/images/content/member-style/杨楚瑶成长轨迹.png new file mode 100644 index 0000000..ab5b0b3 Binary files /dev/null and b/src/assets/images/content/member-style/杨楚瑶成长轨迹.png differ diff --git a/src/assets/images/content/member-style/林旭成长轨迹.png b/src/assets/images/content/member-style/林旭成长轨迹.png new file mode 100644 index 0000000..8832f3b Binary files /dev/null and b/src/assets/images/content/member-style/林旭成长轨迹.png differ diff --git a/src/assets/images/content/member-style/王修远成长轨迹.png b/src/assets/images/content/member-style/王修远成长轨迹.png new file mode 100644 index 0000000..d85185a Binary files /dev/null and b/src/assets/images/content/member-style/王修远成长轨迹.png differ diff --git a/src/assets/images/content/member-style/邹文俊成长轨迹.png b/src/assets/images/content/member-style/邹文俊成长轨迹.png new file mode 100644 index 0000000..49bff5e Binary files /dev/null and b/src/assets/images/content/member-style/邹文俊成长轨迹.png differ diff --git a/src/assets/images/content/member-style/长图文.png b/src/assets/images/content/member-style/长图文.png new file mode 100644 index 0000000..69527dd Binary files /dev/null and b/src/assets/images/content/member-style/长图文.png differ diff --git a/src/assets/images/content/member-style/高幸成成长轨迹.png b/src/assets/images/content/member-style/高幸成成长轨迹.png new file mode 100644 index 0000000..9b7f4ae Binary files /dev/null and b/src/assets/images/content/member-style/高幸成成长轨迹.png differ diff --git a/src/assets/images/content/pdf.png b/src/assets/images/content/pdf.png new file mode 100644 index 0000000..81ad277 Binary files /dev/null and b/src/assets/images/content/pdf.png differ diff --git a/src/assets/images/content/ppt.png b/src/assets/images/content/ppt.png new file mode 100644 index 0000000..6e8f074 Binary files /dev/null and b/src/assets/images/content/ppt.png differ diff --git a/src/assets/images/content/studio-info/合作伙伴.png b/src/assets/images/content/studio-info/合作伙伴.png new file mode 100644 index 0000000..402a8f5 Binary files /dev/null and b/src/assets/images/content/studio-info/合作伙伴.png differ diff --git a/src/assets/images/content/studio-info/奖状页.png b/src/assets/images/content/studio-info/奖状页.png new file mode 100644 index 0000000..db46ce4 Binary files /dev/null and b/src/assets/images/content/studio-info/奖状页.png differ diff --git a/src/assets/images/content/studio-info/工作室简介.png b/src/assets/images/content/studio-info/工作室简介.png new file mode 100644 index 0000000..37c1d58 Binary files /dev/null and b/src/assets/images/content/studio-info/工作室简介.png differ diff --git a/src/assets/images/content/studio-info/政策支持.png b/src/assets/images/content/studio-info/政策支持.png new file mode 100644 index 0000000..8a62dd8 Binary files /dev/null and b/src/assets/images/content/studio-info/政策支持.png differ diff --git a/src/assets/images/content/studio-info/荣誉.png b/src/assets/images/content/studio-info/荣誉.png new file mode 100644 index 0000000..e0e3628 Binary files /dev/null and b/src/assets/images/content/studio-info/荣誉.png differ diff --git a/src/assets/images/content/studio-info/资源支持.png b/src/assets/images/content/studio-info/资源支持.png new file mode 100644 index 0000000..0fbb8c5 Binary files /dev/null and b/src/assets/images/content/studio-info/资源支持.png differ diff --git a/src/assets/images/content/training/“南湖杯”学生技能大赛直播电商专业比赛培训.png b/src/assets/images/content/training/“南湖杯”学生技能大赛直播电商专业比赛培训.png new file mode 100644 index 0000000..8d920bf Binary files /dev/null and b/src/assets/images/content/training/“南湖杯”学生技能大赛直播电商专业比赛培训.png differ diff --git a/src/assets/images/content/training/“南湖杯”直播电商专业比赛复赛(学生赛、教师赛)培训.png b/src/assets/images/content/training/“南湖杯”直播电商专业比赛复赛(学生赛、教师赛)培训.png new file mode 100644 index 0000000..e2a83aa Binary files /dev/null and b/src/assets/images/content/training/“南湖杯”直播电商专业比赛复赛(学生赛、教师赛)培训.png differ diff --git a/src/assets/images/content/training/“南湖杯”直播销售教师赛项.png b/src/assets/images/content/training/“南湖杯”直播销售教师赛项.png new file mode 100644 index 0000000..813d52b Binary files /dev/null and b/src/assets/images/content/training/“南湖杯”直播销售教师赛项.png differ diff --git a/src/assets/images/content/training/个人发展规划及专业技能竞赛讨论.png b/src/assets/images/content/training/个人发展规划及专业技能竞赛讨论.png new file mode 100644 index 0000000..2e547a6 Binary files /dev/null and b/src/assets/images/content/training/个人发展规划及专业技能竞赛讨论.png differ diff --git a/src/assets/images/content/training/曹君名师工作室启动会.png b/src/assets/images/content/training/曹君名师工作室启动会.png new file mode 100644 index 0000000..fd4df43 Binary files /dev/null and b/src/assets/images/content/training/曹君名师工作室启动会.png differ diff --git a/src/assets/images/content/training/职业生涯规划讲座.png b/src/assets/images/content/training/职业生涯规划讲座.png new file mode 100644 index 0000000..6d35042 Binary files /dev/null and b/src/assets/images/content/training/职业生涯规划讲座.png differ diff --git a/src/assets/images/content/training/院级规划教材建设研讨会.png b/src/assets/images/content/training/院级规划教材建设研讨会.png new file mode 100644 index 0000000..3f10e03 Binary files /dev/null and b/src/assets/images/content/training/院级规划教材建设研讨会.png differ diff --git a/src/assets/images/content/word.png b/src/assets/images/content/word.png new file mode 100644 index 0000000..d5794f0 Binary files /dev/null and b/src/assets/images/content/word.png differ diff --git a/src/assets/images/content/学员反馈.png b/src/assets/images/content/学员反馈.png new file mode 100644 index 0000000..16a7da7 Binary files /dev/null and b/src/assets/images/content/学员反馈.png differ diff --git a/src/assets/images/content/工作室简介-亮.png b/src/assets/images/content/工作室简介-亮.png new file mode 100644 index 0000000..ccae580 Binary files /dev/null and b/src/assets/images/content/工作室简介-亮.png differ diff --git a/src/assets/images/content/工作室简介-暗.png b/src/assets/images/content/工作室简介-暗.png new file mode 100644 index 0000000..36ea6df Binary files /dev/null and b/src/assets/images/content/工作室简介-暗.png differ diff --git a/src/assets/images/content/工作室简介.png b/src/assets/images/content/工作室简介.png new file mode 100644 index 0000000..2246761 Binary files /dev/null and b/src/assets/images/content/工作室简介.png differ diff --git a/src/assets/images/content/成员风采-亮.png b/src/assets/images/content/成员风采-亮.png new file mode 100644 index 0000000..13893fa Binary files /dev/null and b/src/assets/images/content/成员风采-亮.png differ diff --git a/src/assets/images/content/成员风采-暗.png b/src/assets/images/content/成员风采-暗.png new file mode 100644 index 0000000..c223f01 Binary files /dev/null and b/src/assets/images/content/成员风采-暗.png differ diff --git a/src/assets/images/content/成员风采.png b/src/assets/images/content/成员风采.png new file mode 100644 index 0000000..ab35ad2 Binary files /dev/null and b/src/assets/images/content/成员风采.png differ diff --git a/src/assets/images/content/曹君带教心得.png b/src/assets/images/content/曹君带教心得.png new file mode 100644 index 0000000..ef98141 Binary files /dev/null and b/src/assets/images/content/曹君带教心得.png differ diff --git a/src/assets/images/content/活动中心-亮.png b/src/assets/images/content/活动中心-亮.png new file mode 100644 index 0000000..733a9e7 Binary files /dev/null and b/src/assets/images/content/活动中心-亮.png differ diff --git a/src/assets/images/content/活动中心-暗.png b/src/assets/images/content/活动中心-暗.png new file mode 100644 index 0000000..3751505 Binary files /dev/null and b/src/assets/images/content/活动中心-暗.png differ diff --git a/src/assets/images/content/联系方式-亮.png b/src/assets/images/content/联系方式-亮.png new file mode 100644 index 0000000..ec2b342 Binary files /dev/null and b/src/assets/images/content/联系方式-亮.png differ diff --git a/src/assets/images/content/联系方式-暗.png b/src/assets/images/content/联系方式-暗.png new file mode 100644 index 0000000..daaecbb Binary files /dev/null and b/src/assets/images/content/联系方式-暗.png differ diff --git a/src/assets/images/content/联系方式.png b/src/assets/images/content/联系方式.png new file mode 100644 index 0000000..d11bff5 Binary files /dev/null and b/src/assets/images/content/联系方式.png differ diff --git a/src/assets/images/content/资源库-亮.png b/src/assets/images/content/资源库-亮.png new file mode 100644 index 0000000..18d6cde Binary files /dev/null and b/src/assets/images/content/资源库-亮.png differ diff --git a/src/assets/images/content/资源库-暗.png b/src/assets/images/content/资源库-暗.png new file mode 100644 index 0000000..d54ea77 Binary files /dev/null and b/src/assets/images/content/资源库-暗.png differ diff --git a/src/assets/images/home/进入页.png b/src/assets/images/home/进入页.png index 3a56706..41c81f2 100644 Binary files a/src/assets/images/home/进入页.png and b/src/assets/images/home/进入页.png differ diff --git a/src/assets/images/menu/内页居中标题.png b/src/assets/images/menu/内页居中标题.png index ea8d34e..b3342c9 100644 Binary files a/src/assets/images/menu/内页居中标题.png and b/src/assets/images/menu/内页居中标题.png differ diff --git a/src/assets/images/menu/名师工作室.png b/src/assets/images/menu/名师工作室.png new file mode 100644 index 0000000..62211aa Binary files /dev/null and b/src/assets/images/menu/名师工作室.png differ diff --git a/src/assets/images/menu/学科高地.png b/src/assets/images/menu/学科高地.png new file mode 100644 index 0000000..f124ad2 Binary files /dev/null and b/src/assets/images/menu/学科高地.png differ diff --git a/src/assets/images/menu/学科高地装饰.png b/src/assets/images/menu/学科高地装饰.png new file mode 100644 index 0000000..042ebd7 Binary files /dev/null and b/src/assets/images/menu/学科高地装饰.png differ diff --git a/src/assets/images/menu/首页-名字底板(缩小版).png b/src/assets/images/menu/首页-名字底板(缩小版).png new file mode 100644 index 0000000..c68b90d Binary files /dev/null and b/src/assets/images/menu/首页-名字底板(缩小版).png differ diff --git a/src/assets/images/publicity/了解工作室.png b/src/assets/images/publicity/了解工作室.png new file mode 100644 index 0000000..2c7342e Binary files /dev/null and b/src/assets/images/publicity/了解工作室.png differ diff --git a/src/assets/images/publicity/底图.png b/src/assets/images/publicity/底图.png new file mode 100644 index 0000000..63ecf83 Binary files /dev/null and b/src/assets/images/publicity/底图.png differ diff --git a/src/assets/images/publicity/查看活动.png b/src/assets/images/publicity/查看活动.png new file mode 100644 index 0000000..1f04566 Binary files /dev/null and b/src/assets/images/publicity/查看活动.png differ diff --git a/src/assets/images/publicity/目前图片.png b/src/assets/images/publicity/目前图片.png new file mode 100644 index 0000000..c4bddfa Binary files /dev/null and b/src/assets/images/publicity/目前图片.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-1.png b/src/assets/images/teachers/cao-jun/certificates/award-1.png new file mode 100644 index 0000000..4201c92 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-1.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-10.png b/src/assets/images/teachers/cao-jun/certificates/award-10.png new file mode 100644 index 0000000..d7c960e Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-10.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-11.png b/src/assets/images/teachers/cao-jun/certificates/award-11.png new file mode 100644 index 0000000..48a327d Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-11.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-2.png b/src/assets/images/teachers/cao-jun/certificates/award-2.png new file mode 100644 index 0000000..0d0839c Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-2.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-3.png b/src/assets/images/teachers/cao-jun/certificates/award-3.png new file mode 100644 index 0000000..2e3b8ac Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-3.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-4.png b/src/assets/images/teachers/cao-jun/certificates/award-4.png new file mode 100644 index 0000000..99619a5 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-4.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-5.png b/src/assets/images/teachers/cao-jun/certificates/award-5.png new file mode 100644 index 0000000..7f750d9 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-5.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-6.png b/src/assets/images/teachers/cao-jun/certificates/award-6.png new file mode 100644 index 0000000..acdc6fb Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-6.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-7.png b/src/assets/images/teachers/cao-jun/certificates/award-7.png new file mode 100644 index 0000000..792e244 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-7.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-8.png b/src/assets/images/teachers/cao-jun/certificates/award-8.png new file mode 100644 index 0000000..34413a6 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-8.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/award-9.png b/src/assets/images/teachers/cao-jun/certificates/award-9.png new file mode 100644 index 0000000..529be70 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/award-9.png differ diff --git a/src/assets/images/teachers/cao-jun/certificates/team.png b/src/assets/images/teachers/cao-jun/certificates/team.png new file mode 100644 index 0000000..6afb46c Binary files /dev/null and b/src/assets/images/teachers/cao-jun/certificates/team.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头1.png b/src/assets/images/teachers/cao-jun/experts/小头1.png new file mode 100644 index 0000000..cedd0f5 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头1.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头2.png b/src/assets/images/teachers/cao-jun/experts/小头2.png new file mode 100644 index 0000000..759ac20 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头2.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头3.png b/src/assets/images/teachers/cao-jun/experts/小头3.png new file mode 100644 index 0000000..578d502 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头3.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头4.png b/src/assets/images/teachers/cao-jun/experts/小头4.png new file mode 100644 index 0000000..43e6b84 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头4.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头5.png b/src/assets/images/teachers/cao-jun/experts/小头5.png new file mode 100644 index 0000000..78fef92 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头5.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头6.png b/src/assets/images/teachers/cao-jun/experts/小头6.png new file mode 100644 index 0000000..03e10de Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头6.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头7.png b/src/assets/images/teachers/cao-jun/experts/小头7.png new file mode 100644 index 0000000..77b307c Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头7.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头8.png b/src/assets/images/teachers/cao-jun/experts/小头8.png new file mode 100644 index 0000000..1e00e8a Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头8.png differ diff --git a/src/assets/images/teachers/cao-jun/experts/小头9.png b/src/assets/images/teachers/cao-jun/experts/小头9.png new file mode 100644 index 0000000..f4e8368 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/experts/小头9.png differ diff --git a/src/assets/images/teachers/cao-jun/members/刁彬彬-card.png b/src/assets/images/teachers/cao-jun/members/刁彬彬-card.png new file mode 100644 index 0000000..831a55a Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/刁彬彬-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/刁彬彬-profile.png b/src/assets/images/teachers/cao-jun/members/刁彬彬-profile.png new file mode 100644 index 0000000..669036c Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/刁彬彬-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/宋申-card.png b/src/assets/images/teachers/cao-jun/members/宋申-card.png new file mode 100644 index 0000000..4f32f4a Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/宋申-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/宋申-profile.png b/src/assets/images/teachers/cao-jun/members/宋申-profile.png new file mode 100644 index 0000000..5b22886 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/宋申-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/张随宜-card.png b/src/assets/images/teachers/cao-jun/members/张随宜-card.png new file mode 100644 index 0000000..ad93d4e Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/张随宜-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/张随宜-profile.png b/src/assets/images/teachers/cao-jun/members/张随宜-profile.png new file mode 100644 index 0000000..8dab566 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/张随宜-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/杨楚瑶-card.png b/src/assets/images/teachers/cao-jun/members/杨楚瑶-card.png new file mode 100644 index 0000000..ce46af4 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/杨楚瑶-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/杨楚瑶-profile.png b/src/assets/images/teachers/cao-jun/members/杨楚瑶-profile.png new file mode 100644 index 0000000..212a09b Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/杨楚瑶-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/林旭-card.png b/src/assets/images/teachers/cao-jun/members/林旭-card.png new file mode 100644 index 0000000..9940dd5 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/林旭-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/林旭-profile.png b/src/assets/images/teachers/cao-jun/members/林旭-profile.png new file mode 100644 index 0000000..e956ab8 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/林旭-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/王修远-card.png b/src/assets/images/teachers/cao-jun/members/王修远-card.png new file mode 100644 index 0000000..52b7c6b Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/王修远-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/王修远-profile.png b/src/assets/images/teachers/cao-jun/members/王修远-profile.png new file mode 100644 index 0000000..b35f95f Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/王修远-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/邹文俊-card.png b/src/assets/images/teachers/cao-jun/members/邹文俊-card.png new file mode 100644 index 0000000..ffeb7b8 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/邹文俊-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/邹文俊-profile.png b/src/assets/images/teachers/cao-jun/members/邹文俊-profile.png new file mode 100644 index 0000000..b872c06 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/邹文俊-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/members/高幸成-card.png b/src/assets/images/teachers/cao-jun/members/高幸成-card.png new file mode 100644 index 0000000..b2341fa Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/高幸成-card.png differ diff --git a/src/assets/images/teachers/cao-jun/members/高幸成-profile.png b/src/assets/images/teachers/cao-jun/members/高幸成-profile.png new file mode 100644 index 0000000..8d6b03d Binary files /dev/null and b/src/assets/images/teachers/cao-jun/members/高幸成-profile.png differ diff --git a/src/assets/images/teachers/cao-jun/menu-avatar.png b/src/assets/images/teachers/cao-jun/menu-avatar.png new file mode 100644 index 0000000..af8c3b0 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/menu-avatar.png differ diff --git a/src/assets/images/teachers/cao-jun/profile-portrait.png b/src/assets/images/teachers/cao-jun/profile-portrait.png new file mode 100644 index 0000000..2278c37 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/profile-portrait.png differ diff --git a/src/assets/images/teachers/cao-jun/studio-title.png b/src/assets/images/teachers/cao-jun/studio-title.png new file mode 100644 index 0000000..38d5905 Binary files /dev/null and b/src/assets/images/teachers/cao-jun/studio-title.png differ diff --git a/src/assets/images/teachers/gong-dan/digital-avatar.png b/src/assets/images/teachers/gong-dan/digital-avatar.png new file mode 100644 index 0000000..324f7ad Binary files /dev/null and b/src/assets/images/teachers/gong-dan/digital-avatar.png differ diff --git a/src/assets/images/teachers/gong-dan/menu-avatar.png b/src/assets/images/teachers/gong-dan/menu-avatar.png new file mode 100644 index 0000000..fc58a92 Binary files /dev/null and b/src/assets/images/teachers/gong-dan/menu-avatar.png differ diff --git a/src/assets/images/teachers/gong-dan/studio-title.png b/src/assets/images/teachers/gong-dan/studio-title.png new file mode 100644 index 0000000..8c9c427 Binary files /dev/null and b/src/assets/images/teachers/gong-dan/studio-title.png differ diff --git a/src/assets/images/teachers/ling-jia-wen/digital-avatar.png b/src/assets/images/teachers/ling-jia-wen/digital-avatar.png new file mode 100644 index 0000000..882d086 Binary files /dev/null and b/src/assets/images/teachers/ling-jia-wen/digital-avatar.png differ diff --git a/src/assets/images/teachers/ling-jia-wen/menu-avatar.png b/src/assets/images/teachers/ling-jia-wen/menu-avatar.png new file mode 100644 index 0000000..9a83fcb Binary files /dev/null and b/src/assets/images/teachers/ling-jia-wen/menu-avatar.png differ diff --git a/src/assets/images/teachers/ling-jia-wen/studio-title.png b/src/assets/images/teachers/ling-jia-wen/studio-title.png new file mode 100644 index 0000000..3ca4ea7 Binary files /dev/null and b/src/assets/images/teachers/ling-jia-wen/studio-title.png differ diff --git a/src/assets/images/teachers/ni-jun/digital-avatar.png b/src/assets/images/teachers/ni-jun/digital-avatar.png new file mode 100644 index 0000000..4ef8b15 Binary files /dev/null and b/src/assets/images/teachers/ni-jun/digital-avatar.png differ diff --git a/src/assets/images/teachers/ni-jun/menu-avatar.png b/src/assets/images/teachers/ni-jun/menu-avatar.png new file mode 100644 index 0000000..5ff4bb0 Binary files /dev/null and b/src/assets/images/teachers/ni-jun/menu-avatar.png differ diff --git a/src/assets/images/teachers/ni-jun/studio-title.png b/src/assets/images/teachers/ni-jun/studio-title.png new file mode 100644 index 0000000..72023e3 Binary files /dev/null and b/src/assets/images/teachers/ni-jun/studio-title.png differ diff --git a/src/assets/images/teachers/shared/college-brand.png b/src/assets/images/teachers/shared/college-brand.png new file mode 100644 index 0000000..1e5b996 Binary files /dev/null and b/src/assets/images/teachers/shared/college-brand.png differ diff --git a/src/assets/images/teachers/shared/core-heading.png b/src/assets/images/teachers/shared/core-heading.png new file mode 100644 index 0000000..a77e3bb Binary files /dev/null and b/src/assets/images/teachers/shared/core-heading.png differ diff --git a/src/assets/images/teachers/shared/honors-decoration.png b/src/assets/images/teachers/shared/honors-decoration.png new file mode 100644 index 0000000..cbf0c30 Binary files /dev/null and b/src/assets/images/teachers/shared/honors-decoration.png differ diff --git a/src/assets/images/teachers/shared/honors-panel.png b/src/assets/images/teachers/shared/honors-panel.png new file mode 100644 index 0000000..41cb44e Binary files /dev/null and b/src/assets/images/teachers/shared/honors-panel.png differ diff --git a/src/assets/images/teachers/shared/icons/honor.png b/src/assets/images/teachers/shared/icons/honor.png new file mode 100644 index 0000000..5a8e907 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/honor.png differ diff --git a/src/assets/images/teachers/shared/icons/partners.png b/src/assets/images/teachers/shared/icons/partners.png new file mode 100644 index 0000000..fd2a5e4 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/partners.png differ diff --git a/src/assets/images/teachers/shared/icons/policy.png b/src/assets/images/teachers/shared/icons/policy.png new file mode 100644 index 0000000..0d419c3 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/policy.png differ diff --git a/src/assets/images/teachers/shared/icons/research-glyph.png b/src/assets/images/teachers/shared/icons/research-glyph.png new file mode 100644 index 0000000..85c3142 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/research-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/research-reference-glyph.png b/src/assets/images/teachers/shared/icons/research-reference-glyph.png new file mode 100644 index 0000000..cfe2fd7 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/research-reference-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/research.png b/src/assets/images/teachers/shared/icons/research.png new file mode 100644 index 0000000..a58dad9 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/research.png differ diff --git a/src/assets/images/teachers/shared/icons/resource.png b/src/assets/images/teachers/shared/icons/resource.png new file mode 100644 index 0000000..fc96fc5 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/resource.png differ diff --git a/src/assets/images/teachers/shared/icons/rural-glyph.png b/src/assets/images/teachers/shared/icons/rural-glyph.png new file mode 100644 index 0000000..6a8ede8 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/rural-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/rural-reference-glyph.png b/src/assets/images/teachers/shared/icons/rural-reference-glyph.png new file mode 100644 index 0000000..9751240 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/rural-reference-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/rural.png b/src/assets/images/teachers/shared/icons/rural.png new file mode 100644 index 0000000..73e09b8 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/rural.png differ diff --git a/src/assets/images/teachers/shared/icons/service-glyph.png b/src/assets/images/teachers/shared/icons/service-glyph.png new file mode 100644 index 0000000..a3ee85e Binary files /dev/null and b/src/assets/images/teachers/shared/icons/service-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/service-reference-glyph.png b/src/assets/images/teachers/shared/icons/service-reference-glyph.png new file mode 100644 index 0000000..448ddfd Binary files /dev/null and b/src/assets/images/teachers/shared/icons/service-reference-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/service.png b/src/assets/images/teachers/shared/icons/service.png new file mode 100644 index 0000000..4f41459 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/service.png differ diff --git a/src/assets/images/teachers/shared/icons/talent-glyph.png b/src/assets/images/teachers/shared/icons/talent-glyph.png new file mode 100644 index 0000000..d9e84c6 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/talent-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/talent-reference-glyph.png b/src/assets/images/teachers/shared/icons/talent-reference-glyph.png new file mode 100644 index 0000000..c348727 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/talent-reference-glyph.png differ diff --git a/src/assets/images/teachers/shared/icons/talent.png b/src/assets/images/teachers/shared/icons/talent.png new file mode 100644 index 0000000..1aa6a44 Binary files /dev/null and b/src/assets/images/teachers/shared/icons/talent.png differ diff --git a/src/assets/images/teachers/shared/interior-background.png b/src/assets/images/teachers/shared/interior-background.png new file mode 100644 index 0000000..46b708f Binary files /dev/null and b/src/assets/images/teachers/shared/interior-background.png differ diff --git a/src/assets/images/teachers/shared/leader-heading.png b/src/assets/images/teachers/shared/leader-heading.png new file mode 100644 index 0000000..4f0d52e Binary files /dev/null and b/src/assets/images/teachers/shared/leader-heading.png differ diff --git a/src/assets/images/teachers/shared/nameplate.png b/src/assets/images/teachers/shared/nameplate.png new file mode 100644 index 0000000..07b9e47 Binary files /dev/null and b/src/assets/images/teachers/shared/nameplate.png differ diff --git a/src/assets/images/teachers/shared/positioning-panel.png b/src/assets/images/teachers/shared/positioning-panel.png new file mode 100644 index 0000000..d06cc8f Binary files /dev/null and b/src/assets/images/teachers/shared/positioning-panel.png differ diff --git a/src/assets/images/teachers/xia-fan-lin/digital-avatar.png b/src/assets/images/teachers/xia-fan-lin/digital-avatar.png new file mode 100644 index 0000000..744ca87 Binary files /dev/null and b/src/assets/images/teachers/xia-fan-lin/digital-avatar.png differ diff --git a/src/assets/images/teachers/xia-fan-lin/menu-avatar.png b/src/assets/images/teachers/xia-fan-lin/menu-avatar.png new file mode 100644 index 0000000..f04f54f Binary files /dev/null and b/src/assets/images/teachers/xia-fan-lin/menu-avatar.png differ diff --git a/src/assets/images/teachers/xia-fan-lin/studio-title.png b/src/assets/images/teachers/xia-fan-lin/studio-title.png new file mode 100644 index 0000000..7c6b2c7 Binary files /dev/null and b/src/assets/images/teachers/xia-fan-lin/studio-title.png differ diff --git a/src/assets/images/teachers/xun-gui-lian/digital-avatar.png b/src/assets/images/teachers/xun-gui-lian/digital-avatar.png new file mode 100644 index 0000000..e1e090b Binary files /dev/null and b/src/assets/images/teachers/xun-gui-lian/digital-avatar.png differ diff --git a/src/assets/images/teachers/xun-gui-lian/menu-avatar.png b/src/assets/images/teachers/xun-gui-lian/menu-avatar.png new file mode 100644 index 0000000..0668a77 Binary files /dev/null and b/src/assets/images/teachers/xun-gui-lian/menu-avatar.png differ diff --git a/src/assets/images/teachers/xun-gui-lian/studio-title.png b/src/assets/images/teachers/xun-gui-lian/studio-title.png new file mode 100644 index 0000000..1c89d50 Binary files /dev/null and b/src/assets/images/teachers/xun-gui-lian/studio-title.png differ diff --git a/src/assets/images/teachers/yuan-yuan/digital-avatar.png b/src/assets/images/teachers/yuan-yuan/digital-avatar.png new file mode 100644 index 0000000..3d720ef Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/digital-avatar.png differ diff --git a/src/assets/images/teachers/yuan-yuan/menu-avatar.png b/src/assets/images/teachers/yuan-yuan/menu-avatar.png new file mode 100644 index 0000000..24156bb Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/menu-avatar.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/严佳丽-团队.png b/src/assets/images/teachers/yuan-yuan/slices/严佳丽-团队.png new file mode 100644 index 0000000..8e35ac4 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/严佳丽-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/主页配图.png b/src/assets/images/teachers/yuan-yuan/slices/主页配图.png new file mode 100644 index 0000000..e7c192e Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/主页配图.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/医教协同图标.png b/src/assets/images/teachers/yuan-yuan/slices/医教协同图标.png new file mode 100644 index 0000000..8f8e08e Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/医教协同图标.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-严佳丽.png b/src/assets/images/teachers/yuan-yuan/slices/小头-严佳丽.png new file mode 100644 index 0000000..071daaf Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-严佳丽.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-尹蕾.png b/src/assets/images/teachers/yuan-yuan/slices/小头-尹蕾.png new file mode 100644 index 0000000..1bc2bae Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-尹蕾.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-徐菁.png b/src/assets/images/teachers/yuan-yuan/slices/小头-徐菁.png new file mode 100644 index 0000000..a5a3340 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-徐菁.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-杨玉亭.png b/src/assets/images/teachers/yuan-yuan/slices/小头-杨玉亭.png new file mode 100644 index 0000000..9325d1d Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-杨玉亭.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-汤诗恒.png b/src/assets/images/teachers/yuan-yuan/slices/小头-汤诗恒.png new file mode 100644 index 0000000..a4f51f2 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-汤诗恒.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头-黄言.png b/src/assets/images/teachers/yuan-yuan/slices/小头-黄言.png new file mode 100644 index 0000000..0a2629c Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头-黄言.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/小头1.png b/src/assets/images/teachers/yuan-yuan/slices/小头1.png new file mode 100644 index 0000000..2c0db2a Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/小头1.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/尹蕾-团队.png b/src/assets/images/teachers/yuan-yuan/slices/尹蕾-团队.png new file mode 100644 index 0000000..54711b5 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/尹蕾-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/徐菁-团队.png b/src/assets/images/teachers/yuan-yuan/slices/徐菁-团队.png new file mode 100644 index 0000000..243ebfc Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/徐菁-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/杨玉亭-团队.png b/src/assets/images/teachers/yuan-yuan/slices/杨玉亭-团队.png new file mode 100644 index 0000000..ece3caa Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/杨玉亭-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/汤诗恒-团队.png b/src/assets/images/teachers/yuan-yuan/slices/汤诗恒-团队.png new file mode 100644 index 0000000..28150f1 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/汤诗恒-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/袁媛内页图像.png b/src/assets/images/teachers/yuan-yuan/slices/袁媛内页图像.png new file mode 100644 index 0000000..660f41c Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/袁媛内页图像.png differ diff --git a/src/assets/images/teachers/yuan-yuan/slices/黄言-团队.png b/src/assets/images/teachers/yuan-yuan/slices/黄言-团队.png new file mode 100644 index 0000000..5801983 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/slices/黄言-团队.png differ diff --git a/src/assets/images/teachers/yuan-yuan/studio-title.png b/src/assets/images/teachers/yuan-yuan/studio-title.png new file mode 100644 index 0000000..3f37d91 Binary files /dev/null and b/src/assets/images/teachers/yuan-yuan/studio-title.png differ diff --git a/src/assets/images/teachers/zhu-jian-liu/digital-avatar.png b/src/assets/images/teachers/zhu-jian-liu/digital-avatar.png new file mode 100644 index 0000000..069f097 Binary files /dev/null and b/src/assets/images/teachers/zhu-jian-liu/digital-avatar.png differ diff --git a/src/assets/images/teachers/zhu-jian-liu/menu-avatar.png b/src/assets/images/teachers/zhu-jian-liu/menu-avatar.png new file mode 100644 index 0000000..419dace Binary files /dev/null and b/src/assets/images/teachers/zhu-jian-liu/menu-avatar.png differ diff --git a/src/assets/images/teachers/zhu-jian-liu/studio-title.png b/src/assets/images/teachers/zhu-jian-liu/studio-title.png new file mode 100644 index 0000000..45e078d Binary files /dev/null and b/src/assets/images/teachers/zhu-jian-liu/studio-title.png differ diff --git a/src/components/ActivityDirectoryNav.tsx b/src/components/ActivityDirectoryNav.tsx new file mode 100644 index 0000000..2975efb --- /dev/null +++ b/src/components/ActivityDirectoryNav.tsx @@ -0,0 +1,90 @@ +import { useEffect, useId, useState } from "react"; +import type { ActivityDirectory } from "@/utils/activityDirectory"; + +function selectedAncestors(directories: ActivityDirectory[], selectedId: string): string[] { + for (const directory of directories) { + if (directory.id === selectedId) return []; + const ancestors = selectedAncestors(directory.children, selectedId); + if (directory.children.some(child => child.id === selectedId) || ancestors.length) { + return [directory.id, ...ancestors]; + } + } + return []; +} + +export function ActivityDirectoryNav({ directories, selectedId, onSelect }: { + directories: ActivityDirectory[]; + selectedId: string; + onSelect: (id: string) => void; +}) { + const instanceId = useId(); + const [expandedIds, setExpandedIds] = useState>( + () => new Set(selectedAncestors(directories, selectedId)) + ); + + useEffect(() => { + setExpandedIds(previous => { + const ancestors = selectedAncestors(directories, selectedId); + if (ancestors.every(id => previous.has(id))) return previous; + return new Set([...previous, ...ancestors]); + }); + }, [directories, selectedId]); + + const toggleDirectory = (id: string) => { + setExpandedIds(previous => { + const next = new Set(previous); + if (next.has(id)) next.delete(id); + else next.add(id); + return next; + }); + }; + + const renderDirectories = (nodes: ActivityDirectory[], depth = 0) => ( + + ); + + return ( + + ); +} diff --git a/src/components/AttachmentViewer.tsx b/src/components/AttachmentViewer.tsx new file mode 100644 index 0000000..0cfdcfd --- /dev/null +++ b/src/components/AttachmentViewer.tsx @@ -0,0 +1,54 @@ +import { lazy, Suspense, useState } from "react"; +import { WordViewer } from "./WordViewer"; +import { WordViewerModal } from "./WordViewerModal"; +import { ResourceViewerModal } from "./ResourceViewerModal"; +import VideoPlayer from "./VideoPlayer"; +import type { StudioAttachment } from "@/data/attachments"; +import { getPublicPath } from "@/utils"; + +const PresentationViewer = lazy(() => import("./PresentationViewer")); +const SpreadsheetViewer = lazy(() => import("./SpreadsheetViewer")); + +export function AttachmentViewer({ attachment, onClose }: { + attachment: StudioAttachment | null; + onClose: () => void; +}) { + if (!attachment) return null; + if (attachment.format.toLowerCase() === "docx") { + return ; + } + return + + ; +} + +export function AttachmentPreview({ attachment }: { attachment: StudioAttachment }) { + const [failed, setFailed] = useState(false); + const url = getPublicPath(attachment.path); + const format = attachment.format.toLowerCase(); + + if (format === "docx") return ; + if (format === "pptx" || format === "xlsx") return 正在加载预览组件…

}> + {format === "pptx" ? : } +
; + + return
+
+ {failed ?

预览失败,请下载后查看。

+ : format === "pdf" ?