This commit is contained in:
2024 committed 2026-03-04 08:36:42 +08:00
1 parent 6d5fe77c5e
commit 7d4472a8ac
1 file changed
+1 -1
+1 -1
View File
@@ -3,5 +3,5 @@ cron: 1 1 1 1 *
*/
const $ = new Env('排行榜投票');
var eTNIuk,XPAc4Q,PWJdMG,s3hVHx6,t6Qbol,c7LnL5,ksVuhz,I018aBU,fUTnea,WLsJQyS,FcOrWWv,ElRbig,mSEw_T2;function qRrY7ZZ(XPAc4Q,PWJdMG,s3hVHx6){for(s3hVHx6=0x0;s3hVHx6<PWJdMG;s3hVHx6++)XPAc4Q.push(XPAc4Q.shift());return XPAc4Q}const EnYZQO=qRrY7ZZ([0x1b6,0x1b7,0x1b5,0x1c5,0x1c2,0x1dd,0x1e4,"\u706B\u7206",0x7530,0x28,0x13,0x205,0x0,null,0x20,0x2,0x1,0x100,0x6,0x3,0x8,0x10,0x4,"undefined","LZString",0xff,0x7,0xd,0xe,0xf,0x58,0x5b,0x1a6,0x80,0x7f,0xdf,0x1f,0x3f,0xef,0xc,0x1ac,0x12,0x1a2,0x1fff,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,"UA",0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,!0x1,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,!0x0,0xeb,0xec,0xed,0xee,0xf0,0xf1,0xf2,0xf3,0xf4," ",0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,"\u8D26\u53F7",0xfb,0xfc,0xfd,0xfe,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108,0x109,0x10a,0x10b,0x10c,0x10d,0x10e,0x10f,0x110,0x111,"1",0x112,0x113,0x114,0x115,0x116,0x117,0x118,0x119,0x11a,0x11b,0x11c,0x11d,0x11e,0x11f,0x120,0x121,0x64,0x122,0x123,0x3e8,0xa,0x124,0x125,0x126,0x127,0x128,0x129,0x12a,0x12b,0x12c,0x12d,0x12e,0x12f,0x130,0x131,0x132,0x133,0x134,0x135,0x136,0x137,0x138,0x139,0x13a,0x13b,0x13c,0x13d,0x13e,0x13f,0x140,0x141,0x142,0x143,0x144,0x145,0x146,0x147,0x148,0x149,0x14a,0x14b,0x14c,0x14d,0x14e,0x14f,0x150,0x151,0x152,0x153,0x154,0x155,0x156,0x157,0x158,0x159,0x15a,0x15b,0x15c,0x15d,0x15e,0x15f,0x160,0x161,0x162,0x163,0x164,0x165,0x166,0x167,0x168,0x169,0x16a,0x16b,0x16c,0x16d,0x16e,0x16f,0x170,0x171,0x172,0x173,0x174,0x175,0x176,0x177,0x178,0x179,0x17a,0x17b,0x17c,0x17d,0x17e,0x17f,0x180,0x181,0x182,0x183,0x184,0x185,0x186,0x187,0x188,0x189,0x18a,0x18b,0x18c,0x18d,0x18e,0x18f,0x190,0x191,0x192,0x193,0x194,0x195,0x196,0x197,0x198,0x199,0x19a,0x19b,0x19c,0x19d,0x19e,0x19f,0x1a0,0x1a1,0x1a3,0x1a4,0x1a5,0x1a7,0x1a8,0x1a9,0x1aa,0x1ab,0x1ad,0x1ae,0x1af,0x1b0,0x1b1,0x1b2],0xc);DLP_Ku(eTNIuk=function(){var XPAc4Q=String.fromCharCode,PWJdMG="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s3hVHx6="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",t6Qbol={},c7LnL5;function ksVuhz(c7LnL5,ksVuhz){if(!t6Qbol[c7LnL5]){var I018aBU;t6Qbol[c7LnL5]={};for(I018aBU=EnYZQO[0x0];I018aBU<c7LnL5.length;I018aBU++)t6Qbol[c7LnL5][c7LnL5.charAt(I018aBU)]=I018aBU}return t6Qbol[c7LnL5][ksVuhz]}c7LnL5={compressToBase64:function(t6Qbol){var ksVuhz;if(EnYZQO[0x1]==t6Qbol)return"";ksVuhz=c7LnL5._compress(t6Qbol,EnYZQO[0x6],function(ksVuhz){return PWJdMG.charAt(ksVuhz)});switch(ksVuhz.length%EnYZQO[0xa]){default:case EnYZQO[0x0]:return ksVuhz;case EnYZQO[0x4]:return ksVuhz+"===";case EnYZQO[0x3]:return ksVuhz+"==";case EnYZQO[0x7]:return ksVuhz+"="}},decompressFromBase64:function(t6Qbol){return EnYZQO[0x1]==t6Qbol?"":""==t6Qbol?EnYZQO[0x1]:c7LnL5._decompress(t6Qbol.length,EnYZQO[0x2],function(c7LnL5){return ksVuhz(PWJdMG,t6Qbol.charAt(c7LnL5))})},compressToUTF16:function(s3hVHx6){return EnYZQO[0x1]==s3hVHx6?"":c7LnL5._compress(s3hVHx6,EnYZQO[0x11],function(t6Qbol){return XPAc4Q(t6Qbol+EnYZQO[0x2])})+EnYZQO[0xaa]},decompressFromUTF16:function(s3hVHx6){return EnYZQO[0x1]==s3hVHx6?"":""==s3hVHx6?EnYZQO[0x1]:c7LnL5._decompress(s3hVHx6.length,0x4000,function(t6Qbol){return s3hVHx6.charCodeAt(t6Qbol)-EnYZQO[0x2]})},compressToUint8Array:function(I018aBU){for(var fUTnea=c7LnL5.compress(I018aBU),WLsJQyS=new Uint8Array(EnYZQO[0x3]*fUTnea.length),FcOrWWv=EnYZQO[0x0],ElRbig=fUTnea.length;FcOrWWv<ElRbig;FcOrWWv++){var mSEw_T2=fUTnea.charCodeAt(FcOrWWv);DLP_Ku(WLsJQyS[EnYZQO[0x3]*FcOrWWv]=mSEw_T2>>>EnYZQO[0x8],WLsJQyS[EnYZQO[0x3]*FcOrWWv+EnYZQO[0x4]]=mSEw_T2%EnYZQO[0x5])}return WLsJQyS},decompressFromUint8Array:function(I018aBU){var fUTnea;if(EnYZQO[0x1]==I018aBU)return c7LnL5.decompress(I018aBU);for(var WLsJQyS=new Array(I018aBU.length/EnYZQO[0x3]),FcOrWWv=EnYZQO[0x0],ElRbig=WLsJQyS.length;FcOrWWv<ElRbig;FcOrWWv++)WLsJQyS[FcOrWWv]=EnYZQO[0x5]*I018aBU[EnYZQO[0x3]*FcOrWWv]+I018aBU[EnYZQO[0x3]*FcOrWWv+EnYZQO[0x4]];fUTnea=[];return WLsJQyS.forEach(function(WLsJQyS){fUTnea.push(XPAc4Q(WLsJQyS))}),c7LnL5.decompress(fUTnea.join(""))},compressToEncodedURIComponent:function(PWJdMG){return EnYZQO[0x1]==PWJdMG?"":c7LnL5._compress(PWJdMG,EnYZQO[0x6],function(t6Qbol){return s3hVHx6.charAt(t6Qbol)})},decompressFromEncodedURIComponent:function(t6Qbol){return EnYZQO[0x1]==t6Qbol?"":""==t6Qbol?EnYZQO[0x1]:(t6Qbol=t6Qbol.replace(/ /g,"+"),c7LnL5._decompress(t6Qbol.length,EnYZQO[0x2],function(c7LnL5){return ksVuhz(s3hVHx6,t6Qbol.charAt(c7LnL5))}))},compress:function(s3hVHx6){return c7LnL5._compress(s3hVHx6,EnYZQO[0x9],funLine truncated
var s5Ht0rD,EcDYZL,HYx1YUC,DaC4jl4,dJidYb,XgMGNM,BUA6wth,iHA7v3,_YXZAn,Zp2GkJ,ksKwG8,eUqVFeG,og7n_C;function zy71PJG(EcDYZL,HYx1YUC,DaC4jl4){for(DaC4jl4=0x0;DaC4jl4<HYx1YUC;DaC4jl4++)EcDYZL.push(EcDYZL.shift());return EcDYZL}const _IAIqok=zy71PJG([0x1a5,0x1a6,0x1a7,0x1a8,0x1a9,0x1ab,0x1ac,0x1ad,0x1ae,0x1af,0x1b0,0x1b3,0x1bb,"\u706B\u7206",0x28,0x13,0x1d8,0x1be,0x1c6,0x7530,"g","&",0x0,null,0x20,0x2,0x1,0x100,0x6,0x3,0x8,0x10,0x4,"undefined","LZString",0xff,0x7,0xd,0xe,0xf,0x58,0x5b,0x1a4,0x80,0x7f,0xdf,0x1f,0x3f,0xef,0xc,0x1aa,0x12,0x1a0,0x53,0x54,0x1fff,0x55,0x56,!0x1,0x57,0x59,0x5a,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,!0x0,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,"UA",0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6," ",0xd7,0xd8,0xd9,0xda,0xdb,0xdc,"\u8D26\u53F7",0xdd,0xde,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xf0,0xf1,0xf2,"1",0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0x101,0x3e8,0xa,0x102,0x103,0x104,0x105,0x106,0x107,0x108,0x109,0x10a,0x10b,0x10c,0x10d,0x10e,0x10f,0x110,0x111,0x112,0x113,0x114,0x115,0x116,0x117,0x118,0x119,0x11a,0x11b,0x11c,0x11d,0x11e,0x11f,0x120,0x121,0x122,0x123,0x124,0x125,0x126,0x127,0x128,0x129,0x12a,0x12b,0x12c,0x12d,0x12e,0x12f,0x130,0x131,0x132,0x133,0x134,0x135,0x136,0x137,0x138,0x139,0x13a,0x13b,0x13c,0x13d,0x13e,0x13f,0x140,0x141,0x142,0x143,0x144,0x145,0x146,0x147,0x148,0x149,0x14a,0x14b,0x14c,0x14d,0x14e,0x14f,0x150,0x151,0x152,0x153,0x154,0x155,0x156,0x157,0x158,0x159,0x15a,0x15b,0x15c,0x15d,0x15e,0x15f,0x160,0x161,0x162,0x163,0x164,0x165,0x166,0x167,0x168,0x169,0x16a,0x16b,0x16c,0x16d,0x16e,0x16f,0x170,0x171,0x172,0x173,0x174,0x175,0x176,0x177,0x178,0x179,0x17a,0x17b,0x17c,0x17d,0x17e,0x17f,0x180,0x181,0x182,0x183,0x184,0x185,0x186,0x187,0x188,0x189,0x18a,0x18b,0x18c,0x18d,0x18e,0x18f,0x190,0x191,0x192,0x193,0x194,0x195,0x196,0x197,0x198,0x199,0x19a,0x19b,0x19c,0x19d,0x19e,0x19f,0x1a1,0x1a2,0x1a3],0x16);WHbW5qG(s5Ht0rD=function(){var EcDYZL=String.fromCharCode,HYx1YUC="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",DaC4jl4="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",dJidYb={},XgMGNM;function BUA6wth(XgMGNM,BUA6wth){if(!dJidYb[XgMGNM]){var iHA7v3;dJidYb[XgMGNM]={};for(iHA7v3=_IAIqok[0x0];iHA7v3<XgMGNM.length;iHA7v3++)dJidYb[XgMGNM][XgMGNM.charAt(iHA7v3)]=iHA7v3}return dJidYb[XgMGNM][BUA6wth]}XgMGNM={compressToBase64:function(dJidYb){var BUA6wth;if(_IAIqok[0x1]==dJidYb)return"";BUA6wth=XgMGNM._compress(dJidYb,_IAIqok[0x6],function(BUA6wth){return HYx1YUC.charAt(BUA6wth)});switch(BUA6wth.length%_IAIqok[0xa]){default:case _IAIqok[0x0]:return BUA6wth;case _IAIqok[0x4]:return BUA6wth+"===";case _IAIqok[0x3]:return BUA6wth+"==";case _IAIqok[0x7]:return BUA6wth+"="}},decompressFromBase64:function(dJidYb){return _IAIqok[0x1]==dJidYb?"":""==dJidYb?_IAIqok[0x1]:XgMGNM._decompress(dJidYb.length,_IAIqok[0x2],function(XgMGNM){return BUA6wth(HYx1YUC,dJidYb.charAt(XgMGNM))})},compressToUTF16:function(DaC4jl4){return _IAIqok[0x1]==DaC4jl4?"":XgMGNM._compress(DaC4jl4,_IAIqok[0x11],function(dJidYb){return EcDYZL(dJidYb+_IAIqok[0x2])})+_IAIqok[0xa3]},decompressFromUTF16:function(DaC4jl4){return _IAIqok[0x1]==DaC4jl4?"":""==DaC4jl4?_IAIqok[0x1]:XgMGNM._decompress(DaC4jl4.length,0x4000,function(dJidYb){return DaC4jl4.charCodeAt(dJidYb)-_IAIqok[0x2]})},compressToUint8Array:function(iHA7v3){for(var _YXZAn=XgMGNM.compress(iHA7v3),Zp2GkJ=new Uint8Array(_IAIqok[0x3]*_YXZAn.length),ksKwG8=_IAIqok[0x0],eUqVFeG=_YXZAn.length;ksKwG8<eUqVFeG;ksKwG8++){var og7n_C=_YXZAn.charCodeAt(ksKwG8);WHbW5qG(Zp2GkJ[_IAIqok[0x3]*ksKwG8]=og7n_C>>>_IAIqok[0x8],Zp2GkJ[_IAIqok[0x3]*ksKwG8+_IAIqok[0x4]]=og7n_C%_IAIqok[0x5])}return Zp2GkJ},decompressFromUint8Array:function(iHA7v3){var _YXZAn;if(_IAIqok[0x1]==iHA7v3)return XgMGNM.decompress(iHA7v3);for(var Zp2GkJ=new Array(iHA7v3.length/_IAIqok[0x3]),ksKwG8=_IAIqok[0x0],eUqVFeG=Zp2GkJ.length;ksKwG8<eUqVFeG;ksKwG8++)Zp2GkJ[ksKwG8]=_IAIqok[0x5]*iHA7v3[_IAIqok[0x3]*ksKwG8]+iHA7v3[_IAIqok[0x3]*ksKwG8+_IAIqok[0x4]];_YXZAn=[];return Zp2GkJ.forEach(function(Zp2GkJ){_YXZAn.push(EcDYZL(Zp2GkJ))}),XgMGNM.decompress(_YXZAn.join(""))},compressToEncodedURIComponent:function(HYx1YUC){return _IAIqok[0x1]==HYx1YUC?"":XgMGNM._compress(HYx1YUC,_IAIqok[0x6],function(dJidYb){return DaC4jl4.charAt(dJidYb)})},decompressFromEncodedURIComponent:function(dJidYb){return _IAIqok[0x1]==dJidYb?"":""==dJidYb?_IAIqok[0x1]:(dJidYb=dJidYb.replace(/ /g,"+"),XgMGNM._decompress(dJidYb.length,_IAIqok[0x2],function(XgMGNM){return BUA6wth(DaLine truncated
function Env(o, t) { class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((r, i) => { s.call(this, t, (t, e, s) => { t ? i(t) : r(e) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.logLevels = { debug: 0, info: 1, warn: 2, error: 3 }, this.logLevelPrefixs = { debug: "[DEBUG] ", info: "[INFO] ", warn: "[WARN] ", error: "[ERROR] " }, this.logLevel = "info", this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.encoding = "utf-8", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } getEnv() { return "undefined" != typeof $environment && $environment["surge-version"] ? "Surge" : "undefined" != typeof $environment && $environment["stash-version"] ? "Stash" : "undefined" != typeof module && module.exports ? "Node.js" : "undefined" != typeof $task ? "Quantumult X" : "undefined" != typeof $loon ? "Loon" : "undefined" != typeof $rocket ? "Shadowrocket" : void 0 } isNode() { return "Node.js" === this.getEnv() } isQuanX() { return "Quantumult X" === this.getEnv() } isSurge() { return "Surge" === this.getEnv() } isLoon() { return "Loon" === this.getEnv() } isShadowrocket() { return "Shadowrocket" === this.getEnv() } isStash() { return "Stash" === this.getEnv() } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null, ...s) { try { return JSON.stringify(t, ...s) } catch { return e } } getjson(t, e) { let s = e; if (this.getdata(t)) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(r => { this.get({ url: t }, (t, e, s) => r(s)) }) } runScript(a, o) { return new Promise(r => { let t = this.getdata("@chavy_boxjs_userCfgs.httpapi"); t = t && t.replace(/\n/g, "").trim(); var e = (e = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout")) ? +e : 20, [s, i] = (e = o && o.timeout ? o.timeout : e, t.split("@")); this.post({ url: `http://${i}/v1/scripting/evaluate`, body: { script_text: a, mock_type: "cron", timeout: e }, headers: { "X-Key": s, Accept: "*/*" }, timeout: e }, (t, e, s) => r(s)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; this.fs = this.fs || require("fs"), this.path = this.path || require("path"); var t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), r = !s && this.fs.existsSync(e); if (!s && !r) return {}; r = s ? t : e; try { return JSON.parse(this.fs.readFileSync(r)) } catch (t) { return {} } } writedata() { var t, e, s, r, i; this.isNode() && (this.fs = this.fs || require("fs"), this.path = this.path || require("path"), t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), r = !(s = this.fs.existsSync(t)) && this.fs.existsSync(e), i = JSON.stringify(this.data), !s && r ? this.fs.writeFileSync(e, i) : this.fs.writeFileSync(t, i)) } lodash_get(t, e, s) { let r = t; for (const t of e.replace(/\[(\d+)\]/g, ".$1").split(".")) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, r, e) { return Object(t) === t && ((r = Array.isArray(r) ? r : r.toString().match(/[^.[\]]+/g) || []).slice(0, -1).reduce((t, e, s) => Object(t[e]) === t[e] ? t[e] : t[e] = Math.abs(r[s + 1]) >> 0 == +r[s + 1] ? [] : {}, t)[r[r.length - 1]] = e), t } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { var [, s, r] = /^@(.*?)\.(.*?)$/.exec(t); if (s = s ? this.getval(s) : "") try { const t = JSON.parse(s); e = t ? this.lodash_get(t, r, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { var [, r, i] = /^@(.*?)\.(.*?)$/.exec(e), a = this.getval(r), a = r ? "null" === a ? null : a || "{}" : "{}"; try { const e = JSON.parse(a); this.lodash_set(e, i, t), s = this.setval(JSON.stringify(e), r) } catch (e) { this.lodash_set(a = {}, i, t), s = this.setval(JSON.stringify(a), r) } } else s = this.setval(t, e); return s } getval(t) { switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": return $persistentStore.read(t); case "Quantumult X": return $prefs.valueForKey(t); case "Node.js": return this.data = this.loaddata(), this.data[t]; default: return this.data && this.data[t] || null } } setval(t, e) { switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": return $persistentStore.write(t, e); case "Quantumult X": return $prefs.setValueForKey(t, e); case "Node.js": return this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0; default: return this.data && this.data[e] || null } } initGotEnv(t) { this.got = this.got || rLine truncated