Spaces:
Running
Running
Deploy TensorBend — minified + obfuscated
Browse files- assets/gpu-ops-CgR4iK87.js +0 -0
- assets/main-CSqvdzRW.js +0 -0
- assets/qwen35-model-DHin-Xw8.js +0 -0
- assets/safetensors-loader-CNnqzt-J.js +1 -0
- index.html +250 -18
assets/gpu-ops-CgR4iK87.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/main-CSqvdzRW.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/qwen35-model-DHin-Xw8.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/safetensors-loader-CNnqzt-J.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
const a0_0x5230d8=a0_0x344a;(function(_0x1a8a9c,_0x5cded0){const _0x4bc931=a0_0x344a,_0x42f126=_0x1a8a9c();while(!![]){try{const _0x4d9da8=-parseInt(_0x4bc931(0x1bd))/0x1*(-parseInt(_0x4bc931(0x1ac))/0x2)+-parseInt(_0x4bc931(0x1ca))/0x3*(parseInt(_0x4bc931(0x1a3))/0x4)+-parseInt(_0x4bc931(0x1b9))/0x5*(parseInt(_0x4bc931(0x1c7))/0x6)+parseInt(_0x4bc931(0x1a7))/0x7+parseInt(_0x4bc931(0x200))/0x8*(-parseInt(_0x4bc931(0x1c2))/0x9)+-parseInt(_0x4bc931(0x1ee))/0xa*(-parseInt(_0x4bc931(0x1d5))/0xb)+-parseInt(_0x4bc931(0x1f1))/0xc*(-parseInt(_0x4bc931(0x1eb))/0xd);if(_0x4d9da8===_0x5cded0)break;else _0x42f126['push'](_0x42f126['shift']());}catch(_0x39730d){_0x42f126['push'](_0x42f126['shift']());}}}(a0_0x2fd4,0xe9ba2));const B=a0_0x5230d8(0x1d7),k=a0_0x5230d8(0x1aa);async function O(_0x4c6e5c,_0x3149c7,_0x5477f1=a0_0x5230d8(0x1fa)){const _0x3a5981=a0_0x5230d8,_0x1b4bfd=B+'/'+_0x4c6e5c+'/resolve/'+_0x5477f1+'/'+_0x3149c7,_0x18e9c6=await fetch(_0x1b4bfd);if(!_0x18e9c6['ok'])throw new Error(_0x3a5981(0x1c8)+_0x3149c7+':\x20'+_0x18e9c6[_0x3a5981(0x1e0)]);return _0x18e9c6[_0x3a5981(0x1e8)]();}async function T(_0x57dcb7,_0x5d2237){const _0xab055b=a0_0x5230d8;try{const _0x2b2023=await(await caches[_0xab055b(0x1d0)](k))[_0xab055b(0x1a8)](_0x57dcb7);if(_0x2b2023){const _0x3cc555=await _0x2b2023[_0xab055b(0x1c3)](),_0x3645b4={};return _0x3645b4[_0xab055b(0x1d2)]=_0x3cc555[_0xab055b(0x1a5)],_0x3645b4[_0xab055b(0x1f2)]=_0x3cc555[_0xab055b(0x1a5)],_0x3645b4[_0xab055b(0x1b1)]=!0x0,(_0x5d2237?.(_0x3645b4),_0x3cc555);}}catch{}const _0x383e8d=await fetch(_0x57dcb7);if(!_0x383e8d['ok'])throw new Error(_0xab055b(0x1c8)+_0x57dcb7+':\x20'+_0x383e8d[_0xab055b(0x1e0)]);let _0x219d54=null;try{_0x219d54=(await caches[_0xab055b(0x1d0)](k))[_0xab055b(0x1e4)](_0x57dcb7,_0x383e8d[_0xab055b(0x1f9)]());}catch{}const _0x1f83e9=+_0x383e8d[_0xab055b(0x1c1)][_0xab055b(0x1af)](_0xab055b(0x1d8))||0x0,_0x8ace23=_0x383e8d[_0xab055b(0x1f4)][_0xab055b(0x1a6)]();let _0xb50668=0x0,_0x30413f;if(_0x1f83e9>0x0)for(_0x30413f=new Uint8Array(_0x1f83e9);;){const {done:_0x153e46,value:_0x54ddb8}=await _0x8ace23[_0xab055b(0x1b7)]();if(_0x153e46)break;_0x30413f[_0xab055b(0x1fc)](_0x54ddb8,_0xb50668),_0xb50668+=_0x54ddb8[_0xab055b(0x1a5)],_0x5d2237?.({'loaded':_0xb50668,'total':_0x1f83e9});}else{const _0x3c3d81=[];for(;;){const {done:_0x19a5c6,value:_0xd737e}=await _0x8ace23['read']();if(_0x19a5c6)break;_0x3c3d81['push'](_0xd737e),_0xb50668+=_0xd737e[_0xab055b(0x1a5)],_0x5d2237?.({'loaded':_0xb50668,'total':_0xb50668});}_0x30413f=new Uint8Array(_0xb50668);let _0x4f7685=0x0;for(const _0x5aada5 of _0x3c3d81)_0x30413f[_0xab055b(0x1fc)](_0x5aada5,_0x4f7685),_0x4f7685+=_0x5aada5['byteLength'];}if(_0x219d54)try{await _0x219d54;}catch{}return _0x30413f[_0xab055b(0x1ab)];}function C(_0x368f2a){const _0x34ed11=a0_0x5230d8,_0x5474c7=new DataView(_0x368f2a),_0x529a05=Number(_0x5474c7[_0x34ed11(0x1bc)](0x0,!0x0)),_0x232cd8=new Uint8Array(_0x368f2a,0x8,_0x529a05),_0x1bdc5e=new TextDecoder()['decode'](_0x232cd8),_0x1a6e9b=JSON[_0x34ed11(0x1cc)](_0x1bdc5e),_0x32a5b0=0x8+_0x529a05,_0x152a4b={};for(const [_0x730f37,_0x17084b]of Object[_0x34ed11(0x1f6)](_0x1a6e9b))_0x730f37!==_0x34ed11(0x1dd)&&(_0x152a4b[_0x730f37]={'dtype':_0x17084b[_0x34ed11(0x1ad)],'shape':_0x17084b['shape'],'data':new Uint8Array(_0x368f2a,_0x32a5b0+_0x17084b[_0x34ed11(0x1fe)][0x0],_0x17084b[_0x34ed11(0x1fe)][0x1]-_0x17084b[_0x34ed11(0x1fe)][0x0])});return _0x152a4b;}const I=0x2*0x400*0x400*0x400-0x4*0x400*0x400,j=0x200*0x400*0x400;async function L(_0x37d027){const _0x10b82f=a0_0x5230d8,_0x529d74={};_0x529d74['Range']=_0x10b82f(0x1ba);const _0x293d80={};_0x293d80[_0x10b82f(0x1c1)]=_0x529d74;const _0x5a57a5=await(await fetch(_0x37d027,_0x293d80))['arrayBuffer'](),_0x4f3609=Number(new DataView(_0x5a57a5)[_0x10b82f(0x1bc)](0x0,!0x0)),_0x51fd0e=await(await fetch(_0x37d027,{'headers':{'Range':_0x10b82f(0x1b5)+(0x7+_0x4f3609)}}))[_0x10b82f(0x1c3)](),_0x402c47=new TextDecoder()[_0x10b82f(0x1c6)](new Uint8Array(_0x51fd0e)),_0x2475f4=JSON['parse'](_0x402c47),_0x1c9b40=0x8+_0x4f3609,_0x2339fd={};return _0x2339fd[_0x10b82f(0x1f0)]=_0x2475f4,_0x2339fd['dataOffset']=_0x1c9b40,_0x2339fd;}async function F(_0x30bfa8,_0xa5c83f,_0x40d834){const _0x26ac23=a0_0x5230d8,{header:_0x4c98e5,dataOffset:_0x58cc68}=await L(_0x30bfa8),_0x1d95a6=[];for(const [_0x882b0f,_0x290f3b]of Object[_0x26ac23(0x1f6)](_0x4c98e5))_0x882b0f!==_0x26ac23(0x1dd)&&_0x1d95a6['push']({'name':_0x882b0f,'dtype':_0x290f3b[_0x26ac23(0x1ad)],'shape':_0x290f3b[_0x26ac23(0x1e3)],'absStart':_0x58cc68+_0x290f3b[_0x26ac23(0x1fe)][0x0],'absEnd':_0x58cc68+_0x290f3b[_0x26ac23(0x1fe)][0x1],'size':_0x290f3b[_0x26ac23(0x1fe)][0x1]-_0x290f3b[_0x26ac23(0x1fe)][0x0]});_0x1d95a6['sort']((_0x16c1e7,_0x4c4acf)=>_0x16c1e7[_0x26ac23(0x1ec)]-_0x4c4acf[_0x26ac23(0x1ec)]);const _0x5dadd8=[],_0x907b74=[],_0x2dd642={};_0x2dd642[_0x26ac23(0x1f5)]=[],_0x2dd642['start']=_0x1d95a6[0x0]?.[_0x26ac23(0x1ec)]||0x0,_0x2dd642['end']=0x0,_0x2dd642[_0x26ac23(0x1d3)]=0x0;let _0x4f9d98=_0x2dd642;for(const _0x70811f of _0x1d95a6){if(_0x70811f['size']>I){const _0x22bb41={};_0x22bb41[_0x26ac23(0x1f5)]=[],_0x22bb41['start']=0x0,_0x22bb41['end']=0x0,_0x22bb41['size']=0x0,(_0x4f9d98['tensors'][_0x26ac23(0x1cf)]>0x0&&(_0x4f9d98[_0x26ac23(0x1b0)]=_0x4f9d98['tensors'][_0x4f9d98['tensors'][_0x26ac23(0x1cf)]-0x1][_0x26ac23(0x1ae)],_0x5dadd8[_0x26ac23(0x1b6)](_0x4f9d98)),_0x907b74[_0x26ac23(0x1b6)](_0x70811f),_0x4f9d98=_0x22bb41);continue;}_0x4f9d98['tensors'][_0x26ac23(0x1cf)]===0x0&&(_0x4f9d98[_0x26ac23(0x1c9)]=_0x70811f[_0x26ac23(0x1ec)]),_0x70811f[_0x26ac23(0x1ae)]-_0x4f9d98[_0x26ac23(0x1c9)]>j&&_0x4f9d98['tensors'][_0x26ac23(0x1cf)]>0x0&&(_0x4f9d98['end']=_0x4f9d98[_0x26ac23(0x1f5)][_0x4f9d98['tensors'][_0x26ac23(0x1cf)]-0x1]['absEnd'],_0x5dadd8[_0x26ac23(0x1b6)](_0x4f9d98),_0x4f9d98={'tensors':[],'start':_0x70811f[_0x26ac23(0x1ec)],'end':0x0,'size':0x0}),_0x4f9d98[_0x26ac23(0x1f5)][_0x26ac23(0x1b6)](_0x70811f);}_0x4f9d98[_0x26ac23(0x1f5)]['length']>0x0&&(_0x4f9d98[_0x26ac23(0x1b0)]=_0x4f9d98[_0x26ac23(0x1f5)][_0x4f9d98[_0x26ac23(0x1f5)][_0x26ac23(0x1cf)]-0x1][_0x26ac23(0x1ae)],_0x5dadd8[_0x26ac23(0x1b6)](_0x4f9d98));let _0x2f7f30=0x0;const _0x59df2b=_0x1d95a6[_0x26ac23(0x1cf)]>0x0?_0x1d95a6[_0x1d95a6[_0x26ac23(0x1cf)]-0x1][_0x26ac23(0x1ae)]-_0x1d95a6[0x0]['absStart']:0x0;let _0x476a11=null;try{_0x476a11=await caches[_0x26ac23(0x1d0)](k);}catch{}for(const _0x378622 of _0x5dadd8){const _0x20223a=_0x378622[_0x26ac23(0x1c9)],_0x2bd7a4=_0x378622[_0x26ac23(0x1b0)],_0x264d69=_0x2bd7a4-_0x20223a,_0x3774fb=_0x30bfa8+'?_tbr='+_0x20223a+'-'+_0x2bd7a4;let _0x5b0712,_0x3d8210=!0x1;if(_0x476a11)try{const _0x334922=await _0x476a11[_0x26ac23(0x1a8)](_0x3774fb);_0x334922&&(_0x5b0712=new Uint8Array(await _0x334922[_0x26ac23(0x1c3)]()),_0x2f7f30+=_0x264d69,_0xa5c83f?.({'loaded':_0x2f7f30,'total':_0x59df2b,'cached':!0x0}),_0x3d8210=!0x0);}catch{}if(!_0x3d8210){const _0x4f0c92={};_0x4f0c92[_0x26ac23(0x1db)]=_0x26ac23(0x1ed)+_0x20223a+'-'+(_0x2bd7a4-0x1);const _0x14fb76={};_0x14fb76[_0x26ac23(0x1c1)]=_0x4f0c92;const _0x1667a9=await fetch(_0x30bfa8,_0x14fb76);if(!_0x1667a9['ok']&&_0x1667a9['status']!==0xce)throw new Error(_0x26ac23(0x1b8)+_0x1667a9[_0x26ac23(0x1e0)]);const _0x838e20=_0x1667a9['body'][_0x26ac23(0x1a6)]();_0x5b0712=new Uint8Array(_0x264d69);let _0x52022f=0x0;for(;;){const {done:_0x332cea,value:_0x2ffb93}=await _0x838e20[_0x26ac23(0x1b7)]();if(_0x332cea)break;_0x5b0712[_0x26ac23(0x1fc)](_0x2ffb93,_0x52022f),_0x52022f+=_0x2ffb93['byteLength'],_0x2f7f30+=_0x2ffb93['byteLength'],_0xa5c83f?.({'loaded':_0x2f7f30,'total':_0x59df2b});}if(_0x476a11)try{await _0x476a11[_0x26ac23(0x1e4)](_0x3774fb,new Response(_0x5b0712));}catch{}}const _0x3ee31a={};for(const _0x3b727e of _0x378622['tensors']){const _0x5009b5=_0x3b727e[_0x26ac23(0x1ec)]-_0x20223a;_0x3ee31a[_0x3b727e[_0x26ac23(0x1da)]]={'dtype':_0x3b727e[_0x26ac23(0x1ad)],'shape':_0x3b727e[_0x26ac23(0x1e3)],'data':new Uint8Array(_0x5b0712[_0x26ac23(0x1ab)],_0x5009b5,_0x3b727e['size'])};}_0x40d834&&await _0x40d834(_0x3ee31a),await new Promise(_0x4c106e=>setTimeout(_0x4c106e,0x0));}for(const _0x11e9eb of _0x907b74){const _0xc63d81=j;let _0xa53b74=0x0;for(;_0xa53b74<_0x11e9eb[_0x26ac23(0x1d3)];){const _0x13f810=_0x11e9eb['size']-_0xa53b74,_0x1073fc=Math['min'](_0xc63d81,_0x13f810),_0x50c2ae=_0x11e9eb[_0x26ac23(0x1ec)]+_0xa53b74,_0x298773=_0x50c2ae+_0x1073fc,_0x20ad95=_0x30bfa8+_0x26ac23(0x1c4)+_0x50c2ae+'-'+_0x298773;let _0x1e54e3,_0xfb9c1c=!0x1;if(_0x476a11)try{const _0x287aaf=await _0x476a11['match'](_0x20ad95);_0x287aaf&&(_0x1e54e3=new Uint8Array(await _0x287aaf[_0x26ac23(0x1c3)]()),_0x2f7f30+=_0x1073fc,_0xa5c83f?.({'loaded':_0x2f7f30,'total':_0x59df2b,'cached':!0x0}),_0xfb9c1c=!0x0);}catch{}if(!_0xfb9c1c){const _0x14b48a={};_0x14b48a[_0x26ac23(0x1db)]=_0x26ac23(0x1ed)+_0x50c2ae+'-'+(_0x298773-0x1);const _0x2d1348={};_0x2d1348[_0x26ac23(0x1c1)]=_0x14b48a;const _0x35ae0d=await fetch(_0x30bfa8,_0x2d1348);if(!_0x35ae0d['ok']&&_0x35ae0d[_0x26ac23(0x1e0)]!==0xce)throw new Error(_0x26ac23(0x1b8)+_0x35ae0d[_0x26ac23(0x1e0)]);const _0x131f44=_0x35ae0d['body'][_0x26ac23(0x1a6)]();_0x1e54e3=new Uint8Array(_0x1073fc);let _0x11e229=0x0;for(;;){const {done:_0x5e73e5,value:_0x22f926}=await _0x131f44[_0x26ac23(0x1b7)]();if(_0x5e73e5)break;_0x1e54e3[_0x26ac23(0x1fc)](_0x22f926,_0x11e229),_0x11e229+=_0x22f926['byteLength'],_0x2f7f30+=_0x22f926[_0x26ac23(0x1a5)],_0xa5c83f?.({'loaded':_0x2f7f30,'total':_0x59df2b});}if(_0x476a11)try{await _0x476a11[_0x26ac23(0x1e4)](_0x20ad95,new Response(_0x1e54e3));}catch{}}if(_0x40d834){const _0x388a2f={};_0x388a2f[_0x11e9eb[_0x26ac23(0x1da)]]={'dtype':_0x11e9eb['dtype'],'shape':_0x11e9eb[_0x26ac23(0x1e3)],'data':_0x1e54e3,'_partial':{'offset':_0xa53b74,'totalSize':_0x11e9eb[_0x26ac23(0x1d3)]}},await _0x40d834(_0x388a2f);}_0xa53b74+=_0x1073fc,await new Promise(_0x4b7fac=>setTimeout(_0x4b7fac,0x0));}}}async function N(_0x20845d,_0x4dc303,{revision:_0x274b89=a0_0x5230d8(0x1fa),onShard:_0x492f34=null}={}){const _0x4a1c9f=a0_0x5230d8;let _0x22c009;try{const _0x8e4957=await O(_0x20845d,_0x4a1c9f(0x1e9),_0x274b89);_0x22c009={};for(const [_0x590025,_0xfa0ad9]of Object[_0x4a1c9f(0x1f6)](_0x8e4957[_0x4a1c9f(0x1de)]))_0x22c009[_0xfa0ad9]||(_0x22c009[_0xfa0ad9]=[]),_0x22c009[_0xfa0ad9][_0x4a1c9f(0x1b6)](_0x590025);}catch{const _0x362206={};_0x362206['model.safetensors']=null,_0x22c009=_0x362206;}const _0x324a33=Object['keys'](_0x22c009),_0x134dde={};let _0x192735=0x0;const _0x3a4e2c=_0x324a33[_0x4a1c9f(0x1cf)],_0x5d0a3f={};let _0x16c411=0x0;for(const _0x239f97 of _0x324a33)_0x5d0a3f[_0x239f97]={'loaded':0x0,'total':0x0};function _0x2d37b1(){const _0x95b552=_0x4a1c9f;let _0x604654=0x0,_0x507db9=0x0;for(const _0x47351a of Object[_0x95b552(0x1f3)](_0x5d0a3f))_0x604654+=_0x47351a[_0x95b552(0x1d2)],_0x507db9+=_0x47351a[_0x95b552(0x1f2)];const _0x4f23bf={};_0x4f23bf[_0x95b552(0x1a4)]=_0x95b552(0x1dc),_0x4f23bf['file']=_0x192735+'/'+_0x3a4e2c+_0x95b552(0x1ea),_0x4f23bf[_0x95b552(0x1d2)]=_0x604654,_0x4f23bf[_0x95b552(0x1f2)]=_0x507db9,_0x4f23bf[_0x95b552(0x1fb)]=_0x192735,_0x4f23bf[_0x95b552(0x1d1)]=_0x3a4e2c,_0x4f23bf['cachedCount']=_0x16c411,_0x4dc303?.(_0x4f23bf);}for(const _0x2466ec of _0x324a33){const _0x251ae1=B+'/'+_0x20845d+_0x4a1c9f(0x1df)+_0x274b89+'/'+_0x2466ec;let _0x2f5f01=0x0;try{const _0x26d032={};_0x26d032['method']=_0x4a1c9f(0x1be),_0x2f5f01=+(await fetch(_0x251ae1,_0x26d032))['headers'][_0x4a1c9f(0x1af)]('content-length')||0x0;}catch{}if(_0x2f5f01>I&&_0x492f34)_0x5d0a3f[_0x2466ec]={'loaded':0x0,'total':_0x2f5f01},_0x2d37b1(),await F(_0x251ae1,_0x17d85f=>{const _0x5257d1=_0x4a1c9f;_0x17d85f[_0x5257d1(0x1b1)]&&_0x16c411++,_0x5d0a3f[_0x2466ec]={'loaded':_0x17d85f[_0x5257d1(0x1d2)],'total':_0x17d85f['total']||_0x2f5f01},_0x2d37b1();},_0x492f34),_0x192735++,_0x2d37b1();else{let _0x586a25=!0x1,_0xa98d10=await T(_0x251ae1,_0x113476=>{const _0x5a6b57=_0x4a1c9f;_0x113476['cached']&&!_0x586a25&&(_0x16c411++,_0x586a25=!0x0),_0x5d0a3f[_0x2466ec]={'loaded':_0x113476[_0x5a6b57(0x1d2)],'total':_0x113476[_0x5a6b57(0x1f2)]},_0x2d37b1();});const _0x2c0443={};_0x2c0443[_0x4a1c9f(0x1a4)]='parsing',_0x2c0443[_0x4a1c9f(0x1d9)]=_0x2466ec,_0x4dc303?.(_0x2c0443);let _0x510e9f=C(_0xa98d10);_0x192735++,_0x2d37b1(),_0x492f34?(await _0x492f34(_0x510e9f),_0x510e9f=null,_0xa98d10=null,await new Promise(_0x216e68=>setTimeout(_0x216e68,0x0))):Object[_0x4a1c9f(0x1ef)](_0x134dde,_0x510e9f);}}const _0x55fb95={};return _0x55fb95[_0x4a1c9f(0x1a4)]=_0x4a1c9f(0x1e7),_0x55fb95[_0x4a1c9f(0x1fb)]=_0x192735,_0x55fb95['filesTotal']=_0x3a4e2c,(_0x4dc303?.(_0x55fb95),_0x134dde);}async function D(_0x46eea2,_0x338b94=a0_0x5230d8(0x1fa)){return O(_0x46eea2,'config.json',_0x338b94);}function a0_0x2fd4(){const _0x3bf769=['nde1mKLLs0Puwq','Dg90ywW','DMfSDwvZ','yM9KEq','DgvUC29YCW','zw50CMLLCW','rJy0','BxrWlG','y2XVBMu','BwfPBG','zMLSzxnmB2fKzwq','C2v0','BxrWx2LUAxq','zgf0yv9VzMzZzxrZ','rJe2','mtKZmZy4DwjsDNPn','oeX3uvfHyW','CgHHC2u','yNL0zuXLBMD0Aa','z2v0uMvHzgvY','otiZody2m1PqEvnozG','Bwf0y2G','C3rHCNrZv2L0Aa','DgvUC29YyMvUzc1ZywzLDgvUC29YCY12mq','yNvMzMvY','mNDlDgryza','zhr5Cgu','ywjZrw5K','z2v0','zw5K','y2fJAgvK','CxvHBNrPEMf0Aw9Ux2nVBMzPzW','tM8GtvrqihrLBNnVCNmGzM91BMqGAw4G','ste2','yNL0zxm9oc0','ChvZAa','CMvHza','uMfUz2uGCMvXDwvZDcbMywLSzwq6ia','nJmXnZG1nuXtDxzqvq','yNL0zxm9mc03','sty0','z2v0qMLNvwLUDdy0','mJyWmZy0y2nMy3bW','sevbra','qKyXnG','stmY','AgvHzgvYCW','ntmXtNbVB2vJ','yxjYyxLcDwzMzxi','p190yNi9','BxrWx2rVD25SB2fKAw5N','zgvJB2rL','nNLKCwzcvq','rMfPBgvKihrVigzLDgnOia','C3rHCNq','mti2mZCYnNrRyvfzCG','A2v5CW','CgfYC2u','rJmY','BxrWx2rVBMu','BgvUz3rO','B3bLBG','zMLSzxnuB3rHBa','Bg9HzgvK','C2L6zq','zMLSDgvY','otCZmZu4mvHuAhnzsa','y29UzMLNlMPZB24','Ahr0Chm6lY9ODwDNAw5NzMfJzs5JBW','y29UDgvUDc1Szw5NDgG','zMLSzq','BMfTzq','uMfUz2u','zg93BMXVywrPBMC','x19TzxrHzgf0yv9F','D2vPz2H0x21HCa','l3jLC29SDMuV','C3rHDhvZ','CMvSu3rHCNq','ywrK','C2HHCgu','Chv0','qK9pta','CxvHBNrPEMf0Aw9Ux2nVBMzPzY5QC29U','zg9Uzq','ANnVBG','Bw9KzwWUC2fMzxrLBNnVCNmUAw5KzxGUANnVBG','ihnOyxjKCW','nZyWnJn0yuHes3m','ywjZu3rHCNq','yNL0zxm9','mtbQr0HIwLa','yxnZAwDU','AgvHzgvY'];a0_0x2fd4=function(){return _0x3bf769;};return a0_0x2fd4();}async function v(_0x4d0876,_0x192cfc='main'){const _0xfea18d=a0_0x5230d8;try{return await O(_0x4d0876,_0xfea18d(0x1e6),_0x192cfc);}catch{try{return(await O(_0x4d0876,_0xfea18d(0x1d6),_0x192cfc))[_0xfea18d(0x1b2)]||null;}catch{return null;}}}function a0_0x344a(_0x58aafb,_0x52af18){_0x58aafb=_0x58aafb-0x1a3;const _0x2fd4aa=a0_0x2fd4();let _0x344ad3=_0x2fd4aa[_0x58aafb];if(a0_0x344a['fygMsW']===undefined){var _0x310768=function(_0x432934){const _0x5a91c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x156909='',_0x1564af='';for(let _0x69ca0b=0x0,_0x40e7e7,_0x501060,_0x375a92=0x0;_0x501060=_0x432934['charAt'](_0x375a92++);~_0x501060&&(_0x40e7e7=_0x69ca0b%0x4?_0x40e7e7*0x40+_0x501060:_0x501060,_0x69ca0b++%0x4)?_0x156909+=String['fromCharCode'](0xff&_0x40e7e7>>(-0x2*_0x69ca0b&0x6)):0x0){_0x501060=_0x5a91c['indexOf'](_0x501060);}for(let _0x5d86b2=0x0,_0x35ae80=_0x156909['length'];_0x5d86b2<_0x35ae80;_0x5d86b2++){_0x1564af+='%'+('00'+_0x156909['charCodeAt'](_0x5d86b2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1564af);};a0_0x344a['XlgEiy']=_0x310768,a0_0x344a['myzlSr']={},a0_0x344a['fygMsW']=!![];}const _0x4ce300=_0x2fd4aa[0x0],_0x154160=_0x58aafb+_0x4ce300,_0x2aab7e=a0_0x344a['myzlSr'][_0x154160];return!_0x2aab7e?(_0x344ad3=a0_0x344a['XlgEiy'](_0x344ad3),a0_0x344a['myzlSr'][_0x154160]=_0x344ad3):_0x344ad3=_0x2aab7e,_0x344ad3;}async function x(_0x27832b,_0x39537b,_0x1973bf='main'){const _0x5775bf=a0_0x5230d8,_0x534455=await O(_0x27832b,'model.safetensors.index.json',_0x1973bf),_0x4cb73f={},_0xd5d892=new Set();for(const [_0x3b8cc0,_0xc52600]of Object[_0x5775bf(0x1f6)](_0x534455[_0x5775bf(0x1de)]))_0x3b8cc0[_0x5775bf(0x1a9)](_0x5775bf(0x1f8))&&(_0x4cb73f[_0x3b8cc0]=_0xc52600,_0xd5d892[_0x5775bf(0x1e2)](_0xc52600));if(Object[_0x5775bf(0x1cb)](_0x4cb73f)[_0x5775bf(0x1cf)]===0x0)throw new Error(_0x5775bf(0x1b3)+_0x27832b);_0x39537b?.({'phase':_0x5775bf(0x1fd),'count':Object[_0x5775bf(0x1cb)](_0x4cb73f)[_0x5775bf(0x1cf)]});const _0x26b1f5={};for(const _0x3f75e5 of _0xd5d892){const _0x382d5d={};_0x382d5d[_0x5775bf(0x1db)]='bytes=0-7';const _0x14c8d2={};_0x14c8d2[_0x5775bf(0x1c1)]=_0x382d5d;const _0x2b3b62=B+'/'+_0x27832b+_0x5775bf(0x1df)+_0x1973bf+'/'+_0x3f75e5,_0x52997e=await(await fetch(_0x2b3b62,_0x14c8d2))[_0x5775bf(0x1c3)](),_0xf8ae43=Number(new DataView(_0x52997e)[_0x5775bf(0x1bc)](0x0,!0x0)),_0x3e0608=await(await fetch(_0x2b3b62,{'headers':{'Range':_0x5775bf(0x1b5)+(0x7+_0xf8ae43)}}))[_0x5775bf(0x1c3)](),_0x16a880=new TextDecoder()[_0x5775bf(0x1c6)](new Uint8Array(_0x3e0608)),_0x3d1640=JSON[_0x5775bf(0x1cc)](_0x16a880),_0x5de45d=0x8+_0xf8ae43,_0x595905=Object[_0x5775bf(0x1cb)](_0x4cb73f)[_0x5775bf(0x1d4)](_0x259277=>_0x4cb73f[_0x259277]===_0x3f75e5)['map'](_0x3e0777=>{const _0x1387cf=_0x5775bf,_0x329a44=_0x3d1640[_0x3e0777],_0x5cb417={};return _0x5cb417[_0x1387cf(0x1da)]=_0x3e0777,_0x5cb417[_0x1387cf(0x1ad)]=_0x329a44[_0x1387cf(0x1ad)],_0x5cb417[_0x1387cf(0x1e3)]=_0x329a44['shape'],_0x5cb417['absStart']=_0x5de45d+_0x329a44[_0x1387cf(0x1fe)][0x0],_0x5cb417['absEnd']=_0x5de45d+_0x329a44['data_offsets'][0x1],_0x5cb417[_0x1387cf(0x1e1)]=_0x329a44[_0x1387cf(0x1fe)][0x0],_0x5cb417['size']=_0x329a44[_0x1387cf(0x1fe)][0x1]-_0x329a44[_0x1387cf(0x1fe)][0x0],_0x5cb417;})['sort']((_0x484d54,_0x5c9c03)=>_0x484d54[_0x5775bf(0x1ec)]-_0x5c9c03[_0x5775bf(0x1ec)]),_0x71f61e=_0x595905[0x0][_0x5775bf(0x1ec)],_0x40ae0a=_0x595905[_0x595905['length']-0x1]['absEnd'],_0x4035c6=_0x40ae0a-_0x71f61e,_0x2e1bbc={};_0x2e1bbc[_0x5775bf(0x1a4)]=_0x5775bf(0x1c5),_0x2e1bbc['loaded']=0x0,_0x2e1bbc[_0x5775bf(0x1f2)]=_0x4035c6,_0x39537b?.(_0x2e1bbc);const _0xf295aa={};_0xf295aa[_0x5775bf(0x1db)]=_0x5775bf(0x1ed)+_0x71f61e+'-'+(_0x40ae0a-0x1);const _0x50fa7c={};_0x50fa7c['headers']=_0xf295aa;const _0x464b81=await fetch(_0x2b3b62,_0x50fa7c);if(!_0x464b81['ok']&&_0x464b81['status']!==0xce)throw new Error('Range\x20request\x20failed:\x20'+_0x464b81[_0x5775bf(0x1e0)]);const _0x22cf41=_0x464b81[_0x5775bf(0x1f4)][_0x5775bf(0x1a6)](),_0x362f66=new Uint8Array(_0x4035c6);let _0x3604e2=0x0;for(;;){const {done:_0x34ef77,value:_0x2c3040}=await _0x22cf41[_0x5775bf(0x1b7)]();if(_0x34ef77)break;_0x362f66[_0x5775bf(0x1fc)](_0x2c3040,_0x3604e2),_0x3604e2+=_0x2c3040[_0x5775bf(0x1a5)],_0x39537b?.({'phase':_0x5775bf(0x1c5),'loaded':_0x3604e2,'total':_0x4035c6});}for(const _0xbec3c5 of _0x595905){const _0x39f3d9=_0xbec3c5[_0x5775bf(0x1ec)]-_0x71f61e;_0x26b1f5[_0xbec3c5[_0x5775bf(0x1da)]]={'dtype':_0xbec3c5['dtype'],'shape':_0xbec3c5[_0x5775bf(0x1e3)],'data':new Uint8Array(_0x362f66[_0x5775bf(0x1ab)],_0x39f3d9,_0xbec3c5['size'])};}}return _0x39537b?.({'phase':_0x5775bf(0x1ce),'count':Object['keys'](_0x26b1f5)[_0x5775bf(0x1cf)]}),_0x26b1f5;}const a0_0xa38ca9={};a0_0xa38ca9[a0_0x5230d8(0x1cd)]=0x4,a0_0xa38ca9[a0_0x5230d8(0x1ff)]=0x2,a0_0xa38ca9['BF16']=0x2,a0_0xa38ca9[a0_0x5230d8(0x1c0)]=0x4,a0_0xa38ca9[a0_0x5230d8(0x1b4)]=0x2,a0_0xa38ca9['I8']=0x1,a0_0xa38ca9['U8']=0x1,a0_0xa38ca9[a0_0x5230d8(0x1e5)]=0x1,a0_0xa38ca9[a0_0x5230d8(0x1f7)]=0x8,a0_0xa38ca9[a0_0x5230d8(0x1bb)]=0x8;const M=a0_0xa38ca9;function q(_0x54329f){const _0x3ae215=a0_0x5230d8;switch(_0x54329f){case _0x3ae215(0x1cd):return Float32Array;case _0x3ae215(0x1ff):return Uint16Array;case _0x3ae215(0x1bf):return Uint16Array;case _0x3ae215(0x1c0):return Int32Array;case'I16':return Int16Array;case'I8':return Int8Array;case'U8':return Uint8Array;default:return Uint8Array;}}export{M as DTYPE_SIZES,q as dtypeToTypedArray,O as fetchJSON,D as loadConfig,x as loadMTPWeights,N as loadModelWeights,v as loadQuantConfig};
|
index.html
CHANGED
|
@@ -1,19 +1,251 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>TensorBend</title>
|
| 7 |
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
| 8 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
| 9 |
+
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
| 10 |
+
<style>
|
| 11 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 12 |
+
:root {
|
| 13 |
+
--bg-0: #08080a; --bg-1: #0e0e12; --bg-2: #16161d; --bg-3: #1e1e28;
|
| 14 |
+
--accent: #2dd4bf; --accent-hover: #22b8a5; --accent-dim: rgba(45,212,191,0.08);
|
| 15 |
+
--accent-glow: rgba(45,212,191,0.15);
|
| 16 |
+
--text-1: #e8e6e3; --text-2: #8a8693; --text-3: #4a4654;
|
| 17 |
+
--border: #1e1d24; --border-light: #2a2833;
|
| 18 |
+
--font: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 19 |
+
--mono: 'JetBrains Mono', 'SF Mono', monospace;
|
| 20 |
+
--chat-max: 720px;
|
| 21 |
+
}
|
| 22 |
+
html, body { height: 100%; font-family: var(--font); background: var(--bg-0); color: var(--text-1); font-size: 15px; -webkit-font-smoothing: antialiased; }
|
| 23 |
+
input, textarea, button, select { font-family: inherit; font-size: inherit; }
|
| 24 |
+
::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 3px; }
|
| 25 |
+
|
| 26 |
+
.app { display: flex; flex-direction: column; height: 100vh; }
|
| 27 |
+
|
| 28 |
+
/* Top bar */
|
| 29 |
+
.topbar { display: flex; align-items: center; justify-content: space-between; height: 48px; padding: 0 20px; border-bottom: 1px solid var(--border); background: var(--bg-0); flex-shrink: 0; }
|
| 30 |
+
.topbar-left { display: flex; align-items: center; gap: 12px; }
|
| 31 |
+
.topbar-title { font-size: 14px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--accent); }
|
| 32 |
+
.topbar-model { font-size: 13px; color: var(--text-2); font-weight: 500; }
|
| 33 |
+
.topbar-right { display: flex; align-items: center; gap: 10px; }
|
| 34 |
+
.status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); flex-shrink: 0; }
|
| 35 |
+
.status-dot.ready { background: #4ade80; }
|
| 36 |
+
.status-dot.loading, .status-dot.generating { background: var(--accent); animation: pulse 1.2s infinite; }
|
| 37 |
+
.status-dot.error { background: #ef4444; }
|
| 38 |
+
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
|
| 39 |
+
.status-text { font-size: 11px; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; }
|
| 40 |
+
|
| 41 |
+
/* Stats bar */
|
| 42 |
+
.stats-bar { display: flex; align-items: center; justify-content: center; gap: 28px; padding: 7px 20px; border-bottom: 1px solid var(--border); background: var(--bg-1); font-size: 11px; flex-shrink: 0; }
|
| 43 |
+
.stats-bar:empty { display: none; }
|
| 44 |
+
.stat { display: flex; align-items: center; gap: 6px; }
|
| 45 |
+
.stat-label { color: var(--text-3); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; font-size: 10px; }
|
| 46 |
+
.stat-value { color: var(--text-2); font-weight: 600; font-variant-numeric: tabular-nums; font-family: var(--mono); font-size: 12px; }
|
| 47 |
+
.stat-value.highlight { color: var(--accent); font-size: 13px; }
|
| 48 |
+
|
| 49 |
+
/* Chat area */
|
| 50 |
+
.chat-container { flex: 1; overflow-y: auto; }
|
| 51 |
+
.chat-scroll { max-width: var(--chat-max); margin: 0 auto; padding: 32px 20px 20px; display: flex; flex-direction: column; gap: 28px; min-height: 100%; }
|
| 52 |
+
|
| 53 |
+
/* Welcome */
|
| 54 |
+
.welcome { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 18px; padding-bottom: 40px; }
|
| 55 |
+
.welcome h1 { font-size: 36px; font-weight: 700; color: var(--text-1); letter-spacing: -0.03em; display: flex; align-items: baseline; gap: 0; }
|
| 56 |
+
.welcome h1 .brand-dot { color: var(--accent); }
|
| 57 |
+
.experimental-badge { font-family: var(--mono); font-size: 9px; font-weight: 600; color: var(--accent); border: 1px solid rgba(45,212,191,0.3); padding: 3px 8px; border-radius: 3px; letter-spacing: 0.1em; align-self: center; margin-left: 10px; }
|
| 58 |
+
.model-family-badge { font-family: var(--mono); font-size: 9px; font-weight: 600; color: #2dd4bf; border: 1px solid rgba(45,212,191,0.3); padding: 3px 8px; border-radius: 3px; letter-spacing: 0.1em; align-self: center; margin-left: 6px; }
|
| 59 |
+
.badge-row { display: flex; gap: 6px; justify-content: center; }
|
| 60 |
+
.quant-support-badge { font-family: var(--mono); font-size: 9px; font-weight: 600; color: #eab308; border: 1px solid rgba(234,179,8,0.3); padding: 3px 8px; border-radius: 3px; letter-spacing: 0.08em; }
|
| 61 |
+
.welcome p { color: var(--text-2); font-size: 14px; line-height: 1.7; max-width: 480px; }
|
| 62 |
+
.welcome .tagline { font-size: 16px; color: #b8b4bf; font-weight: 400; line-height: 1.65; letter-spacing: -0.005em; }
|
| 63 |
+
.welcome .tagline strong { color: var(--text-1); font-weight: 600; }
|
| 64 |
+
|
| 65 |
+
.welcome .speed-hero { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 2px 0; }
|
| 66 |
+
.welcome .speed-headline { font-family: var(--mono); font-size: 15px; font-weight: 700; color: var(--accent); letter-spacing: 0.06em; text-transform: uppercase; }
|
| 67 |
+
.welcome .speed-context { text-align: center; font-size: 12px; color: var(--text-2); line-height: 1.7; max-width: 420px; letter-spacing: 0.005em; }
|
| 68 |
+
.load-section { margin-top: 12px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
|
| 69 |
+
.repo-input { width: 100%; padding: 11px 32px 11px 14px; border-radius: 8px; border: 1px solid var(--border); background: var(--bg-2); color: var(--text-1); outline: none; font-family: var(--mono); font-size: 13px; box-sizing: border-box; }
|
| 70 |
+
.repo-input:focus { border-color: var(--accent); }
|
| 71 |
+
.repo-dropdown-chevron { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--text-3); font-size: 10px; transition: transform 0.2s; }
|
| 72 |
+
.repo-dropdown-wrapper.open .repo-dropdown-chevron { transform: translateY(-50%) rotate(180deg); }
|
| 73 |
+
.repo-dropdown-wrapper.open .repo-input { border-radius: 8px 8px 0 0; border-color: var(--accent); }
|
| 74 |
+
.btn-load { padding: 11px 28px; border-radius: 8px; border: none; background: var(--accent); color: #fff; font-weight: 600; cursor: pointer; font-size: 14px; transition: background 0.15s; letter-spacing: 0.02em; }
|
| 75 |
+
.btn-load:hover { background: var(--accent-hover); }
|
| 76 |
+
.btn-load:disabled { opacity: 0.4; cursor: not-allowed; }
|
| 77 |
+
|
| 78 |
+
/* Download progress */
|
| 79 |
+
.download-bar { padding: 10px 20px; background: var(--accent-dim); border-bottom: 1px solid var(--border); text-align: center; flex-shrink: 0; }
|
| 80 |
+
.download-text { font-size: 12px; color: var(--text-2); margin-bottom: 6px; }
|
| 81 |
+
.download-track { max-width: 360px; margin: 0 auto; height: 3px; background: var(--border); border-radius: 2px; overflow: hidden; }
|
| 82 |
+
.download-fill { height: 100%; width: 0%; background: var(--accent); border-radius: 2px; transition: width 0.3s; }
|
| 83 |
+
|
| 84 |
+
/* Messages */
|
| 85 |
+
.msg-group { display: flex; flex-direction: column; gap: 4px; }
|
| 86 |
+
.msg-role { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-3); margin-bottom: 4px; }
|
| 87 |
+
.msg-content { line-height: 1.7; font-size: 15px; white-space: pre-wrap; word-wrap: break-word; color: var(--text-1); }
|
| 88 |
+
.msg-content.md-rendered { white-space: normal; }
|
| 89 |
+
.msg-content.md-rendered p { margin: 0 0 0.6em 0; }
|
| 90 |
+
.msg-content.md-rendered p:last-child { margin-bottom: 0; }
|
| 91 |
+
.msg-content.md-rendered h1, .msg-content.md-rendered h2, .msg-content.md-rendered h3,
|
| 92 |
+
.msg-content.md-rendered h4, .msg-content.md-rendered h5, .msg-content.md-rendered h6 {
|
| 93 |
+
margin: 1em 0 0.5em 0; font-weight: 600; color: var(--text-1); line-height: 1.3;
|
| 94 |
+
}
|
| 95 |
+
.msg-content.md-rendered h1 { font-size: 1.4em; }
|
| 96 |
+
.msg-content.md-rendered h2 { font-size: 1.2em; }
|
| 97 |
+
.msg-content.md-rendered h3 { font-size: 1.05em; }
|
| 98 |
+
.msg-content.md-rendered h1:first-child, .msg-content.md-rendered h2:first-child, .msg-content.md-rendered h3:first-child { margin-top: 0; }
|
| 99 |
+
.msg-content.md-rendered code {
|
| 100 |
+
font-family: var(--mono); font-size: 0.88em; padding: 2px 6px;
|
| 101 |
+
background: var(--bg-3); border-radius: 4px; color: var(--accent);
|
| 102 |
+
}
|
| 103 |
+
.msg-content.md-rendered pre {
|
| 104 |
+
margin: 0.6em 0; padding: 12px 14px; background: var(--bg-1); border: 1px solid var(--border);
|
| 105 |
+
border-radius: 6px; overflow-x: auto; line-height: 1.5;
|
| 106 |
+
}
|
| 107 |
+
.msg-content.md-rendered pre code {
|
| 108 |
+
padding: 0; background: none; color: var(--text-1); font-size: 13px;
|
| 109 |
+
}
|
| 110 |
+
.msg-content.md-rendered ul, .msg-content.md-rendered ol {
|
| 111 |
+
margin: 0.4em 0; padding-left: 1.6em;
|
| 112 |
+
}
|
| 113 |
+
.msg-content.md-rendered li { margin: 0.2em 0; }
|
| 114 |
+
.msg-content.md-rendered blockquote {
|
| 115 |
+
margin: 0.6em 0; padding: 8px 14px; border-left: 3px solid var(--border-light);
|
| 116 |
+
color: var(--text-2); background: var(--bg-2); border-radius: 0 4px 4px 0;
|
| 117 |
+
}
|
| 118 |
+
.msg-content.md-rendered table {
|
| 119 |
+
margin: 0.6em 0; border-collapse: collapse; width: 100%; font-size: 14px;
|
| 120 |
+
}
|
| 121 |
+
.msg-content.md-rendered th, .msg-content.md-rendered td {
|
| 122 |
+
padding: 6px 10px; border: 1px solid var(--border); text-align: left;
|
| 123 |
+
}
|
| 124 |
+
.msg-content.md-rendered th { background: var(--bg-2); font-weight: 600; color: var(--text-2); font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em; }
|
| 125 |
+
.msg-content.md-rendered hr { margin: 1em 0; border: none; border-top: 1px solid var(--border); }
|
| 126 |
+
.msg-content.md-rendered a { color: var(--accent); text-decoration: none; }
|
| 127 |
+
.msg-content.md-rendered a:hover { text-decoration: underline; }
|
| 128 |
+
.msg-content.md-rendered strong { font-weight: 600; color: var(--text-1); }
|
| 129 |
+
.msg-content.md-rendered em { font-style: italic; }
|
| 130 |
+
.msg-content.md-rendered del { text-decoration: line-through; color: var(--text-2); }
|
| 131 |
+
.msg-user .msg-role { color: var(--text-2); }
|
| 132 |
+
|
| 133 |
+
/* Thinking block */
|
| 134 |
+
.think-block { margin-bottom: 10px; border-left: 2px solid var(--accent); padding: 10px 14px; background: var(--accent-dim); border-radius: 0 6px 6px 0; }
|
| 135 |
+
.think-toggle { display: flex; align-items: center; gap: 7px; cursor: pointer; user-select: none; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--accent); }
|
| 136 |
+
.think-toggle:hover { opacity: 0.8; }
|
| 137 |
+
.think-arrow { font-size: 9px; transition: transform 0.2s; display: inline-block; }
|
| 138 |
+
.think-arrow.open { transform: rotate(90deg); }
|
| 139 |
+
.think-content { font-size: 13px; color: var(--text-2); line-height: 1.65; white-space: pre-wrap; word-wrap: break-word; margin-top: 8px; overflow-y: auto; max-height: 50vh; transition: max-height 0.3s, margin 0.3s, padding 0.3s; }
|
| 140 |
+
.think-content.collapsed { max-height: 0; margin-top: 0; padding: 0; }
|
| 141 |
+
|
| 142 |
+
/* Tool call block */
|
| 143 |
+
.tool-block { margin-bottom: 10px; border-left: 2px solid #f59e0b; padding: 10px 14px; background: rgba(245,158,11,0.06); border-radius: 0 6px 6px 0; }
|
| 144 |
+
.tool-toggle { display: flex; align-items: center; gap: 7px; cursor: pointer; user-select: none; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: #f59e0b; }
|
| 145 |
+
.tool-toggle:hover { opacity: 0.8; }
|
| 146 |
+
.tool-name { font-family: var(--mono); font-size: 12px; color: #fbbf24; font-weight: 500; text-transform: none; letter-spacing: 0; }
|
| 147 |
+
.tool-content { font-size: 12px; color: var(--text-2); line-height: 1.55; white-space: pre-wrap; word-wrap: break-word; margin-top: 8px; font-family: var(--mono); overflow-y: auto; max-height: 40vh; transition: max-height 0.3s, margin 0.3s, padding 0.3s; }
|
| 148 |
+
.tool-content.collapsed { max-height: 0; margin-top: 0; padding: 0; overflow: hidden; }
|
| 149 |
+
.tool-args { color: var(--text-3); margin-bottom: 6px; }
|
| 150 |
+
.tool-result-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: #f59e0b; margin-top: 8px; margin-bottom: 4px; }
|
| 151 |
+
.tool-result { color: var(--text-2); background: var(--bg-2); padding: 8px 10px; border-radius: 4px; max-height: 30vh; overflow-y: auto; }
|
| 152 |
+
.tool-elapsed { font-size: 10px; color: var(--text-3); margin-top: 6px; font-family: var(--mono); }
|
| 153 |
+
.tool-error { color: #ef4444; }
|
| 154 |
+
|
| 155 |
+
/* Message stats */
|
| 156 |
+
.msg-stats { font-size: 10px; color: var(--text-3); margin-top: 8px; font-family: var(--mono); display: flex; gap: 8px; letter-spacing: 0.02em; }
|
| 157 |
+
.msg-stats .sep { opacity: 0.3; }
|
| 158 |
+
|
| 159 |
+
/* Images */
|
| 160 |
+
.msg-images { display: flex; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
|
| 161 |
+
.msg-img { max-width: 200px; max-height: 200px; border-radius: 6px; object-fit: cover; border: 1px solid var(--border); }
|
| 162 |
+
|
| 163 |
+
/* Image preview */
|
| 164 |
+
.image-preview { display: flex; gap: 6px; padding: 0 20px; flex-wrap: wrap; max-width: var(--chat-max); margin: 0 auto; width: 100%; }
|
| 165 |
+
.image-preview:empty { display: none; }
|
| 166 |
+
.img-thumb { position: relative; width: 52px; height: 52px; border-radius: 6px; overflow: hidden; border: 1px solid var(--border); }
|
| 167 |
+
.img-thumb img { width: 100%; height: 100%; object-fit: cover; }
|
| 168 |
+
.img-remove { position: absolute; top: 2px; right: 2px; width: 16px; height: 16px; border-radius: 50%; border: none; background: rgba(0,0,0,0.8); color: #fff; font-size: 9px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
|
| 169 |
+
|
| 170 |
+
/* Input area */
|
| 171 |
+
.input-wrapper { border-top: 1px solid var(--border); background: var(--bg-0); padding: 14px 20px 22px; flex-shrink: 0; }
|
| 172 |
+
.input-row { max-width: var(--chat-max); margin: 0 auto; display: flex; gap: 8px; align-items: flex-end; position: relative; }
|
| 173 |
+
.input-row textarea { flex: 1; padding: 12px 48px 12px 14px; border-radius: 10px; border: 1px solid var(--border); background: var(--bg-2); color: var(--text-1); outline: none; resize: none; height: 48px; max-height: 160px; line-height: 1.5; font-size: 15px; }
|
| 174 |
+
.input-row textarea:focus { border-color: var(--accent); }
|
| 175 |
+
.input-row textarea:disabled { opacity: 0.4; }
|
| 176 |
+
.send-btn { position: absolute; right: 8px; bottom: 8px; width: 32px; height: 32px; border-radius: 6px; border: none; background: var(--accent); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.15s; }
|
| 177 |
+
.send-btn:hover:not(:disabled) { background: var(--accent-hover); }
|
| 178 |
+
.send-btn:disabled { opacity: 0.2; cursor: not-allowed; }
|
| 179 |
+
.send-btn svg { width: 15px; height: 15px; }
|
| 180 |
+
.img-upload-btn { width: 32px; height: 32px; border-radius: 6px; border: 1px solid var(--border); background: transparent; color: var(--text-3); cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 16px; }
|
| 181 |
+
.img-upload-btn:hover { background: var(--bg-2); color: var(--text-2); }
|
| 182 |
+
.input-hint { text-align: center; font-size: 10px; color: var(--text-3); margin-top: 8px; max-width: var(--chat-max); margin-left: auto; margin-right: auto; text-transform: uppercase; letter-spacing: 0.06em; }
|
| 183 |
+
|
| 184 |
+
/* Clear / Settings buttons */
|
| 185 |
+
.btn-clear, .btn-settings { padding: 4px 10px; border-radius: 5px; border: 1px solid var(--border); background: transparent; color: var(--text-3); font-size: 11px; cursor: pointer; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; display: flex; align-items: center; justify-content: center; }
|
| 186 |
+
.btn-clear:hover, .btn-settings:hover { background: var(--bg-2); color: var(--text-2); }
|
| 187 |
+
.btn-settings { width: 30px; height: 26px; padding: 0; }
|
| 188 |
+
.btn-settings svg { pointer-events: none; }
|
| 189 |
+
|
| 190 |
+
/* Settings panel */
|
| 191 |
+
.settings-panel { padding: 0 20px; background: var(--bg-1); border-bottom: 1px solid var(--border); display: flex; flex-wrap: wrap; gap: 10px 24px; align-items: center; justify-content: center; max-height: 0; overflow: hidden; transition: max-height 0.35s ease, padding 0.35s ease; }
|
| 192 |
+
.settings-panel.open { max-height: 200px; padding: 12px 20px; }
|
| 193 |
+
.settings-row { display: flex; align-items: center; gap: 8px; }
|
| 194 |
+
.settings-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-3); min-width: 56px; white-space: nowrap; }
|
| 195 |
+
.settings-select { padding: 4px 8px; border-radius: 5px; border: 1px solid var(--border); background: var(--bg-2); color: var(--text-1); font-size: 12px; outline: none; cursor: pointer; }
|
| 196 |
+
.settings-select:focus { border-color: var(--accent); }
|
| 197 |
+
.settings-slider { width: 80px; accent-color: var(--accent); height: 4px; cursor: pointer; }
|
| 198 |
+
.settings-val { font-size: 11px; color: var(--text-2); font-family: var(--mono); font-variant-numeric: tabular-nums; min-width: 32px; text-align: right; }
|
| 199 |
+
.settings-divider { width: 1px; height: 20px; background: var(--border); }
|
| 200 |
+
.toggle-btn { padding: 3px 12px; border-radius: 4px; border: 1px solid var(--border); background: var(--bg-3); color: var(--text-3); font-size: 10px; font-weight: 700; letter-spacing: 0.06em; cursor: pointer; transition: all 0.15s; }
|
| 201 |
+
.toggle-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
| 202 |
+
.toggle-btn:hover { border-color: var(--accent); }
|
| 203 |
+
|
| 204 |
+
/* Thinking placeholder while model is reasoning */
|
| 205 |
+
.msg-content[data-thinking="true"]:empty::before { content: "Thinking..."; color: var(--text-3); font-style: italic; animation: thinkPulse 1.5s infinite; }
|
| 206 |
+
@keyframes thinkPulse { 0%, 100% { opacity: 0.6; } 50% { opacity: 0.2; } }
|
| 207 |
+
|
| 208 |
+
/* System prompt textarea */
|
| 209 |
+
.system-prompt-input { width: 100%; padding: 8px 12px; border-radius: 6px; border: 1px solid var(--border); background: var(--bg-2); color: var(--text-1); outline: none; resize: vertical; min-height: 60px; max-height: 200px; font-size: 12px; line-height: 1.5; font-family: var(--font); }
|
| 210 |
+
.system-prompt-input:focus { border-color: var(--accent); }
|
| 211 |
+
.system-prompt-input::placeholder { color: var(--text-3); }
|
| 212 |
+
|
| 213 |
+
/* Model search dropdown */
|
| 214 |
+
.repo-dropdown-wrapper { position: relative; width: 400px; }
|
| 215 |
+
.repo-dropdown { position: absolute; top: 100%; left: 0; right: 0; background: var(--bg-2); border: 1px solid var(--accent); border-top: none; border-radius: 0 0 8px 8px; max-height: 320px; overflow-y: auto; z-index: 100; box-shadow: 0 8px 24px rgba(0,0,0,0.4); }
|
| 216 |
+
.repo-dropdown-item { padding: 10px 14px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 8px; border-bottom: 1px solid rgba(255,255,255,0.04); transition: background 0.1s; }
|
| 217 |
+
.repo-dropdown-item:last-child { border-bottom: none; }
|
| 218 |
+
.repo-dropdown-item:hover, .repo-dropdown-item.active { background: var(--accent-dim); }
|
| 219 |
+
.repo-dropdown-item .model-name { font-family: var(--mono); font-size: 12px; color: var(--text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }
|
| 220 |
+
.repo-dropdown-item .model-meta { font-size: 10px; color: var(--text-3); display: flex; gap: 5px; align-items: center; flex-shrink: 0; }
|
| 221 |
+
.repo-dropdown-item .model-meta .size-badge { background: var(--accent-dim); color: var(--accent); padding: 2px 6px; border-radius: 4px; font-weight: 600; font-size: 10px; min-width: 24px; text-align: center; }
|
| 222 |
+
.repo-dropdown-item .model-meta .quant-badge { padding: 2px 5px; border-radius: 4px; font-weight: 600; font-size: 9px; letter-spacing: 0.03em; }
|
| 223 |
+
.quant-paro { background: #2d1b4e; color: #c084fc; }
|
| 224 |
+
.quant-gptq { background: #1b3a2d; color: #4ade80; }
|
| 225 |
+
.quant-awq { background: #3a2a10; color: #fbbf24; }
|
| 226 |
+
.quant-gguf { background: #1b2d3a; color: #60a5fa; }
|
| 227 |
+
.quant-int4 { background: #2a2a2a; color: #a1a1aa; }
|
| 228 |
+
.repo-dropdown-item .model-meta .meta-size { color: #f59e0b; font-weight: 600; }
|
| 229 |
+
.repo-dropdown-item .model-meta .meta-ctx { color: #60a5fa; font-weight: 600; }
|
| 230 |
+
.repo-dropdown-item .model-meta .cached-badge { background: #064e3b; color: #34d399; padding: 2px 5px; border-radius: 4px; font-weight: 700; font-size: 8px; letter-spacing: 0.05em; }
|
| 231 |
+
.repo-dropdown-item.cached { border-left: 2px solid #34d399; }
|
| 232 |
+
.repo-dropdown-loading { padding: 10px 14px; font-size: 11px; color: var(--text-3); text-align: center; }
|
| 233 |
+
|
| 234 |
+
/* WebGPU warning banner */
|
| 235 |
+
.webgpu-warning { padding: 10px 20px; background: rgba(245,158,11,0.12); border-bottom: 1px solid #f59e0b; color: #f59e0b; font-size: 12px; text-align: center; flex-shrink: 0; }
|
| 236 |
+
|
| 237 |
+
/* Toast */
|
| 238 |
+
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); padding: 10px 20px; border-radius: 6px; font-size: 13px; font-weight: 500; background: var(--bg-2); color: var(--text-1); border: 1px solid var(--border); opacity: 0; transition: all 0.3s; z-index: 1000; max-width: 480px; }
|
| 239 |
+
.toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }
|
| 240 |
+
.toast-error { border-color: #ef4444; color: #ef4444; }
|
| 241 |
+
.toast-success { border-color: var(--accent); color: var(--accent); }
|
| 242 |
+
</style>
|
| 243 |
+
<script type="module" crossorigin src="/assets/main-CSqvdzRW.js"></script>
|
| 244 |
+
<link rel="modulepreload" crossorigin href="/assets/gpu-ops-CgR4iK87.js">
|
| 245 |
+
<link rel="modulepreload" crossorigin href="/assets/qwen35-model-DHin-Xw8.js">
|
| 246 |
+
<link rel="modulepreload" crossorigin href="/assets/safetensors-loader-CNnqzt-J.js">
|
| 247 |
+
</head>
|
| 248 |
+
<body>
|
| 249 |
+
<div id="app"></div>
|
| 250 |
+
</body>
|
| 251 |
</html>
|