加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.html 112.03 KB
一键复制 编辑 原始数据 按行查看 历史
yuejunzhang 提交于 2023-08-29 14:40 . Update index.html
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="简洁而强大的ChatGPT应用">
<meta name="theme-color" content="#edeff2">
<meta name="apple-mobile-web-app-status-bar-style" content="#edeff2">
<meta name="msapplication-TileColor" content="#edeff2">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="msapplication-TileImage" content="icon.png">
<link rel="manifest" crossorigin="use-credentials" href="manifest.json">
<link rel="icon" type="image/png" href="icon.png">
<link rel="apple-touch-icon" href="icon.png" sizes="144x144">
<title>ChatGPT</title>
<style>
.overlay {
position: absolute; /* 绝对定位,相对于父div */
top: 0;
left: 0;
width: 100%;
height: 100px;
background-color: rgba(255, 255, 255, 0.5); /* 设置遮罩的半透明颜色,这里使用rgba表示颜色和透明度 */
z-index: 1; /* 确保遮罩在子元素上方 */
}
.requestBody,
.response .markdown-body {
/* flex: 1;
width: auto; */
max-width: calc(100%-88px);
}
.bottom_wrapper {
max-width: 100%;
}
* {
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji" !important;
}
html {
width: 100%;
height: 100%;
}
:root {
--background: #edeff2;
--chat-back: #fff;
--main-back: #f6f6f6;
--active-btn: #e0e0e0;
--lighter-active: #eaeaea;
--sel-btn: #d0d0d0;
--btn-color: #404040;
--text-color: #909090;
--chat-text-color: #24292f;
--requset-color: #c2c2c2;
--response-color: #f7f7f8;
--lighter-active-color: #e8e8e8;
--lighter-text-color: #555;
--svg-color: #808080;
--lighter-svg-color: #c0c0c0;
--code-color: #f0f0f0;
--black-color: #000;
}
[data-theme="dark"] {
--background: #1f1f1f;
--chat-back: #3c3c3c;
--main-back: #333;
--active-btn: #1f1f1f;
--lighter-active: #151515;
--sel-btn: #1e1e1e;
--btn-color: #bfbfbf;
--text-color: #8f8f8f;
--chat-text-color: #c9d1d9;
--requset-color: #4b4b4b;
--response-color: #2f2f2f;
--lighter-active-color: #171717;
--lighter-text-color: #aaa;
--svg-color: #7f7f7f;
--lighter-svg-color: #3f3f3f;
--code-color: #101010;
--black-color: #fff;
}
body {
background-color: var(--background);
width: 100%;
height: 100%;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
}
#custom-menu{
display: none;
position: absolute;
background-color: var(--main-back);
color: var(--chat-text-color);
border: 1px solid #ccc;
padding: 5px;
text-align: left;
z-index: 999;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
user-select: none;
max-width: 200px;
}
.chat_window {
position: absolute;
width: 100%;
max-width: 1188px;
height: 100%;
max-height: 888px;
border-radius: 8px;
background-color: var(--chat-back);
overflow: hidden;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
}
.overlay {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
background-color: rgba(0, 0, 0, .3);
z-index: 90;
cursor: pointer;
visibility: hidden;
opacity: 0;
-webkit-tap-highlight-color: transparent;
transition: all 250ms;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
@media screen and (max-width: 1188px) and (max-height: 888px) {
#toggleFull {
display: none;
}
}
@media screen and (min-width: 800px) {
.chat_window {
display: flex;
}
.mainContent {
width: calc(100% - 250px);
}
.nav {
position: relative;
margin-left: -250px;
transition: margin-left 250ms;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.show-nav .nav {
margin-left: 0;
}
#sysDialog {
max-width: 600px;
}
.sysContent {
display: flex;
}
.sysSwitch {
flex-shrink: 0;
width: 160px;
}
.sysSwitch>div {
padding-left: 6px;
}
.sysDetail {
margin-left: 12px;
margin-top: 5px;
}
.setNotNormalFlow {
width: calc(100% - 212px);
}
}
@media screen and (max-width: 800px) {
.chat_window {
display: block;
}
.mainContent {
width: 100%;
}
.nav {
position: absolute !important;
left: -250px;
transition: left 250ms;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.show-nav .nav {
left: 0;
box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 10px -5px, rgba(0, 0, 0, 0.14) 0px 16px 24px 2px, rgba(0, 0, 0, 0.12) 0px 6px 30px 5px;
}
.show-nav .overlay {
visibility: visible;
opacity: 1;
}
#sysDialog {
max-width: 400px;
}
.sysSwitch {
display: flex;
}
.sysSwitch>div {
width: 50%;
justify-content: center;
}
.sysDetail {
margin-top: 8px;
}
.setNotNormalFlow {
width: calc(100% - 40px);
}
}
.full_window {
max-width: none;
max-height: none;
}
.nav {
width: 250px;
height: 100%;
border-right: 1px solid var(--active-btn);
background-color: var(--main-back);
top: 0;
z-index: 99;
flex-shrink: 0;
display: flex;
flex-direction: column;
}
.mainContent {
height: 100%;
position: relative;
display: flex;
flex-direction: column;
flex: 1;
}
.top_menu {
background-color: var(--main-back);
width: 100%;
height: 50px;
padding: 5px 0;
}
.top_menu .toggler {
margin-left: 10px;
width: 40px;
height: 40px;
float: left;
padding: 5px 7px;
border-radius: 4px;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
.top_menu .toggler:hover {
background: var(--active-btn);
}
.top_menu .toggler .button {
width: 26px;
height: 4px;
border-radius: 4px;
position: absolute;
pointer-events: none;
}
.top_menu .toggler .button.close {
margin-top: 3px;
background-color: #99c959;
}
.top_menu .toggler .button.minimize {
margin-top: 13px;
background-color: #f8b26a;
}
.top_menu .toggler .button.maximize {
margin-top: 23px;
background-color: #e15b64;
}
.top_menu .title {
color: var(--text-color);
font-size: 20px;
height: 40px;
line-height: 40px;
position: relative;
pointer-events: none;
}
.title>span {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.messages {
position: relative;
flex: 1;
overflow-x: hidden;
overflow-y: auto;
font-size: 16px;
color: var(--chat-text-color);
text-align: center;
}
.messages::-webkit-scrollbar,
#chatlog .markdown-body>pre>code::-webkit-scrollbar,
#setDialog::-webkit-scrollbar,
.allList::-webkit-scrollbar,
.sysDetail::-webkit-scrollbar,
#apiSelect::-webkit-scrollbar {
width: 10px;
height: 10px;
}
.messages::-webkit-scrollbar-track,
#chatlog .markdown-body>pre>code::-webkit-scrollbar-track,
#setDialog::-webkit-scrollbar-track,
.allList::-webkit-scrollbar-track,
.sysDetail::-webkit-scrollbar-track,
#apiSelect::-webkit-scrollbar-track {
background-clip: padding-box;
background: transparent;
border: none;
}
.messages::-webkit-scrollbar-corner,
#chatlog .markdown-body>pre>code::-webkit-scrollbar-corner,
#setDialog::-webkit-scrollbar-corner,
.allList::-webkit-scrollbar-corner,
.sysDetail::-webkit-scrollbar-corner,
#apiSelect::-webkit-scrollbar-corner {
background-color: transparent;
}
.messages::-webkit-scrollbar-thumb,
#chatlog .markdown-body>pre>code::-webkit-scrollbar-thumb,
#setDialog::-webkit-scrollbar-thumb,
.allList::-webkit-scrollbar-thumb,
.sysDetail::-webkit-scrollbar-thumb,
#apiSelect::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.1);
background-clip: padding-box;
border: solid transparent;
border-radius: 10px;
}
.messages::-webkit-scrollbar-thumb:hover,
#chatlog .markdown-body>pre>code::-webkit-scrollbar-thumb:hover,
#setDialog::-webkit-scrollbar-thumb:hover,
.allList::-webkit-scrollbar-thumb:hover,
.sysDetail::-webkit-scrollbar-thumb:hover,
#apiSelect::-webkit-scrollbar-thumb:hover {
background-color: rgba(0, 0, 0, 0.4);
}
#chatlog {
word-wrap: break-word;
text-align: start;
}
.chatAvatar {
margin: 14px 5px 13px 5px;
width: 30px;
height: 30px;
flex-shrink: 0;
border-radius: 2px;
}
.response>.chatAvatar {
margin-top: 15px;
margin-bottom: 15px;
}
.response .gpt3Avatar {
background: #19c37d;
}
.response .gpt4Avatar {
background: #ab68ff;
}
.response .ClaudeAvatar {
background: #cea41b;
}
.chatAvatar>img {
display: block;
width: 100%;
height: 100%;
border-radius: 2px;
}
.chatAvatar>svg {
display: block;
margin-top: 4px;
margin-left: 4px;
}
#chatlog .request {
position: relative;
display: flex;
justify-content: flex-end;
}
.requestBody {
/* background: var(--requset-color); */
white-space: pre-wrap;
margin: 18px 0;
/* flex: 1; */
width: auto;
/* border-radius: 15px; */
}
#chatlog .response {
background: var(--response-color);
position: relative;
display: flex;
justify-content: flex-star;
/* border-radius: 15px; */
}
.response .markdown-body {
margin: 18px 0;
flex: 1;
background: var(--response-color) !important;
}
#chatlog .markdown-body>pre {
padding: 10px;
position: relative;
background: var(--code-color);
}
#chatlog .markdown-body>pre>code {
overflow-x: auto;
display: block;
}
.m-mdic-copy-wrapper {
position: absolute;
top: 5px;
right: 16px;
-webkit-user-select: none;
user-select: none;
}
.m-mdic-copy-wrapper span.u-mdic-copy-code_lang {
position: absolute;
top: 3px;
right: calc(100% + 4px);
font-family: system-ui;
font-size: 12px;
line-height: 18px;
color: #bbb;
}
.m-mdic-copy-wrapper div.u-mdic-copy-notify {
position: absolute;
top: 0;
right: 0;
padding: 3px 6px;
border: 0;
border-radius: 3px;
background: none;
font-family: system-ui;
font-size: 12px;
line-height: 18px;
color: var(--lighter-text-color);
outline: none;
right: 100%;
padding-right: 4px;
}
.m-mdic-copy-wrapper button.u-mdic-copy-btn {
position: relative;
top: 0;
right: 0;
padding: 3px 6px;
border: 0;
border-radius: 3px;
background: none;
font-family: system-ui;
font-size: 12px;
line-height: 18px;
color: #bbb;
outline: none;
cursor: pointer;
transition: color 250ms;
}
.m-mdic-copy-wrapper button.u-mdic-copy-btn:hover {
color: var(--lighter-text-color);
}
#stopChat {
display: none;
margin: 0 auto;
margin-top: 3px;
width: 80px;
height: 32px;
text-align: center;
line-height: 32px;
color: white;
background: #f8b26a;
cursor: pointer;
border-radius: 3px;
position: sticky;
bottom: 2px;
justify-content: center;
align-items: center;
}
#stopChat>svg {
margin-right: 8px;
}
#stopChat:hover {
background: #f0aa60;
}
.bottom_wrapper {
position: relative;
width: 100%;
padding: 10px 10px;
margin: 0 auto;
}
.bottom_wrapper .message_input_wrapper {
border: none;
width: calc(100% - 139px);
position: relative;
text-align: left;
}
.bottom_wrapper .message_input_wrapper .message_input_text {
border-radius: 4px;
border: none;
outline: none;
resize: none;
background-color: var(--main-back);
color: var(--chat-text-color);
height: 47px;
font-size: 16px;
max-height: 200px;
padding: 13px 0 13px 13px;
width: 100%;
display: block;
transition: background-color 250ms;
}
.bottom_wrapper .message_input_wrapper .message_input_text:focus {
background-color: var(--code-color);
}
.bottom_wrapper .message_input_wrapper .message_input_text::-webkit-scrollbar {
display: none;
width: 0;
height: 0;
}
#sendbutton {
width: 80px;
height: 47px;
font-size: 18px;
/* font-weight: bold; */
border-radius: 3px;
background-color: #b8da8b;
border: none;
padding: 0;
color: #fff;
cursor: pointer;
transition: all 250ms;
text-align: center;
float: right;
position: absolute;
right: 63px;
bottom: 10px;
cursor: not-allowed;
}
.activeSendBtn {
background-color: #99c959 !important;
cursor: pointer !important;
}
.activeSendBtn:hover {
background-color: #90c050 !important;
}
.clearConv {
position: absolute;
right: 10px;
bottom: 10px;
width: 47px;
height: 47px;
border-radius: 3px;
background: var(--text-color);
border: none;
color: #fff;
cursor: pointer;
}
.clearConv>svg {
margin: 0 auto;
}
.clearConv:hover {
background: var(--svg-color);
}
.clearConv svg:first-child {
display: none;
}
.clearConv svg:nth-child(2) {
display: block;
}
.closeConv {
background: var(--active-btn);
}
.closeConv:hover {
background: var(--lighter-active-color);
}
.closeConv svg:first-child {
display: block;
}
.closeConv svg:nth-child(2) {
display: none;
}
.loaded>span {
display: inline-block;
}
.loaded>svg {
display: none;
}
.loading {
background: var(--active-btn) !important;
}
.loading>span {
display: none;
}
.loading>svg {
display: block;
}
.switch-slide {
display: inline-block;
vertical-align: middle;
}
.switch-slide-label {
display: block;
width: 38px;
height: 18px;
background: var(--text-color);
border-radius: 30px;
cursor: pointer;
position: relative;
-webkit-transition: all 250ms;
transition: all 250ms;
}
.switch-slide-label:after {
content: "";
display: block;
width: 16px;
height: 16px;
border-radius: 100%;
background: #fff;
box-shadow: 0 1px 1px rgba(0, 0, 0, .1);
position: absolute;
left: 1px;
top: 1px;
-webkit-transform: translateZ(0);
transform: translateZ(0);
-webkit-transition: all 250ms;
transition: all 250ms;
}
.switch-slide input:checked+label {
background: #99c959;
-webkit-transition: all 250ms;
transition: all 250ms;
}
.switch-slide input:checked+label:after {
left: 21px;
}
.settings {
margin-right: 10px;
display: flex;
position: absolute;
right: 0;
top: 5px;
}
.setBtn {
margin-left: 2px;
cursor: pointer;
padding: 5px;
border: none;
background-color: transparent;
border-radius: 4px;
}
.setBtn>svg {
display: block;
color: var(--text-color);
}
.setBtn:hover {
background: var(--active-btn);
}
#setting {
right: 15px;
}
#toggleFull {
right: 56px;
}
#toggleLight *,
#toggleFull * {
pointer-events: none;
}
.showSetting {
background: var(--lighter-svg-color) !important;
}
#setDialog {
color: var(--btn-color);
position: absolute;
z-index: 2;
background: var(--main-back);
width: 320px;
right: 6px;
top: 46px;
overflow-y: auto;
max-height: calc(100% - 55px);
-webkit-user-select: none;
user-select: none;
border-radius: 5px;
padding: 8px 12px 8px 12px;
box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
}
#setDialog input {
width: 100%;
}
#setDialog .inlineTitle {
display: inline-block;
width: 88px;
line-height: 16px;
vertical-align: middle;
}
#convOption,
#speechOption,
#speechDetail,
#recOption {
margin-bottom: 6px;
}
#convOption>div,
#speechOption>div,
#speechDetail>div,
#recOption div {
margin-top: 7px;
}
#voiceRecSetting select,
#speechDetail select {
background: var(--chat-back);
color: var(--chat-text-color);
}
.inputTextClass {
outline: none;
border-radius: 2px;
margin-top: 3px;
height: 32px;
font-size: 15px;
padding-left: 6px;
background: var(--chat-back);
color: var(--chat-text-color);
border: none;
}
.areaTextClass {
width: 100%;
height: 80px;
display: block;
resize: none;
padding: 6px;
}
input[type="range"] {
-webkit-appearance: none;
appearance: none;
display: block;
margin: 4px 0 3px 0;
height: 8px;
background: var(--text-color);
border-radius: 5px;
background-image: linear-gradient(#99c959, #99c959);
background-size: 100% 100%;
background-repeat: no-repeat;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
height: 15px;
width: 15px;
border-radius: 50%;
background: #99c959;
cursor: ew-resize;
}
input[type=range]::-webkit-slider-runnable-track {
-webkit-appearance: none;
box-shadow: none;
border: none;
background: transparent;
}
.justSetLine {
display: flex;
justify-content: space-between;
}
.justSetBtn {
height: 32px;
border-radius: 3px;
line-height: 32px;
background: var(--lighter-active);
text-align: center;
padding: 0px 8px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.justSetBtn:hover {
background-color: var(--sel-btn);
}
.justSetBtn>svg {
margin-right: 3px;
}
.readyTestVoice>div:not(:first-child) {
display: none;
}
.pauseTestVoice>div:nth-child(1),
.pauseTestVoice>div:nth-child(3) {
display: none;
}
.resumeTestVoice>div:nth-child(1),
.resumeTestVoice>div:nth-child(2) {
display: none;
}
.presetSelect>div {
display: inline-block;
}
.presetSelect select {
outline: none;
border-radius: 3px;
width: 128px;
border-color: rgba(0, 0, 0, .3);
background: var(--chat-back);
color: var(--chat-text-color);
}
.selectDef {
display: flex;
justify-content: space-between;
font-size: 13px;
color: var(--text-color);
}
#preSetSpeech {
width: 100%;
outline: none;
height: 30px;
font-size: 14px;
margin-top: 5px;
border-radius: 3px;
border-color: rgba(0, 0, 0, .3);
}
.mdOption {
flex-shrink: 0;
position: absolute; /* 将元素从正常文档流中脱离 */
top: 100%; /* 将元素的顶部定位在容器的中间 */
left: 50%; /* 将元素的左边定位在容器的中间 */
transform: translate(-100%, -50%);
/* position: relative; */
width: 1px;
pointer-events: none;
z-index: 10;
}
.mdOption>div {
pointer-events: auto;
cursor: pointer;
}
.mdOption svg * {
pointer-events: none;
}
.refreshReq svg:not(:first-child) {
display: none;
}
.halfRefReq svg:not(:nth-child(2)) {
display: none;
}
.optionItems {
position: absolute;
bottom: -12px;
display: flex;
justify-content: space-between;
visibility: hidden;
z-index: 1;
color: var(--svg-color);
}
.optionItems:hover {
visibility: visible;
}
.request:hover .optionItems,
.request:hover .voiceCls,
.response:hover .optionItems,
.response:hover .voiceCls {
visibility: visible;
}
.optionItem {
border-radius: 10px;
height: 24px;
width: 32px;
border: 1px solid var(--active-btn);
background-color: var(--response-color);
display: flex !important;
justify-content: center;
align-items: center;
}
.optionItem * {
pointer-events: none;
}
.optionItem:hover {
background: var(--active-btn);
}
.voiceCls {
position: relative;
height: 100%;
visibility: hidden;
display: flex;
align-items: center;
}
.voiceCls>svg {
color: var(--lighter-svg-color);
display: block;
margin-left: 5px;
position: relative;
}
.voiceCls:hover>svg {
color: var(--svg-color);
}
.showVoiceCls,
.showVoiceCls .markdown-body {
background: var(--active-btn) !important;
}
.showVoiceCls .voiceCls {
visibility: visible !important;
}
.showEditReq {
position: sticky !important;
top: 0;
bottom: 0;
z-index: 1;
}
.showEditReq,
.showEditReq .markdown-body {
background: var(--active-btn) !important;
}
.readyVoice svg:not(:first-child) {
display: none;
}
.pauseVoice svg:not(:nth-child(2)) {
display: none;
}
.resumeVoice svg:not(:nth-child(3)) {
display: none;
}
#voiceTypes>span {
border-radius: 3px;
margin-left: 4px;
cursor: pointer;
padding: 1px 5px;
}
#voiceTypes>span:hover {
background: var(--active-btn);
}
.selVoiceType {
background: var(--sel-btn) !important;
}
.navHeader {
width: 100%;
padding: 5px 10px;
display: flex;
justify-content: space-between;
}
#newChat {
text-align: center;
width: 80%;
height: 40px;
border-radius: 3px;
background: var(--lighter-active-color);
color: var(--btn-color);
display: flex;
align-items: center;
justify-content: center;
-webkit-user-select: none;
user-select: none;
cursor: pointer;
flex: 1;
}
.navHeader>div:hover {
background: var(--active-btn) !important;
}
#newChat>svg {
margin-right: 2px;
}
#newFolder {
height: 40px;
width: 40px;
margin-left: 10px;
border-radius: 3px;
color: var(--btn-color);
cursor: pointer;
position: relative;
background: var(--lighter-active-color);
-webkit-user-select: none;
user-select: none;
}
#newFolder>svg {
display: block;
margin: 8px auto;
}
.extraChat {
padding: 2px 10px 6px 10px;
position: relative;
}
#searchChat {
width: 100%;
height: 36px;
padding-left: 10px;
padding-right: 16px;
font-size: 16px;
outline: none;
border: none;
color: var(--chat-text-color);
background: var(--lighter-active-color);
border-radius: 3px;
}
#searchChat:focus {
background: var(--active-btn)
}
#searchChat:placeholder-shown+#clearSearch {
display: none;
}
#clearSearch {
position: absolute;
right: 12px;
top: 8px;
cursor: pointer;
color: var(--btn-color);
}
#clearSearch:hover {
color: var(--black-color);
}
#clearSearch>svg {
display: block;
}
.divider {
width: 100%;
border-top: 1px solid var(--active-btn);
margin: 4px 0;
}
.navFooter {
padding-bottom: 8px;
}
.navFunc {
padding-top: 5px;
display: flex;
justify-content: space-around;
}
.navFunc svg {
display: block;
}
.navFunc>div,
.navFunc>label {
border-radius: 20px;
text-align: center;
padding: 8px 8px;
color: var(--btn-color);
font-size: 14px;
cursor: pointer;
}
.navFunc>div:hover,
.navFunc>label:hover {
background: var(--active-btn);
}
.links {
text-align: center;
}
.links a {
color: var(--btn-color);
text-decoration: none;
}
.links a:hover {
color: var(--chat-text-color) !important;
}
.links a:visited {
color: var(--btn-color);
}
.allList {
width: 100%;
position: relative;
flex: 1;
overflow-y: auto;
}
#chatList {
min-height: 50px;
}
.dragingLi {
filter: brightness(90%);
}
.dragingChat {
background: var(--lighter-active-color);
}
.expandFolder>.headLi>svg {
transform: rotate(90deg);
}
.expandFolder>.chatsInFolder {
display: block;
}
.chatsInFolder {
display: none;
margin-left: 22px;
padding-left: 2px;
border-left: 1px solid var(--text-color);
}
.headLi,
.chatLi {
cursor: pointer;
width: 100%;
height: 50px;
color: var(--text-color);
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
}
.headLi *,
.chatLi * {
pointer-events: none;
}
.headLi>svg,
.chatLi>svg {
margin-left: 10px;
color: var(--btn-color);
pointer-events: none;
}
.folderOption svg,
.chatOption svg {
pointer-events: auto;
}
.headLi svg *,
.chatLi svg * {
pointer-events: none;
}
.headLi .folderInfo {
position: absolute;
left: 40px;
height: 40px;
max-width: calc(100% - 115px);
}
.chatLi .chatInfo {
position: absolute;
left: 40px;
height: 40px;
max-width: calc(100% - 90px);
}
.folderInfo *,
.chatInfo * {
-webkit-user-select: none;
user-select: none;
}
.chatInfo span {
background: #f8b26a;
}
.headLi .folderName,
.chatLi .chatName {
color: var(--btn-color);
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
line-height: 20px;
height: 20px;
}
.headLi .folderNum,
.chatLi .chatPre {
color: var(--btn-color);
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-size: 12px;
line-height: 20px;
height: 20px;
}
.headLi .folderOption,
.chatLi .chatOption {
visibility: hidden;
display: flex;
color: #777;
margin-right: 2px;
}
.folderLi .chatLi>svg {
margin-left: 5px;
}
.folderLi .chatLi .chatInfo {
left: 35px;
max-width: calc(100% - 85px);
}
.folderLi .chatLi #activeChatEdit {
left: 32px;
width: calc(100% - 60px)
}
.folderLi:hover {
background: var(--lighter-active);
}
.chatLi:hover {
background: var(--active-btn);
}
.headLi:hover .folderOption,
.chatLi:hover .chatOption {
visibility: visible !important;
}
.activeFolder,
.activeChatLi {
background: var(--sel-btn) !important;
}
.activeChatLi .chatOption {
visibility: visible !important;
}
.folderOption>svg:hover,
.chatOption>svg:hover {
color: #444;
}
#activeChatEdit {
position: absolute;
left: 37px;
font-size: 16px;
border-radius: 2px;
color: var(--chat-text-color);
background: var(--chat-back);
outline: none;
border: none;
pointer-events: auto;
height: 24px;
line-height: 24px;
width: calc(100% - 6px);
padding: 20px 3px;
z-index: 1;
}
#loadMask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 100;
background-color: var(--background);
}
#loadMask>div {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#loadMask svg {
width: 160px;
height: 80px;
}
#loadMask>div>div {
font-size: 40px;
color: var(--text-color);
}
#voiceRec {
position: absolute;
right: 0;
top: 0;
width: 47px;
height: 100%;
}
.message_if_voice {
padding-right: 47px !important;
}
#voiceRecIcon {
width: 100%;
height: 100%;
text-align: center;
cursor: pointer;
position: relative;
}
#voiceRecIcon:hover>svg {
color: var(--svg-color);
}
#voiceRecIcon>svg {
width: 25px;
height: 25px;
color: #b0b0b0;
position: absolute;
top: 50%;
left: 50%;
margin-top: -12px;
margin-left: -13px;
}
#voiceRecIcon>svg .animVoice {
display: none;
}
.voiceRecing>svg {
color: #99c959 !important;
}
.voiceRecing .animVoice {
display: inline !important;
transform-origin: 0 64%;
animation-duration: 1.5s;
animation-name: scaleVoice;
animation-timing-function: ease;
animation-iteration-count: infinite;
}
.voiceLong .animVoice {
display: inline !important;
transform-origin: 0 64%;
animation-duration: 0.3s;
animation-name: longVoice;
animation-timing-function: ease-in-out;
animation-iteration-count: 1;
}
@keyframes longVoice {
0% {
transform: scaleY(0);
}
100% {
transform: scaleY(1);
}
}
@keyframes scaleVoice {
0% {
transform: scaleY(0.28);
}
20% {
transform: scaleY(0.60);
}
28% {
transform: scaleY(0.28);
}
36% {
transform: scaleY(0.45);
}
44% {
transform: scaleY(0.28);
}
52% {
transform: scaleY(0.45);
}
62% {
transform: scaleY(0.80);
}
72% {
transform: scaleY(0.80);
}
90% {
transform: scaleY(0.28);
}
100% {
transform: scaleY(0.28);
}
}
#voiceRecSetting {
display: none;
position: absolute;
top: -70px;
left: -26px;
z-index: 1;
padding: 4px 4px;
-webkit-user-select: none;
user-select: none;
border-radius: 3px;
background-color: var(--main-back);
box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
}
#voiceRecSetting select {
width: 102px;
outline: none;
height: 28px;
border-radius: 3px;
border-color: rgba(0, 0, 0, .3);
}
.presetModelCls label {
margin-right: 8px;
}
.presetModelCls select {
height: 30px;
margin-top: 2px;
font-size: 15px;
}
.setSwitch {
display: flex;
}
.setSwitch>div {
border-radius: 3px;
width: calc(100% / 3);
height: 32px;
line-height: 32px;
text-align: center;
cursor: pointer;
}
.setSwitch>div:hover {
background-color: var(--active-btn);
}
.activeSwitch {
background-color: var(--sel-btn) !important;
}
#checkVoiceLoad {
height: 32px;
border-radius: 3px;
line-height: 32px;
background: var(--sel-btn);
text-align: center;
display: flex;
justify-content: center;
cursor: pointer;
}
#checkVoiceLoad:hover {
background: var(--lighter-svg-color);
}
.voiceChecking {
background-color: var(--lighter-svg-color) !important;
}
.voiceChecking>svg {
display: inline !important;
}
#checkVoiceLoad>svg {
display: none;
margin-right: 8px;
height: 32px;
width: 64px;
}
#preSetSystem {
height: 20px;
line-height: 20px;
vertical-align: top;
}
#sysMask {
display: none;
position: fixed;
z-index: 200;
top: 0;
left: 0;
bottom: 0;
right: 0;
cursor: pointer;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, .4);
-webkit-tap-highlight-color: transparent;
}
#sysDialog {
position: relative;
background: var(--chat-back);
color: var(--btn-color);
cursor: auto;
max-height: 100%;
width: 88%;
display: flex;
flex-direction: column;
border-radius: 4px;
padding: 12px 20px 12px 20px;
}
.sysTitle {
font-size: 20px;
/* font-weight: bold; */
margin-bottom: 8px;
}
.sysSwitch,
.sysSwitch>div * {
pointer-events: none;
}
.sysSwitch>div {
border-radius: 3px;
height: 32px;
line-height: 32px;
text-align: center;
cursor: pointer;
pointer-events: auto;
/* font-weight: bold; */
display: flex;
align-items: center;
-webkit-user-select: none;
user-select: none;
}
.sysSwitch>div>svg {
margin-right: 4px;
}
.sysSwitch>div:hover {
background-color: var(--active-btn);
}
.sysDetail {
overflow-y: auto;
flex: 1;
}
#closeSet {
position: absolute;
right: 0px;
top: 0px;
cursor: pointer;
padding: 10px 14px;
}
#closeSet:hover {
color: var(--black-color);
}
.setContent {
margin-bottom: 10px;
}
.setNotNormalFlow {
position: absolute;
}
.setTitle {
margin-bottom: 6px;
/* font-weight: bold; */
}
.setDetail {
margin: 0 10px;
}
.dataDetail {
display: flex;
}
.dataDetail svg {
margin-right: 4px;
}
.dataDetail>div,
.dataDetail>label {
border-radius: 3px;
text-align: center;
padding: 6px 8px;
margin-right: 12px;
color: var(--btn-color);
font-size: 15px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
}
.dataDetail>div:hover,
.dataDetail>label:hover {
background: var(--lighter-active-color);
}
.hotKeyDetail>div {
position: relative;
height: 30px;
margin-bottom: 2px;
}
.hotKeyDetail label {
line-height: 30px;
}
.hotKeyDetail select {
position: absolute;
left: 110px;
outline: none;
border-radius: 3px;
width: 120px;
border-color: rgba(0, 0, 0, .3);
background: var(--chat-back);
color: var(--chat-text-color);
height: 30px;
font-size: 15px;
}
.avatarDetail {
display: flex;
margin-top: 2px;
}
.avatarDetail img {
border-radius: 2px;
width: 32px;
height: 32px;
flex-shrink: 0;
margin-right: 8px;
margin-top: 2px;
}
.inputDetail input {
outline: none;
border-radius: 3px;
padding-left: 8px;
font-size: 15px;
width: 100%;
height: 34px;
border: 1px solid rgba(0, 0, 0, .3);
background: var(--chat-back);
color: var(--chat-text-color);
}
.apiDetail {
display: flex;
}
.apiDetail input {
flex: 1;
}
.apiDetail>div {
margin-left: 6px;
background: var(--lighter-active-color);
border-radius: 3px;
width: 108px;
text-align: center;
cursor: pointer;
margin-top: 2px;
height: 34px;
line-height: 34px;
font-size: 15px;
}
.apiDetail>div:hover {
background: var(--active-btn);
}
.themeDetail {
display: flex;
width: 180px;
justify-content: space-between;
pointer-events: none;
}
.themeDetail svg {
display: block;
}
.themeDetail>div {
pointer-events: auto;
border-radius: 20px;
text-align: center;
padding: 8px 8px;
color: var(--btn-color);
font-size: 14px;
cursor: pointer;
}
.themeDetail>div * {
pointer-events: none;
}
.themeDetail>div:hover {
background: var(--lighter-active-color);
}
.darkTheme>div:first-child {
background: var(--sel-btn);
}
.lightTheme>div:nth-child(2) {
background: var(--sel-btn);
}
.autoTheme>div:nth-child(3) {
background: var(--sel-btn);
}
.langDetail {
width: 110px;
}
.enLang>div:first-child {
background: var(--sel-btn);
}
.zhLang>div:nth-child(2) {
background: var(--sel-btn);
}
#customAutoSet input {
width: 100px;
height: 30px;
line-height: 30px;
font-size: 15px;
outline: none;
border: 1px solid rgba(0, 0, 0, .3);
text-align: center;
border-radius: 3px;
background: var(--chat-back);
color: var(--chat-text-color);
}
#customAutoSet label {
margin-right: 8px;
}
.progressBar {
position: relative;
width: 100%;
height: 12px;
border-radius: 6px;
background: var(--active-btn);
overflow: hidden;
}
.expiredBar {
background: #e15b64;
}
.nowProgress {
position: absolute;
left: 0;
top: 0;
height: 12px;
min-width: 1px;
border-radius: 6px;
background: #99c959;
}
.progressDetail {
display: flex;
justify-content: space-between;
font-size: 15px;
}
.cursorCls {
background: var(--chat-text-color);
width: 4px;
animation: 1s cursor-blinker infinite step-start;
}
@keyframes cursor-blinker {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#apiSelect {
position: absolute;
top: 37px;
padding: 4px 0;
background: var(--chat-back);
width: 100%;
box-shadow: 0 0 6px rgba(0, 0, 0, 0.15);
max-height: 180px;
overflow-y: auto;
-webkit-user-select: none;
user-select: none;
}
#apiSelect>div {
pointer-events: auto;
cursor: pointer;
font-size: 15px;
padding: 6px 0 6px 8px;
height: 36px;
display: flex;
justify-content: space-between;
align-items: center;
}
#apiSelect>div:hover {
background: var(--lighter-active-color);
}
#apiSelect>div>span {
height: 100%;
line-height: 23px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
#apiSelect>div * {
pointer-events: none;
}
.delApiOption:hover {
background: var(--lighter-svg-color);
}
.delApiOption {
width: 36px;
height: 36px;
flex-shrink: 0;
pointer-events: auto !important;
}
.delApiOption>svg {
margin: 6px;
display: block;
}
</style>
<script>
let themeMode; // 2: 自动, 1: 浅色,0: 深色
let autoThemeMode; // 1: 跟随系统,0:自定义时间
let customDarkTime; // 开始,结束时间
let isFull = false; // 是否全屏
const darkMedia = window.matchMedia("(prefers-color-scheme: dark)");
const justDarkTheme = (is) => {
if (is) document.documentElement.setAttribute("data-theme", "dark");
else document.documentElement.removeAttribute("data-theme");
document.head.children[4].content = document.head.children[5].content = document.head.children[6].content = getComputedStyle(document.documentElement).getPropertyValue("--background");
}
const checkDark = () => {
const checkCustomTheme = () => {
let date = new Date();
let nowTime = date.getTime();
let start = customDarkTime[0].split(":");
let startTime = new Date().setHours(start[0], start[1], 0, 0);
let end = customDarkTime[1].split(":");
let endTime = new Date().setHours(end[0], end[1], 0, 0);
let order = endTime > startTime;
let isDark = order ? (nowTime > startTime && endTime > nowTime) : !(nowTime > endTime && startTime > nowTime);
justDarkTheme(isDark);
}
const setDarkMode = () => {
if (themeMode === 2) {
if (autoThemeMode) {
justDarkTheme(darkMedia.matches);
} else {
checkCustomTheme();
}
} else if (themeMode === 1) {
justDarkTheme(false);
} else {
justDarkTheme(true);
}
localStorage.setItem("themeMode", themeMode);
}
let localTheme = localStorage.getItem("themeMode");
themeMode = parseInt(localTheme || "1");
let localAutoTheme = localStorage.getItem("autoThemeMode");
autoThemeMode = parseInt(localAutoTheme || "1");
let localCustomDark = localStorage.getItem("customDarkTime");
customDarkTime = JSON.parse(localCustomDark || '["21:00", "07:00"]');
setDarkMode();
}
checkDark();
</script>
</head>
<body>
<div style="display: none">
<svg>
<symbol viewBox="0 0 24 24" id="optionIcon">
<path fill="currentColor"
d="M12 3c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0 14c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="refreshIcon">
<path fill="currentColor"
d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="halfRefIcon">
<path fill="currentColor"
d="M 4.009 12.163 C 4.012 12.206 2.02 12.329 2 12.098 C 2 6.575 6.477 2 12 2 C 17.523 2 22 6.477 22 12 C 22 14.136 21.33 16.116 20.19 17.74 L 17 12 L 20 12 C 19.999 5.842 13.333 1.993 7.999 5.073 C 3.211 8.343 4.374 12.389 4.009 12.163 Z" />
</symbol>
<symbol viewBox="-2 -2 20 20" id="copyIcon">
<path fill="currentColor"
d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z">
</path>
<path fill="currentColor"
d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="delIcon">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"
d="M9 7v0a3 3 0 0 1 3-3v0a3 3 0 0 1 3 3v0M9 7h6M9 7H6m9 0h3m2 0h-2M4 7h2m0 0v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="readyVoiceIcon">
<path fill="currentColor"
d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z">
</path>
</symbol>
<symbol viewBox="0 0 20 20" id="pauseVoiceIcon">
<path stroke="currentColor" stroke-width="1" d="M6 3v14M14 3v14"></path>
</symbol>
<symbol viewBox="0 0 16 16" id="resumeVoiceIcon">
<path fill="currentColor" d="M4 3L4 13L12 8Z"></path>
</symbol>
<symbol viewBox="0 0 24 24" id="stopResIcon">
<path fill="currentColor"
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10zm0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16zM9 9h6v6H9V9z">
</path>
</symbol>
<symbol viewBox="0 0 128 128" id="downAudioIcon">
<path
d="M 64.662 1.549 C 56.549 4.524, 46.998 14.179, 45.523 20.895 C 45.041 23.089, 44.073 23.833, 40.433 24.807 C 34.752 26.326, 27.956 32.929, 25.527 39.289 C 24.273 42.574, 23.884 45.715, 24.196 50.034 C 24.620 55.897, 24.528 56.193, 21.836 57.585 C 17.142 60.012, 16 63.617, 16 76 C 16 88.463, 17.137 91.985, 21.967 94.483 C 28.244 97.729, 36.120 95.350, 38.579 89.466 C 39.387 87.532, 40 82.764, 40 78.415 C 40 70.971, 40.060 70.783, 42.250 71.370 C 43.487 71.701, 48.888 71.979, 54.250 71.986 L 64 72 64 76 L 64 80 57.122 80 C 49.420 80, 48.614 80.543, 47.547 86.453 C 46.552 91.964, 43.550 97.473, 40.273 99.803 C 33 104.974, 23.120 105.042, 16.118 99.971 C 11.407 96.558, 9.048 92.484, 8.145 86.205 C 6.963 77.979, 0.794 77.729, 0.191 85.883 C -0.196 91.111, 3.323 99.170, 8.062 103.908 C 11.290 107.136, 20.073 111.969, 22.750 111.990 C 23.540 111.996, 24 113.472, 24 116 C 24 119.740, 23.813 120, 21.122 120 C 17.674 120, 15.727 122.044, 16.173 125.195 C 16.492 127.441, 16.781 127.500, 27.391 127.500 C 36.676 127.500, 38.445 127.242, 39.386 125.750 C 40.993 123.203, 38.986 120.568, 35.149 120.187 C 32.206 119.894, 32 119.617, 32 115.956 C 32 112.509, 32.330 111.959, 34.750 111.377 C 42.181 109.591, 52.157 101.208, 53.575 95.559 C 53.928 94.152, 54.514 93, 54.878 93 C 55.242 93, 59.797 97.275, 65 102.500 C 70.762 108.286, 75.256 112, 76.495 112 C 77.769 112, 83.287 107.231, 91.264 99.236 C 101.113 89.366, 104 85.876, 104 83.843 C 104 80.580, 102.553 80, 94.418 80 L 88 80 88 76.105 L 88 72.211 99.750 71.815 C 113.117 71.364, 117.595 69.741, 122.762 63.473 C 128.159 56.925, 129.673 45.269, 126.134 37.500 C 123.787 32.346, 117.218 26.445, 112.132 24.921 C 108.617 23.868, 107.767 22.968, 105.028 17.405 C 99.364 5.901, 89.280 -0.062, 75.712 0.070 C 71.746 0.109, 66.773 0.774, 64.662 1.549 M 67.885 9.380 C 60.093 12.164, 55.057 17.704, 52.527 26.276 C 51.174 30.856, 50.220 31.617, 44.729 32.496 C 37.017 33.729, 30.917 42.446, 32.374 50.154 C 34.239 60.026, 40.582 63.944, 54.750 63.978 L 64 64 64 57.122 C 64 52.457, 64.449 49.872, 65.396 49.086 C 66.310 48.328, 70.370 48.027, 77.146 48.214 L 87.500 48.500 87.794 56.359 L 88.088 64.218 98.989 63.845 C 108.043 63.535, 110.356 63.125, 112.634 61.424 C 119.736 56.122, 121.911 47.667, 118.097 40.190 C 115.870 35.824, 110.154 32.014, 105.790 31.985 C 102.250 31.961, 101.126 30.787, 99.532 25.443 C 95.580 12.197, 80.880 4.736, 67.885 9.380 M 72 70.800 C 72 80.978, 71.625 85.975, 70.800 86.800 C 70.140 87.460, 67.781 88, 65.559 88 L 61.517 88 68.759 95.241 L 76 102.483 83.241 95.241 L 90.483 88 86.441 88 C 84.219 88, 81.860 87.460, 81.200 86.800 C 80.375 85.975, 80 80.978, 80 70.800 L 80 56 76 56 L 72 56 72 70.800 M 25.200 65.200 C 23.566 66.834, 23.566 85.166, 25.200 86.800 C 27.002 88.602, 29.798 88.246, 30.965 86.066 C 31.534 85.002, 32 80.472, 32 76 C 32 71.528, 31.534 66.998, 30.965 65.934 C 29.798 63.754, 27.002 63.398, 25.200 65.200"
stroke="none" fill="currentColor" fill-rule="evenodd" />
</symbol>
<symbol viewBox="0 0 24 24" id="chatIcon">
<path fill="currentColor"
d="m18 21l-1.4-1.4l1.575-1.6H14v-2h4.175L16.6 14.4L18 13l4 4l-4 4ZM3 21V6q0-.825.588-1.413T5 4h12q.825 0 1.413.588T19 6v5.075q-.25-.05-.5-.063T18 11q-.25 0-.5.013t-.5.062V6H5v10h7.075q-.05.25-.063.5T12 17q0 .25.013.5t.062.5H6l-3 3Zm4-11h8V8H7v2Zm0 4h5v-2H7v2Zm-2 2V6v10Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="chatEditIcon">
<path fill="currentColor"
d="M5 19h1.4l8.625-8.625l-1.4-1.4L5 17.6V19ZM19.3 8.925l-4.25-4.2l1.4-1.4q.575-.575 1.413-.575t1.412.575l1.4 1.4q.575.575.6 1.388t-.55 1.387L19.3 8.925ZM17.85 10.4L7.25 21H3v-4.25l10.6-10.6l4.25 4.25Zm-3.525-.725l-.7-.7l1.4 1.4l-.7-.7Z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="deleteIcon">
<path fill="currentColor"
d="M8 20v-5h2v5h9v-7H5v7h3zm-4-9h16V8h-6V4h-4v4H4v3zM3 21v-8H2V7a1 1 0 0 1 1-1h5V3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v3h5a1 1 0 0 1 1 1v6h-1v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="addIcon" stroke="currentColor" fill="none" stroke-width="1"
stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="5" x2="12" y2="19"></line>
<line x1="5" y1="12" x2="19" y2="12"></line>
</symbol>
<symbol viewBox="0 0 200 100" preserveAspectRatio="xMidYMid" id="loadingIcon">
<g transform="translate(50 50)">
<circle cx="0" cy="0" r="15" fill="#e15b64">
<animateTransform attributeName="transform" type="scale" begin="-0.3333333333333333s"
calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1"
dur="1s" repeatCount="indefinite"></animateTransform>
</circle>
</g>
<g transform="translate(100 50)">
<circle cx="0" cy="0" r="15" fill="#f8b26a">
<animateTransform attributeName="transform" type="scale" begin="-0.16666666666666666s"
calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1"
dur="1s" repeatCount="indefinite"></animateTransform>
</circle>
</g>
<g transform="translate(150 50)">
<circle cx="0" cy="0" r="15" fill="#99c959">
<animateTransform attributeName="transform" type="scale" begin="0s" calcMode="spline"
keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s"
repeatCount="indefinite"></animateTransform>
</circle>
</g>
</symbol>
<symbol viewBox="0 0 24 24" id="exportIcon">
<path fill="currentColor"
d="m17.86 18l1.04 1c-1.4 1.2-3.96 2-6.9 2c-4.41 0-8-1.79-8-4V7c0-2.21 3.58-4 8-4c2.95 0 5.5.8 6.9 2l-1.04 1l-.36.4C16.65 5.77 14.78 5 12 5C8.13 5 6 6.5 6 7s2.13 2 6 2c1.37 0 2.5-.19 3.42-.46l.96.96H13.5v1.42c-.5.05-1 .08-1.5.08c-2.39 0-4.53-.53-6-1.36v2.81C7.3 13.4 9.58 14 12 14c.5 0 1-.03 1.5-.08v.58h2.88l-1 1l.12.11c-1.09.25-2.26.39-3.5.39c-2.28 0-4.39-.45-6-1.23V17c0 .5 2.13 2 6 2c2.78 0 4.65-.77 5.5-1.39l.36.39m1.06-10.92L17.5 8.5L20 11h-5v2h5l-2.5 2.5l1.42 1.42L23.84 12l-4.92-4.92Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="importIcon">
<path fill="currentColor"
d="m8.84 12l-4.92 4.92L2.5 15.5L5 13H0v-2h5L2.5 8.5l1.42-1.42L8.84 12M12 3C8.59 3 5.68 4.07 4.53 5.57L5 6l1.03 1.07C6 7.05 6 7 6 7c0-.5 2.13-2 6-2s6 1.5 6 2s-2.13 2-6 2c-2.62 0-4.42-.69-5.32-1.28l3.12 3.12c.7.1 1.44.16 2.2.16c2.39 0 4.53-.53 6-1.36v2.81c-1.3.95-3.58 1.55-6 1.55c-.96 0-1.9-.1-2.76-.27l-1.65 1.64c1.32.4 2.82.63 4.41.63c2.28 0 4.39-.45 6-1.23V17c0 .5-2.13 2-6 2s-6-1.5-6-2v-.04L5 18l-.46.43C5.69 19.93 8.6 21 12 21c4.41 0 8-1.79 8-4V7c0-2.21-3.58-4-8-4Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="clearAllIcon">
<path fill="currentColor"
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10zm0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16zm0-9.414l2.828-2.829l1.415 1.415L13.414 12l2.829 2.828l-1.415 1.415L12 13.414l-2.828 2.829l-1.415-1.415L10.586 12L7.757 9.172l1.415-1.415L12 10.586z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="collapseFullIcon">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
stroke-width="1"
d="m20 20l-5-5m0 0v4m0-4h4M4 20l5-5m0 0v4m0-4H5M20 4l-5 5m0 0V5m0 4h4M4 4l5 5m0 0V5m0 4H5" />
</symbol>
<symbol viewBox="0 0 24 24" id="expandFullIcon">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
stroke-width="1"
d="M9 9L4 4m0 0v4m0-4h4m7 5l5-5m0 0v4m0-4h-4M9 15l-5 5m0 0v-4m0 4h4m7-5l5 5m0 0v-4m0 4h-4" />
</symbol>
<symbol viewBox="0 0 24 24" id="darkThemeIcon">
<path fill="currentColor"
d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="lightThemeIcon">
<path fill="currentColor"
d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="autoThemeIcon">
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1">
<path d="M9.173 14.83a4 4 0 1 1 5.657-5.657" />
<path
d="m11.294 12.707l.174.247a7.5 7.5 0 0 0 8.845 2.492A9 9 0 0 1 5.642 18.36M3 12h1m8-9v1M5.6 5.6l.7.7M3 21L21 3" />
</g>
</symbol>
<symbol viewBox="0 0 24 24" id="newFolderIcon">
<path fill="currentColor"
d="M14 16h2v-2h2v-2h-2v-2h-2v2h-2v2h2v2ZM2 20V4h8l2 2h10v14H2Zm2-2h16V8h-8.825l-2-2H4v12Zm0 0V6v12Z" />
</symbol>
<symbol viewBox="0 0 20 20" id="expandFolderIcon">
<path fill="currentColor"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z">
</path>
</symbol>
<symbol viewBox="0 0 24 24" id="closeIcon">
<path fill="currentColor"
d="M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l5.6 5.6L17.6 5L19 6.4L13.4 12l5.6 5.6l-1.4 1.4l-5.6-5.6L6.4 19Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="settingIcon">
<path fill="currentColor"
d="M13.85 22.25h-3.7c-.74 0-1.36-.54-1.45-1.27l-.27-1.89c-.27-.14-.53-.29-.79-.46l-1.8.72c-.7.26-1.47-.03-1.81-.65L2.2 15.53c-.35-.66-.2-1.44.36-1.88l1.53-1.19c-.01-.15-.02-.3-.02-.46 0-.15.01-.31.02-.46l-1.52-1.19c-.59-.45-.74-1.26-.37-1.88l1.85-3.19c.34-.62 1.11-.9 1.79-.63l1.81.73c.26-.17.52-.32.78-.46l.27-1.91c.09-.7.71-1.25 1.44-1.25h3.7c.74 0 1.36.54 1.45 1.27l.27 1.89c.27.14.53.29.79.46l1.8-.72c.71-.26 1.48.03 1.82.65l1.84 3.18c.36.66.2 1.44-.36 1.88l-1.52 1.19c.01.15.02.3.02.46s-.01.31-.02.46l1.52 1.19c.56.45.72 1.23.37 1.86l-1.86 3.22c-.34.62-1.11.9-1.8.63l-1.8-.72c-.26.17-.52.32-.78.46l-.27 1.91c-.1.68-.72 1.22-1.46 1.22zm-3.23-2h2.76l.37-2.55.53-.22c.44-.18.88-.44 1.34-.78l.45-.34 2.38.96 1.38-2.4-2.03-1.58.07-.56c.03-.26.06-.51.06-.78s-.03-.53-.06-.78l-.07-.56 2.03-1.58-1.39-2.4-2.39.96-.45-.35c-.42-.32-.87-.58-1.33-.77l-.52-.22-.37-2.55h-2.76l-.37 2.55-.53.21c-.44.19-.88.44-1.34.79l-.45.33-2.38-.95-1.39 2.39 2.03 1.58-.07.56a7 7 0 0 0-.06.79c0 .26.02.53.06.78l.07.56-2.03 1.58 1.38 2.4 2.39-.96.45.35c.43.33.86.58 1.33.77l.53.22.38 2.55z">
</path>
<circle fill="currentColor" cx="12" cy="12" r="3.5"></circle>
</symbol>
<symbol viewBox="298 299 1808 1808" id="aiIcon">
<path fill="white"
d="M1107.3 299.1c-198 0-373.9 127.3-435.2 315.3C544.8 640.6 434.9 720.2 370.5 833c-99.3 171.4-76.6 386.9 56.4 533.8-41.1 123.1-27 257.7 38.6 369.2 98.7 172 297.3 260.2 491.6 219.2 86.1 97 209.8 152.3 339.6 151.8 198 0 373.9-127.3 435.3-315.3 127.5-26.3 237.2-105.9 301-218.5 99.9-171.4 77.2-386.9-55.8-533.9v-.6c41.1-123.1 27-257.8-38.6-369.8-98.7-171.4-297.3-259.6-491-218.6-86.6-96.8-210.5-151.8-340.3-151.2zm0 117.5-.6.6c79.7 0 156.3 27.5 217.6 78.4-2.5 1.2-7.4 4.3-11 6.1L952.8 709.3c-18.4 10.4-29.4 30-29.4 51.4V1248l-155.1-89.4V755.8c-.1-187.1 151.6-338.9 339-339.2zm434.2 141.9c121.6-.2 234 64.5 294.7 169.8 39.2 68.6 53.9 148.8 40.4 226.5-2.5-1.8-7.3-4.3-10.4-6.1l-360.4-208.2c-18.4-10.4-41-10.4-59.4 0L1024 984.2V805.4L1372.7 604c51.3-29.7 109.5-45.4 168.8-45.5zM650 743.5v427.9c0 21.4 11 40.4 29.4 51.4l421.7 243-155.7 90L597.2 1355c-162-93.8-217.4-300.9-123.8-462.8C513.1 823.6 575.5 771 650 743.5zm807.9 106 348.8 200.8c162.5 93.7 217.6 300.6 123.8 462.8l.6.6c-39.8 68.6-102.4 121.2-176.5 148.2v-428c0-21.4-11-41-29.4-51.4l-422.3-243.7 155-89.3zM1201.7 997l177.8 102.8v205.1l-177.8 102.8-177.8-102.8v-205.1L1201.7 997zm279.5 161.6 155.1 89.4v402.2c0 187.3-152 339.2-339 339.2v-.6c-79.1 0-156.3-27.6-217-78.4 2.5-1.2 8-4.3 11-6.1l360.4-207.5c18.4-10.4 30-30 29.4-51.4l.1-486.8zM1380 1421.9v178.8l-348.8 200.8c-162.5 93.1-369.6 38-463.4-123.7h.6c-39.8-68-54-148.8-40.5-226.5 2.5 1.8 7.4 4.3 10.4 6.1l360.4 208.2c18.4 10.4 41 10.4 59.4 0l421.9-243.7z" />
</symbol>
<symbol viewBox="0 0 330 330" id="ClaudeAiIcon">
<image href="Claude_icon.png"/>
</symbol>
<symbol viewBox="0 0 24 24" id="importSetIcon">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"
d="m12 21l-8-4.5v-9L12 3l8 4.5V12m-8 0l8-4.5M12 12v9m0-9L4 7.5M22 18h-7m3-3l-3 3l3 3" />
</symbol>
<symbol viewBox="0 0 24 24" id="exportSetIcon">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"
d="m12 21l-8-4.5v-9L12 3l8 4.5V12m-8 0l8-4.5M12 12v9m0-9L4 7.5M15 18h7m-3-3l3 3l-3 3" />
</symbol>
<symbol viewBox="0 0 24 24" id="databaseIcon">
<path fill="currentColor"
d="M12 3C7.58 3 4 4.79 4 7v10c0 2.21 3.59 4 8 4s8-1.79 8-4V7c0-2.21-3.58-4-8-4m6 14c0 .5-2.13 2-6 2s-6-1.5-6-2v-2.23c1.61.78 3.72 1.23 6 1.23s4.39-.45 6-1.23V17m0-4.55c-1.3.95-3.58 1.55-6 1.55s-4.7-.6-6-1.55V9.64c1.47.83 3.61 1.36 6 1.36s4.53-.53 6-1.36v2.81M12 9C8.13 9 6 7.5 6 7s2.13-2 6-2s6 1.5 6 2s-2.13 2-6 2Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="stopIcon">
<path fill="currentColor" d="M6 5h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="forceRefreshIcon">
<path fill="currentColor"
d="M13.82 14H9.66c-.1-.66-.16-1.32-.16-2s.06-1.35.16-2h4.68c.09.65.16 1.32.16 2c0 .5-.04 1-.1 1.46c.6-.5 1.32-.89 2.1-1.14V12c0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2v.18c.7.17 1.35.45 1.95.82c.05-.32.05-.66.05-1c0-5.5-4.5-10-10-10C6.47 2 2 6.5 2 12s4.5 10 10 10c.34 0 .68 0 1-.05c-.41-.66-.71-1.4-.87-2.2c-.04.07-.08.14-.13.21c-.83-1.2-1.5-2.53-1.91-3.96h2.41c.31-.75.76-1.42 1.32-2m5.1-6h-2.95a15.65 15.65 0 0 0-1.38-3.56c1.84.63 3.37 1.9 4.33 3.56M12 4.03c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2H4.26m.82 2H8c.35 1.25.8 2.45 1.4 3.56A8.008 8.008 0 0 1 5.08 16M8 8H5.08A7.923 7.923 0 0 1 9.4 4.44C8.8 5.55 8.35 6.75 8 8m12.83 7.67L22 14.5v4h-4l1.77-1.77A2.5 2.5 0 1 0 20 20h1.71A3.991 3.991 0 0 1 18 22.5c-2.21 0-4-1.79-4-4s1.79-4 4-4c1.11 0 2.11.45 2.83 1.17Z" />
</symbol>
<symbol viewBox="0 0 24 24" id="hotkeyIcon">
<g fill="none">
<path
d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z" />
<path fill="currentColor"
d="M18 3a3 3 0 0 1 2.995 2.824L21 6v12a3 3 0 0 1-2.824 2.995L18 21H6a3 3 0 0 1-2.995-2.824L3 18V6a3 3 0 0 1 2.824-2.995L6 3h12Zm-2.707 13.708A2.99 2.99 0 0 1 14 17H5v1a1 1 0 0 0 1 1h11.586l-2.293-2.292ZM18 5h-1v9c0 .386-.073.755-.206 1.094l-.086.2L19 17.585V6a1 1 0 0 0-.883-.993L18 5Zm-3 0H6a1 1 0 0 0-.993.883L5 6v9h9a1 1 0 0 0 .993-.883L15 14V5ZM9 7a1 1 0 0 1 .993.883L10 8v.631l1.445-.963a1 1 0 0 1 1.203 1.594l-.093.07l-1.377.918l1.377.918a1 1 0 0 1-1.009 1.723l-.1-.059L10 11.868V12a1 1 0 0 1-1.993.117L8 12V8a1 1 0 0 1 1-1Z" />
</g>
</symbol>
<symbol viewBox="0 0 24 24" id="zhIcon">
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1">
<path stroke-linejoin="round" d="M5 8h14v7H5z" />
<path d="M12 4v17" />
</g>
</symbol>
<symbol viewBox="0 0 24 24" id="enIcon">
<path fill="currentColor"
d="M14 10h2v.757a4.5 4.5 0 0 1 7 3.743V20h-2v-5.5c0-1.43-1.174-2.5-2.5-2.5S16 13.07 16 14.5V20h-2V10Zm-2-6v2H4v5h8v2H4v5h8v2H2V4h10Z" />
</symbol>
</svg>
</div>
<div id="loadMask">
<div>
<div>ChatGPT</div>
<svg>
<use xlink:href="#loadingIcon" />
</svg>
</div>
</div>
<div class="chat_window">
<div class="overlay"></div>
<nav class="nav">
<div class="navHeader">
<div id="newChat">
<svg width="24" height="24">
<use xlink:href="#addIcon" />
</svg>
<span data-i18n-key="newChat"></span>
</div>
<div id="newFolder" data-i18n-title="newFolder" title>
<svg width="24" height="24">
<use xlink:href="#newFolderIcon" />
</svg>
</div>
</div>
<div class="extraChat">
<input type="text" id="searchChat" autocomplete="off" data-i18n-place="search" placeholder />
<div id="clearSearch">
<svg width="24" height="24">
<use xlink:href="#closeIcon" />
</svg>
</div>
</div>
<div class="allList">
<div id="folderList"></div>
<div id="chatList"></div>
</div>
<div class="navFooter">
<div class="navFunc">
<div id="refreshPage" data-i18n-title="forceRe" title>
<svg width="24" height="24">
<use xlink:href="#forceRefreshIcon" />
</svg>
</div>
<div id="clearChat" data-i18n-title="clearAll" title>
<svg width="24" height="24">
<use xlink:href="#clearAllIcon" />
</svg>
</div>
<div id="toggleLight" data-i18n-theme title>
<svg width="24" height="24">
<use xlink:href="#lightThemeIcon" />
</svg>
</div>
<div id="sysSetting" data-i18n-title="setting" title>
<svg width="24" height="24">
<use xlink:href="#settingIcon" />
</svg>
</div>
</div>
<div class="divider"></div>
<div class="links">
<a href="https://github.com/yuejunzhang/chatgpt-web-2" target="_blank"
rel="noopener noreferrer">Github</a>
</div>
</div>
</nav>
<div class="mainContent">
<div class="top_menu">
<div class="toggler" data-i18n-title="nav" title>
<div class="button close"></div>
<div class="button minimize"></div>
<div class="button maximize"></div>
</div>
<div class="title"><span>ChatGPT</span></div>
<div class="settings">
<button class="setBtn" id="toggleFull" data-i18n-window title>
<svg width="30" height="30">
<use xlink:href="#expandFullIcon" />
</svg>
</button>
<button class="setBtn" id="setting">
<svg viewBox="0 0 100 100" width="30" height="30">
<title data-i18n-key="quickSet"></title>
<circle cx="50" cy="20" r="10" fill="#e15b64" />
<circle cx="50" cy="50" r="10" fill="#f8b26a" />
<circle cx="50" cy="80" r="10" fill="#99c959" />
</svg>
</button>
</div>
<div id="setDialog" style="display:none;">
<div class="setSwitch">
<div data-id="convOption" data-i18n-key="chat" class="activeSwitch"></div>
<div data-id="speechOption" data-i18n-key="tts"></div>
<div data-id="recOption" data-i18n-key="stt"></div>
</div>
<div id="convOption">
<div class="presetSelect presetModelCls">
<label for="preSetModel" data-i18n-key="gptModel"></label>
<select id="preSetModel">
<option value="gpt-3.5-turbo">GPT-3.5</option>
<option value="gpt-3.5-turbo-16k">GPT-3.5-16K</option>
<option value="gpt-4">GPT-4</option>
<option value="gpt-4-browsing" data-i18n-key="gptBrowsing"></option>
<option value="gpt-4-32k">GPT-4-32k</option>
<option value="Claude-2">Claude-2</option>
</select>
</div>
<div>
<div data-i18n-key="avatar"></div>
<div class="avatarDetail">
<img id="setAvatarPre" src="" />
<input class="inputTextClass" autocomplete="off" type="text" id="setAvatar" style="display: none;" />
</div>
</div>
<div>
<div class="presetSelect presetModelCls">
<div>
<label for="preSetSystem" data-i18n-key="presetRole"></label>
<select id="preSetSystem">
<option value="default" data-i18n-key="default"></option>
<option value="normal" data-i18n-key="assistant"></option>
<option value="Programmer" data-i18n-key="Programmer"></option>
<option value="emoji" data-i18n-key="emoji"></option>
<option value="image" data-i18n-key="withImg"></option>
</select>
</div>
</div>
<textarea class="inputTextClass areaTextClass" autocomplete="off"
data-i18n-place="assistantText" placeholder id="systemInput"></textarea>
</div>
<div>
<span data-i18n-key="nature"></span>
<input type="range" id="top_p" min="0" max="1" value="0.7" step="0.05" />
<div class="selectDef">
<span data-i18n-key="natureNeg"></span>
<span data-i18n-key="naturePos"></span>
</div>
</div>
<div>
<span data-i18n-key="quality"></span>
<input type="range" id="temp" min="0" max="2" value="1" step="0.05" />
<div class="selectDef">
<span data-i18n-key="qualityNeg"></span>
<span data-i18n-key="qualityPos"></span>
</div>
</div>
<div>
<span data-i18n-key="chatsWidth"></span>
<input type="range" id="convWidth" min="30" max="100" value="100" step="1" />
<div class="selectDef">
<span>30%</span>
<span>100%</span>
</div>
</div>
<div>
<span data-i18n-key="typeSpeed"></span>
<input type="range" id="textSpeed" min="0" max="100" value="88" step="1" />
<div class="selectDef">
<span data-i18n-key="slow"></span>
<span data-i18n-key="fast"></span>
</div>
</div>
<div>
<span><span data-i18n-key="continuousLen"></span>: <span id="contLenWrap"></span><span
data-i18n-key="msgAbbr"></span></span>
<input type="range" id="contLength" min="0" max="50" value="25" step="1" />
<div class="selectDef">
<span>0</span>
<span>50</span>
</div>
</div>
<div>
<span class="inlineTitle" data-i18n-key="longReply"></span>
<label class="switch-slide">
<input type="checkbox" id="enableLongReply" hidden />
<label for="enableLongReply" class="switch-slide-label"></label>
</label>
</div>
</div>
<div id="speechOption" style="display: none;">
<div class="presetSelect presetModelCls">
<label for="preSetService" data-i18n-key="ttsService"></label>
<select id="preSetService">
<option value="3" data-i18n-key="azureTTS"></option>
<option selected value="2" data-i18n-key="edgeTTS"></option>
<option value="1" data-i18n-key="systemTTS"></option>
</select>
</div>
<div class="presetSelect presetModelCls">
<label for="preSetAzureRegion" data-i18n-key="azureRegion"></label>
<select id="preSetAzureRegion">
</select>
</div>
<div>
<div>Azure Access Key</div>
<input class="inputTextClass" type="text" placeholder="Azure Key" id="azureKeyInput"
autocomplete="off" style="-webkit-text-security: disc;" />
</div>
<div id="checkVoiceLoad" style="display: none;">
<svg>
<use xlink:href="#loadingIcon" />
</svg>
<span data-i18n-key="loadVoice"></span>
</div>
<div id="speechDetail">
<div>
<div class="justSetLine">
<div data-i18n-key="voiceName"></div>
<div id="voiceTypes">
<span data-type="0" data-i18n-key="userVoice"></span>
<span data-type="1" class="selVoiceType" data-i18n-key="replyVoice"></span>
</div>
</div>
<select id="preSetSpeech">
</select>
</div>
<div>
<div class="justSetLine">
<input class="inputTextClass" id="testVoiceText" data-i18n-value="TTSTest" value />
</div>
<div class="justSetLine readyTestVoice" id="testVoiceBtn" style="margin-top: 6px;">
<div class="justSetBtn" onclick="startTestVoice()">
<svg width="18" height="18">
<use xlink:href="#readyVoiceIcon" />
</svg>
<span data-i18n-key="play"></span>
</div>
<div class="justSetBtn" onclick="pauseTestVoice()">
<svg width="18" height="18">
<use xlink:href="#pauseVoiceIcon" />
</svg>
<span data-i18n-key="pause"></span>
</div>
<div class="justSetBtn" onclick="resumeTestVoice()">
<svg width="18" height="18">
<use xlink:href="#resumeVoiceIcon" />
</svg>
<span data-i18n-key="resume"></span>
</div>
<div class="justSetBtn" style="margin-right: 130px" onclick="stopTestVoice()">
<svg width="18" height="18">
<use xlink:href="#stopIcon" />
</svg>
<span data-i18n-key="stop"></span>
</div>
</div>
</div>
<div class="justSetLine presetSelect" id="azureExtra" style="display:none;">
<div class="presetModelCls">
<label for="preSetVoiceStyle" data-i18n-key="style"></label>
<select id="preSetVoiceStyle">
</select>
</div>
<div class="presetModelCls">
<label for="preSetVoiceRole" data-i18n-key="role"></label>
<select id="preSetVoiceRole">
</select>
</div>
</div>
<div>
<span data-i18n-key="volume"></span>
<input type="range" id="voiceVolume" min="0" max="1" value="1" step="0.1" />
<div class="selectDef">
<span data-i18n-key="low"></span>
<span data-i18n-key="high"></span>
</div>
</div>
<div>
<span data-i18n-key="rate"></span>
<input type="range" id="voiceRate" min="0.1" max="2" value="1" step="0.1" />
<div class="selectDef">
<span data-i18n-key="slow"></span>
<span data-i18n-key="fast"></span>
</div>
</div>
<div>
<span data-i18n-key="pitch"></span>
<input type="range" id="voicePitch" min="0" max="2" value="1" step="0.1" />
<div class="selectDef">
<span data-i18n-key="neutral"></span>
<span data-i18n-key="intense"></span>
</div>
</div>
<div>
<span class="inlineTitle" data-i18n-key="contSpeech"></span>
<label class="switch-slide">
<input type="checkbox" id="enableContVoice" checked="true" hidden />
<label for="enableContVoice" class="switch-slide-label"></label>
</label>
</div>
<div>
<span class="inlineTitle" data-i18n-key="autoSpeech"></span>
<label class="switch-slide">
<input type="checkbox" id="enableAutoVoice" checked="true" hidden />
<label for="enableAutoVoice" class="switch-slide-label"></label>
</label>
</div>
</div>
</div>
<div id="recOption" style="display: none;">
<div id="noRecTip" style="display: block;" data-i18n-key="unsupportRecTip"></div>
<div id="yesRec" style="display: none;">
<div class="presetSelect presetModelCls">
<label for="selectLangOption" data-i18n-key="lang"></label>
<select id="selectLangOption">
</select>
</div>
<div class="presetSelect presetModelCls">
<label for="selectDiaOption" data-i18n-key="dialect"></label>
<select id="selectDiaOption">
</select>
</div>
<div>
<div data-i18n-key="autoSendKey"></div>
<input class="inputTextClass" id="autoSendText" autocomplete="off"
data-i18n-place="send" placeholder />
</div>
<div>
<div data-i18n-key="autoStopKey"></div>
<input class="inputTextClass" id="autoStopText" autocomplete="off"
data-i18n-place="stop" placeholder />
</div>
<div>
<span data-i18n-key="autoSendDelay"></span>
<input type="range" id="autoSendTimeout" min="0" max="10" value="0" step="1" />
<div class="selectDef">
<span>0<span data-i18n-key="second"></span></span>
<span>10<span data-i18n-key="second"></span></span>
</div>
</div>
<div>
<span class="inlineTitle" data-i18n-key="keepListenMic"></span>
<label class="switch-slide">
<input type="checkbox" id="keepListenMic" checked="false" hidden />
<label for="keepListenMic" class="switch-slide-label"></label>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="messages">
<div id="Mask" style="position: absolute; top:0;left:0;width: 100%; height: 0px; background-color:rgba(188, 188, 188, 0.5);; z-index: 1; pointer-events: none; "></div>
<div id="chatlog"></div>
<div id="stopChat"><svg width="24" height="24">
<use xlink:href="#stopResIcon" />
</svg><span data-i18n-key="stop"></span></div>
</div>
<div class="bottom_wrapper clearfix">
<div class="message_input_wrapper">
<textarea class="message_input_text" autocomplete="off" spellcheck="false" data-i18n-place="askTip"
placeholder id="chatinput"></textarea>
<div id="voiceRec" style="display:none;">
<div id="voiceRecIcon">
<svg viewBox="0 0 48 48" id="voiceInputIcon">
<g fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="1">
<rect fill="none" width="14" height="27" x="17" y="4" rx="7" />
<rect class="animVoice" x="18" y="4" width="12" height="27" stroke="none"
fill="currentColor"></rect>
<path stroke-linecap="round"
d="M9 23c0 8.284 6.716 15 15 15c8.284 0 15-6.716 15-15M24 38v6" />
</g>
</svg>
</div>
<div id="voiceRecSetting">
<select id="select_language" style="margin-bottom: 4px;"></select>
<select id="select_dialect"></select>
</div>
</div>
</div>
<button class="loaded" id="sendbutton">
<span data-i18n-key="send"></span>
<svg style="margin:0 auto;height:40px;width:100%;">
<use xlink:href="#loadingIcon" />
</svg>
</button>
<button class="clearConv" data-i18n-title="clearChat" title>
<svg style="color: #e15b64;" width="29" height="29">
<use xlink:href="#closeIcon" />
</svg>
<svg width="21" height="21">
<use xlink:href="#deleteIcon" />
</svg>
</button>
</div>
</div>
</div>
<div id="sysMask">
<div id="sysDialog">
<div id="closeSet">
<svg width="24" height="24">
<use xlink:href="#closeIcon" />
</svg>
</div>
<div class="sysTitle" data-i18n-key="setting"></div>
<div class="sysContent">
<div class="sysSwitch">
<div data-id="generalOption" class="activeSwitch">
<svg width="24" height="24">
<use xlink:href="#settingIcon" />
</svg><span data-i18n-key="general"></span>
</div>
<div data-id="hotkeyOption">
<svg width="24" height="24">
<use xlink:href="#hotkeyIcon" />
</svg><span data-i18n-key="hotkey"></span>
</div>
<div data-id="dataOption">
<svg width="24" height="24">
<use xlink:href="#databaseIcon" />
</svg><span data-i18n-key="data"></span>
</div>
</div>
<div class="sysDetail">
<div id="generalOption">
<div class="setContent">
<div class="setTitle" data-i18n-key="theme"></div>
<div class="setDetail themeDetail lightTheme" id="setLight">
<div data-i18n-title="darkTheme" title>
<svg width="24" height="24">
<use xlink:href="#darkThemeIcon"></use>
</svg>
</div>
<div data-i18n-title="lightTheme" title>
<svg width="24" height="24">
<use xlink:href="#lightThemeIcon"></use>
</svg>
</div>
<div data-i18n-title="autoTheme" title>
<svg width="24" height="24">
<use xlink:href="#autoThemeIcon"></use>
</svg>
</div>
</div>
</div>
<div class="setContent" id="autoDetail" style="display: none;font-size: 15px;">
<div class="setDetail">
<div>
<input type="radio" id="autoTheme1" name="autoLight" value="1" checked />
<label for="autoTheme1" data-i18n-key="systemTheme"></label>
</div>
<div style="margin-top: 8px;">
<input type="radio" id="autoTheme0" name="autoLight" value="0" />
<label for="autoTheme0" data-i18n-key="customDarkTheme"></label>
</div>
<div id="customAutoSet" style="display: none; margin-top: 10px;">
<div>
<label for="customStart" data-i18n-key="startDark"></label>
<input type="time" id="customStart" required>
</div>
<div style="margin-top: 10px;">
<label for="customEnd" data-i18n-key="endDark"></label>
<input type="time" id="customEnd" required>
</div>
</div>
</div>
</div>
<div class="setContent">
<div class="setTitle" data-i18n-key="lang"></div>
<div class="setDetail themeDetail langDetail" id="setLang">
<div title="English">
<svg width="24" height="24">
<use xlink:href="#enIcon"></use>
</svg>
</div>
<div title="中文">
<svg width="24" height="24">
<use xlink:href="#zhIcon"></use>
</svg>
</div>
</div>
</div>
<div class="setContent setNotNormalFlow">
<div class="setTitle" data-i18n-key="aiEndpoint"></div>
<div class="setDetail inputDetail" style="position: relative;">
<input class="inputTextClass" placeholder="https://api.openai.com/" autocomplete="off"
id="apiHostInput" />
<div id="apiSelect" tabindex="-1" style="display: none;"></div>
</div>
</div>
<div class="setContent" style="margin-top: 83px;">
<div class="setTitle" data-i18n-key="aiKey"></div>
<div class="setDetail inputDetail apiDetail">
<input class="inputTextClass" type="text" placeholder="sk-xxxxxx" id="keyInput"
autocomplete="off" style="-webkit-text-security: disc;" />
<div id="checkBillBtn" class="loaded">
<span data-i18n-key="checkBill"></span>
<svg style="margin:0 auto;height:34px;width:100%;">
<use xlink:href="#loadingIcon"></use>
</svg>
</div>
</div>
</div>
<div class="setContent" id="quotaContent" style="display: none;">
<div class="setTitle" id="quotaTitle" data-i18n-quota></div>
<div class="setDetail">
<div class="progressBar">
<div class="nowProgress" id="usedQuotaBar"></div>
</div>
<div class="progressDetail">
<div><span data-i18n-key="used"></span><span id="usedQuota"></span></div>
<div><span data-i18n-key="available"></span><span id="availableQuota"></span></div>
</div>
</div>
</div>
</div>
<div id="hotkeyOption" style="display: none;">
<div class="setContent">
<div class="setTitle">UI</div>
<div class="setDetail hotKeyDetail">
<div>
<label for="hotKeyNav" data-i18n-key="navKey"></label>
<select id="hotKeyNav">
</select>
</div>
<div>
<label for="hotKeyWindow" data-i18n-key="fullKey"></label>
<select id="hotKeyWindow">
</select>
</div>
<div>
<label for="hotKeyTheme" data-i18n-key="themeKey"></label>
<select id="hotKeyTheme">
</select>
</div>
<div>
<label for="hotKeyLang" data-i18n-key="langKey"></label>
<select id="hotKeyLang">
</select>
</div>
</div>
<div class="setTitle" data-i18n-key="chat"></div>
<div class="setDetail hotKeyDetail">
<div>
<label for="hotKeySearch" data-i18n-key="search"></label>
<select id="hotKeySearch">
</select>
</div>
<div>
<label for="hotKeyInput" data-i18n-key="inputKey"></label>
<select id="hotKeyInput">
</select>
</div>
<div>
<label for="hotKeyNewChat" data-i18n-key="newChat"></label>
<select id="hotKeyNewChat">
</select>
</div>
<div>
<label for="hotKeyClearChat" data-i18n-key="clearChat"></label>
<select id="hotKeyClearChat">
</select>
</div>
</div>
<div class="setTitle" data-i18n-key="voiceKey"></div>
<div class="setDetail hotKeyDetail">
<div style="display: none;">
<label for="hotKeyVoiceRec" data-i18n-key="recKey"></label>
<select id="hotKeyVoiceRec">
</select>
</div>
<div>
<label for="hotKeyVoiceSpeak" data-i18n-key="speechKey"></label>
<select id="hotKeyVoiceSpeak">
</select>
</div>
</div>
</div>
</div>
<div id="dataOption" style="display: none;">
<div class="setContent">
<div class="setTitle" data-i18n-key="chat"></div>
<div class="setDetail dataDetail">
<div id="exportChat">
<svg width="24" height="24">
<use xlink:href="#exportIcon" />
</svg>
<span data-i18n-key="export"></span>
</div>
<label id="importChat" for="importChatInput">
<svg width="24" height="24">
<use xlink:href="#importIcon" />
</svg>
<span data-i18n-key="import"></span>
</label>
<input type="file" style="display: none;" id="importChatInput"
accept="application/json" />
<div id="clearChatSet">
<svg width="24" height="24">
<use xlink:href="#clearAllIcon" />
</svg>
<span data-i18n-key="clear"></span>
</div>
</div>
</div>
<div class="setContent">
<div class="setTitle" data-i18n-key="setting"></div>
<div class="setDetail dataDetail">
<div id="exportSet">
<svg width="24" height="24">
<use xlink:href="#exportSetIcon" />
</svg>
<span data-i18n-key="export"></span>
</div>
<label id="importSet" for="importSetInput">
<svg width="24" height="24">
<use xlink:href="#importSetIcon" />
</svg>
<span data-i18n-key="import"></span>
</label>
<input type="file" style="display: none;" id="importSetInput"
accept="application/json" />
<div id="resetSet">
<svg width="22" height="22" style="transform: scaleX(-1)">
<use xlink:href="#refreshIcon" />
</svg>
<span data-i18n-key="reset"></span>
</div>
</div>
</div>
<div class="setContent">
<div class="setTitle" data-i18n-key="localStore"></div>
<div class="setDetail">
<div class="progressBar">
<div class="nowProgress" id="usedStorageBar"></div>
</div>
<div class="progressDetail">
<div><span data-i18n-key="used"></span><span id="usedStorage"></span></div>
<div><span data-i18n-key="available"></span><span id="availableStorage"></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="custom-menu">
<li href="#" id="menu_appendAsk" onclick="askForExplanation()" >追问详解</li>
<li href="#" id="menu_copy" onclick="copyText()">复制文本</li>
<li href="#" id="menu_serch" onclick="searchOnBaidu()">网络搜索</li>
</div>
<link crossorigin="anonymous" href="//cdn.staticfile.org/github-markdown-css/5.2.0/github-markdown-light.min.css" rel="stylesheet">
<link crossorigin="anonymous" href="//cdn.staticfile.org/notyf/3.10.0/notyf.min.css" rel="stylesheet">
<script crossorigin="anonymous" src="//cdn.staticfile.org/notyf/3.10.0/notyf.min.js"></script>
<script src="scripts/serviceWorker.js"></script>
<script src="env.js"></script>
<script src="scripts/locale.js"></script>
<script src="scripts/voice.js"></script>
<script crossorigin="anonymous" src="//cdn.staticfile.org/markdown-it/13.0.1/markdown-it.min.js"></script>
<script crossorigin="anonymous" src="//cdn.staticfile.org/highlight.js/11.8.0/highlight.min.js"></script>
<script crossorigin="anonymous" src="//cdn.staticfile.org/KaTeX/0.16.7/katex.min.js"></script>
<script crossorigin="anonymous" src="//npm.elemecdn.com/markdown-it-texmath@1.0.0/texmath.js"></script>
<script crossorigin="anonymous" src="//npm.elemecdn.com/markdown-it-link-attributes@4.0.1/dist/markdown-it-link-attributes.min.js"></script>
<script src="scripts/api.js"></script>
<link crossorigin="anonymous" href="//cdn.staticfile.org/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet">
<link crossorigin="anonymous" href="//cdn.staticfile.org/KaTeX/0.16.7/katex.min.css" rel="stylesheet">
<link crossorigin="anonymous" href="//npm.elemecdn.com/markdown-it-texmath@1.0.0/css/texmath.css" rel="stylesheet">
<script src="scripts/onlineRoles.js" defer></script>
<script src="scripts/popupMenu.js"></script>
<!-- 修改markdown中的hljs-string 字体颜色 -->
<style>
.hljs-string{
color: darkgreen;
}
</style>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化